System Design Interview Questions
The system design questions interviewers actually ask, each with a 60-second answer and a link to the full walkthrough.
Page content
Interviewers rarely ask you to invent a new product. They ask you to design a product they already know, then push on the part that does not fit in a single database.
Use this page as a drill list. Each item is a question, a one-minute answer, and a full walkthrough when we have one. For how to structure the hour, start with the System Design Interview Complete Guide.
How to use this list
- Say the one-minute answer out loud without notes.
- Open the walkthrough and check what you skipped: scale math, the first simple design, the failure table.
- Re-answer with the invariant (what must never happen) in the first sentence.
HLD and LLD are different interviews. Parking lot, Splitwise, elevator, games, ATM, and vending live in the LLD section at the end.
Product designs
Design Twitter / a news feed
Ask: How do you build Home when some authors have 200 followers and others have 30 million?
60 seconds: Persist the tweet first. Precompute inboxes for ordinary authors (fan-out on write). Pull celebrity tweets at read time (hybrid). Store tweet ids in the feed, hydrate objects, re-check blocks/protected accounts. Kafka + outbox so a committed tweet is not lost.
Full walkthrough: Design Twitter
Design Instagram
Ask: How is this different from Twitter if both have a follow feed?
60 seconds: Same hybrid fan-out for ids. Photos never enter the API — presigned upload, transcode, CDN URLs. Stories are a 24-hour TTL tray, not inbox rows.
Full walkthrough: Design Instagram
Design a URL shortener
Ask: How do you redirect millions of clicks with unique short codes?
60 seconds: Unique short_code → url in the database. Random base62 (or range counters), not naive hashes. Cache redirects. 302 if you need to disable links and count clicks. Clicks are async events, not UPDATE on the hot path.
Full walkthrough: Design a URL Shortener
Design WhatsApp / a chat app
Ask: How do messages stay ordered when Bob is offline and has three devices?
60 seconds: Persist first, ACK durability not delivery. Per-conversation sequence, never MAX+1. Idempotency (sender, client_message_id). Catch up with after_sequence. Multi-device is a set of sockets. Huge groups persist once (fan-out on read).
Full walkthrough: Design WhatsApp
Design Uber / ride hailing
Ask: Two riders request the same nearby driver. What happens?
60 seconds: Redis GEO finds candidates. Assignment is UPDATE drivers SET status=OFFERED WHERE status=AVAILABLE. One CAS wins. Offers expire via offer_expires_at, not a goroutine. Location is eventual; the trip row is strong. Pay after complete with an idempotent consumer.
Full walkthrough: Design Uber
Design YouTube
Ask: How do you upload a 2 GB file and count a viral view spike?
60 seconds: Presigned multipart to object storage. Async transcode to ABR (master.m3u8). API returns a CDN manifest, not bytes. Views are Kafka + sharded Redis INCR, not views = views + 1 on the video row.
Full walkthrough: Design YouTube
Design Netflix
Ask: How is Netflix different from YouTube if both stream video?
60 seconds: YouTube is upload + UGC + view counters. Netflix is a licensed catalog, prefetch, and ISP-adjacent CDN (Open Connect). Playback is DRM-ish URLs and a watch session. Home is recommendations on a fixed catalog, not a creator firehose.
Full walkthrough: Design Netflix
Design a booking / reservation system
Ask: Alice and Bob both see one room left. Who gets it?
60 seconds: Search is a stale hint. Hold every stay-date in one SQL transaction (held + booked <= total). Pay after the hold. Timeout is unknown, not failure. Redis is not the inventory lock.
Full walkthrough: Design a Booking System
Design a food-delivery tracker
Ask: Why can we drop GPS points but not DELIVERED?
60 seconds: Order state is a versioned machine + outbox. Location is a replaceable latest point. Geo index proposes riders; a transaction assigns exactly one. WebSocket reconnect: subscribe, then snapshot.
Full walkthrough: Design a Food Delivery Tracking System
Design a notification / messaging platform
Ask: How do you send a billion messages without letting a promo starve OTPs?
60 seconds: Isolated priority lanes (P0–P3). Provider adapters behind interfaces. Rate limits and backpressure per lane. Idempotent provider keys. DLQ for poison, not a shared FIFO that mixes OTP and blast.
Full walkthrough: Design a Tiered Messaging Platform
Design customer-facing search (hotels)
Ask: Can search show a room that is already gone?
60 seconds: Yes, briefly. Retrieval and ranking are eventual. Price/availability are enriched and revalidated at book time. Index is a projection; inventory SQL is truth.
Full walkthrough: Design a Customer-Facing Search System
Building-block designs
These show up as the hard part of a larger question, or as a 45-minute question on their own.
Design a rate limiter
60 seconds: Token bucket in Redis (atomic Lua / INCR). Per-pod memory is not a global limit. 429 + Retry-After. Fail closed on login; fail open on public GET. Watch the fixed-window double-burst.
Full walkthrough: Design a Rate Limiter · Visualizer
Design a distributed cache
60 seconds: Cache-aside, TTL, LRU. Partition with consistent hashing + virtual nodes. Replicas for reads; the DB remains truth. Protect hot keys and stampedes.
Full walkthrough: Design a Distributed Cache · Consistent hashing visualizer
Design a unique ID generator
60 seconds: Do not use MAX(id)+1 across nodes. Snowflake-style: timestamp + worker + sequence. Or UUID if you do not need sortability. Clock and worker-id allocation are the real bugs.
Full walkthrough: Design a Unique ID Generator · Snowflake / ULID tool
Explain consistent hashing
60 seconds: hash % N reshuffles almost every key when N changes. A ring + virtual nodes moves only ~1/N keys. That is how caches and some databases add a node.
Full walkthrough: Consistent Hashing · Visualizer
Explain the transactional outbox
60 seconds: You cannot atomically commit Postgres and Kafka. Write the row and an outbox_events row in one transaction, then publish. Consumers are idempotent because delivery is at-least-once.
Full walkthrough: Transactional Outbox · Visualizer
Internal / CRUD-shaped designs
Interviewers use these to test transactions, RBAC, and projections — not 100k QPS.
| Question | Invariant | Walkthrough |
|---|---|---|
| Employee directory | No manager cycles; optimistic version | Employee Management |
| Jira-like tickets | Status only via transitions; unique issue numbers | Ticket Management |
| Invoices | Money snapshot; PDF async; one invoice per order | Invoice Generation |
Low-level design (LLD)
Same site, different muscle: objects, state machines, concurrency in one process.
| Question | Invariant | Walkthrough |
|---|---|---|
| Parking lot | One spot, one vehicle; ticket is the lock | Design a Parking Lot |
| Splitwise | Sum of nets is 0; settled debts disappear | Design Splitwise |
| Elevator | One hall call, one car; do not reverse a busy trip | Design an Elevator System |
| Snake and Ladder | Exact 100; at most one jump; board is a map | Design Snake and Ladder |
| Chess | A move is legal only if own king is safe after it | Design Chess |
| ATM | Cash leaves iff the bank accepted that journal id | Design an ATM |
| Vending machine | Last bag sold once; jam refunds escrow | Design a Vending Machine |
Questions you should still be able to talk through
We do not have a full walkthrough for every classic. Have a 60-second skeleton anyway:
- Dropbox / Drive — chunk files, metadata SQL, bytes in object storage, conflict = last-writer or user merge, not a 5 GB
UPDATE. - Google Docs — OT or CRDT; presence is ephemeral; the doc is a versioned log.
- Web crawler — URL frontier, politeness, canonicalization, idempotent fetch, separate parser from storage.
- Typeahead — trie / prefix index, ranked suggestions, cache hot prefixes, freshness vs typo tolerance.
- Tinder — geo cells, recommendation stack, swipe is a write; match is a two-way edge.
- Zoom — SFU vs MCU, media not through the signaling API, regional media servers.
When you write those up, they will land here.
A 45-minute template (any question)
2 min Clarify and state assumptions
5 min Functional + non-functional + the invariant
5 min Scale math that changes the design
5 min APIs and entities
10 min Simplest design, then the first thing that breaks
10 min The hard mechanism (fan-out, CAS, outbox, CDN, …)
5 min Failures and what you would measure
3 min Verbal recap
If you only remember one habit: name the source of truth, then name everything that is allowed to be wrong.
