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

  1. Say the one-minute answer out loud without notes.
  2. Open the walkthrough and check what you skipped: scale math, the first simple design, the failure table.
  3. 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.

QuestionInvariantWalkthrough
Employee directoryNo manager cycles; optimistic versionEmployee Management
Jira-like ticketsStatus only via transitions; unique issue numbersTicket Management
InvoicesMoney snapshot; PDF async; one invoice per orderInvoice Generation

Low-level design (LLD)

Same site, different muscle: objects, state machines, concurrency in one process.

QuestionInvariantWalkthrough
Parking lotOne spot, one vehicle; ticket is the lockDesign a Parking Lot
SplitwiseSum of nets is 0; settled debts disappearDesign Splitwise
ElevatorOne hall call, one car; do not reverse a busy tripDesign an Elevator System
Snake and LadderExact 100; at most one jump; board is a mapDesign Snake and Ladder
ChessA move is legal only if own king is safe after itDesign Chess
ATMCash leaves iff the bank accepted that journal idDesign an ATM
Vending machineLast bag sold once; jam refunds escrowDesign 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.