To print this page, use your browser's Print command.
How to read this. 29 short prompts for a 10 minute drill. For each one, say what you would ask first, answer in 3 minutes, then read the case next to it. These are practice prompts, not a claim about what any interviewer asks.
How to drill
- Pick one prompt. Set a timer for 10 minutes.
- Ask your first questions out loud, with a default answer for each. Write the scope in 4 lines.
- Say the hardest part and your first idea. Say why it fails.
- Open the case next to the prompt. Compare your answer with its "First idea, and why it fails" and "Say this" boxes.
- Write one thing you missed.
Offline and sync
Apps that keep working with no network.
- Design a messaging app
Ask first: Groups or one to one? Must it work offline? Which receipts?
Read next: Design a chat app - Design a photo backup app
Ask first: Resume after a broken upload? Wi-Fi only? What if a photo changes on two phones?
Read next: Design photo backup and file sync - Design a file sync app like Dropbox
Ask first: How big are the files? Do edits conflict? How do you show sync state?
Read next: Design photo backup and file sync - Design a podcast app with downloads
Ask first: Can a download resume? How much storage may it use? What plays with no signal?
Read next: Design photo backup and file sync - Design a notes or to-do app that syncs across devices
Ask first: Can two devices edit the same note offline? Who wins a conflict?
Read next: Offline-first hub - Design a shared trip planner
Ask first: Do friends edit at the same time? Can they edit offline? Is a lost change ever acceptable?
Read next: Design a travel plans app - Design a collaborative document editor
Ask first: How many people edit at once? Must it work offline? How do you merge edits?
Read next: Design a travel plans app - Design a bus or train timetable app
Ask first: Which data works with no signal? Is live data a must? Is location needed?
Read next: Design a public transport app
Long lists, images and video.
- Design a news feed
Ask first: Who ranks the feed, the server or the app? Is video in scope? Can the user like offline?
Read next: Design a news feed - Design a photo feed like Instagram
Ask first: Is the feed ranked? How big are the images? How fast must the first screen show?
Read next: Design a news feed - Design an image loading library
Ask first: Which caches do you need, memory, disk or both? How do you cancel a request on a fast scroll?
Read next: Design an image loading library - Design a video player app
Ask first: Live or on demand? Are downloads for offline in scope? What bitrate rules apply?
Read next: Design a video app - Design an infinite scroll list library
Ask first: Page number or cursor? How do you show loading and error states? What if the list changes while you scroll?
Read next: Design a pagination library - Design an e-commerce product list with filters
Ask first: How many products? Do filters change the order? What stays when you come back?
Read next: Design a pagination library
SDKs and libraries
Code that other teams or apps use.
- Design an analytics SDK
Ask first: How many events a day? How much loss is acceptable? What may the SDK never collect?
Read next: Design an analytics SDK - Design a crash reporting SDK
Ask first: When does it send? What if the app dies while it writes? How do you protect privacy?
Read next: Design an analytics SDK - Design a push notification SDK
Ask first: How does a device get registered? What if the token changes? Which pushes may be dropped?
Read next: Design a push notification SDK - Design a feature flag SDK
Ask first: How fast must a change reach the app? What does the app use when it is offline? Can a flag change mid-session?
Read next: Design a feature flag SDK - Design a networking library
Ask first: Which retries are safe? How are errors grouped? What does the caller control?
Read next: Idempotency keys
Live data and payments
Prices, bookings and money.
- Design a stock ticker app
Ask first: How often do prices change? What does the screen show when the feed is late? What about battery?
Read next: Design a stock ticker app - Design a live sports score app
Ask first: Push or polling? How old may a score be? What if the user is in a tunnel?
Read next: Design a stock ticker app - Design a hotel booking app
Ask first: What happens when two people book the last room? Is the price held? What if the payment is slow?
Read next: Design a hotel or ride booking app - Design a ride booking app
Ask first: How does the app show the driver? What if the request gets no answer? Who sets the price?
Read next: Design a hotel or ride booking app - Design a food order and tracking app
Ask first: How often does the status change? What if the payment succeeds but the order fails?
Read next: Design a hotel or ride booking app - Design a mobile wallet or payment screen
Ask first: What if the answer is lost after you pay? Can the user tap twice? What do you save before the request?
Read next: Design a state machine for a mobile flow
App flows
One screen flow with many states.
- Design a checkout flow
Ask first: Which payment methods? What if the app dies after Pay? How do you stop a double charge?
Read next: Design a state machine for a mobile flow - Design an onboarding flow with many steps
Ask first: Can the user go back? What if they quit halfway? Are steps skipped by rules?
Read next: Design a state machine for a mobile flow - Design a login and token refresh flow
Ask first: What if the refresh fails? What if two requests refresh at once? What if the user is offline?
Read next: Design a state machine for a mobile flow - Design a form with many fields that saves a draft
Ask first: When do you save? What if the app dies? What if the server rejects one field?
Read next: Design a state machine for a mobile flow