Engineering Atlas › System Design Interviews

Common shapes of design questions

14 min read · last reviewed 2026-10-17

Open in the interactive app: practice, quiz, mock interview →

In one minute

How it works

Product systems

"Design Twitter", "design Instagram", "design Slack", "design a news aggregator". These are the classic prompts. Traffic is read-heavy, often 100 reads per write or more, and the hard problem is getting the right data to many readers cheaply: fan-out on write versus on read, the celebrity problem, ranking, and keeping a timeline cache warm. Scoping matters most here because the feature list is endless. Go deeper with Design FB News Feed, Design Slack, Fanout, and High Read Traffic.

Infrastructure building blocks

"Design a rate limiter", "design a distributed cache", "design a key-value store", "design a job scheduler", "design an API gateway". There is no product to scope; the interviewer wants internals. The dominant constraint is correctness under partial failure: what happens when a node dies mid-write, when the network partitions, when two nodes think they are the leader. Expect replication, consistent hashing, quorums, leases and clock skew; the Dynamo paper is the usual reference point for most of these ideas in one system (Dynamo). See Design Rate Limiter, Design Key-Value Store, Design Distributed Cache and Design Job Scheduler.

Data and analytics pipelines

"Design an ad click aggregator", "design top-k trending", "design a metrics system", "design a web crawler". Writes dominate, often by orders of magnitude, and nobody reads individual events. The constraint is sustained throughput while handling late, duplicated and out-of-order events. Deep dives cover partitioned logs, windowed aggregation, exactly-once versus at-least-once with idempotent sinks, and approximate structures such as Count-Min Sketch. See Design Ad Click Aggregator, Design Top K, Design Web Crawler and Distributed Counting.

Location and real-time systems

"Design Uber", "design a food delivery service", "find nearby friends". The constraint is a high rate of small position updates combined with spatial queries: a million drivers sending a location every 4 seconds is 250,000 writes per second, none of which needs to be durable for long. Deep dives cover geohash or S2 cells (S2 numbers 31 levels of cells along a Hilbert curve with 64-bit IDs, so nearby cells get nearby IDs (S2 docs)), in-memory spatial indexes, and pushing updates over WebSockets. See Design Uber, Design Food Delivery Service, Handling Location Data and Realtime Updates.

Media and large files

"Design YouTube", "design TikTok", "design Dropbox". The constraint is bytes: upload bandwidth, transcoding compute, storage cost, and CDN egress. The metadata service is easy; the interesting parts are resumable chunked uploads, a transcoding pipeline, adaptive bitrate streaming (HLS or DASH, where the player picks a rendition per segment from a playlist (RFC 8216)), and cache hit ratio at the edge. See Design YouTube, Design TikTok, Handling Large Files and Media Streaming.

Transactional systems with contention

"Design a payment system", "design Ticketmaster", "design a flash sale", "design an auction", "design Airbnb booking". Volume is often modest, but correctness is non-negotiable: never charge twice, never sell the same seat twice. Deep dives cover idempotency keys (Stripe, for example, stores the first response per key, rejects a reuse with different parameters, and may prune keys after 24 hours (Stripe docs)), row locks versus optimistic concurrency, reservations with expiry, ledgers, and what happens when the payment provider times out. See Design Payment System, Design Flash Sale, Design Movie Booking System, Design Online Auction System and Preventing Double Booking.

Hybrids and twists

Real prompts mix families. Food delivery is location plus a transaction plus notifications; Google Docs is a product whose hard part is real-time collaborative editing (Design Google Docs). Interviewers also twist a familiar prompt into another family: "design a URL shortener" is a product question until they add "and show click counts per hour per country", which turns it into a data pipeline. When you hear a twist, say which constraint just changed.

Formats that are not this round

Some prompts look like system design but belong to a different interview. Low-level or object-oriented design asks for classes and interfaces, not services; ML system design asks about modelling and features; and frontend design is its own track (Hello Interview). Companies also split the system design round by role. Meta's Product Architecture round, for product engineers, uses user-facing prompts such as a news feed or Ticketmaster rather than a load balancer, and expects the whole system to be built from cloud-style managed components (Hello Interview). Ask the recruiter which variant you will get, because it decides which of the families below to practise most.

Down the stack

Layer 1The contract

What the interviewer scores is the same rubric for every type, but the weight shifts. For product questions most evidence comes from scoping and data modelling, because that is where candidates differ. For infrastructure questions it comes from depth and failure reasoning; a vague answer on replication is fatal. For data pipelines it is delivery semantics and throughput arithmetic. For transactional systems it is correctness: an interviewer who hears "we'll retry the charge" with no idempotency key will usually stop there. Misreading the type means spending your 45 minutes collecting evidence on the dimension that carries the least weight.

Layer 2The mechanism

Each family has a characteristic mechanism that the deep dive usually reaches. Product: a precomputed per-user timeline in a cache, with a hybrid of push for normal users and pull for accounts with millions of followers. Infrastructure: a consistent-hash ring with virtual nodes, replication factor 3, and quorum reads and writes (R + W > N), which Cassandra exposes as per-request consistency levels such as QUORUM and LOCAL_QUORUM (Cassandra docs). Data: a partitioned log such as Kafka feeding a stream processor that keeps windowed state, checkpoints it, and writes to a sink with idempotent upserts keyed by (window, key). Location: a grid index (geohash prefix or S2 cell ID) held in memory and sharded by region, queried by scanning the cell and its neighbours. Media: chunked uploads to object storage, a DAG of transcoding jobs, and HLS or DASH manifests that let the player switch bitrate per segment. Transactional: a state machine per order or seat, guarded by a conditional write (UPDATE seats SET held_by = ? WHERE id = ? AND held_by IS NULL) and an idempotency table.

Layer 3The machine

The dominant constraint of each family maps to a physical limit. Products hit memory: 500 million users times 800 timeline entries of 8 bytes is about 3.2 TB of cache, so you need dozens of large cache nodes. Infrastructure hits the latency of durability: an fsync on a good NVMe drive costs tens of microseconds to a millisecond (a 2026 cloud measurement put an 8 KiB write plus fsync at about 300 us (Napkin Math)), and a quorum write adds a network round trip of about 0.5 ms within a data centre. Data pipelines hit sequential throughput: a single Kafka partition typically takes tens of MB per second of produce traffic, depending on batching, compression, acks and replication (Confluent), so 1 GB per second of clicks needs dozens of partitions. Location hits write rate into memory: 250,000 updates per second is easy for a sharded in-memory index but brutal for a B-tree on disk. Media hits the network: a 4 Mbit/s stream to one million concurrent viewers is 4 Tbit/s, which only a CDN can serve. Transactions hit lock contention: a single hot row can commit only a few hundred to a few thousand updates per second, however large the machine.

Why it's built this way

Interviewers have one hour, so they choose prompts that concentrate one hard problem, and each hard problem comes from one scarce resource. So the family tells you which resource is scarce, the scarce resource tells you which numbers to estimate, and the numbers tell you which mechanism to deep dive.

Diagram

flowchart TD
    P["Prompt"] --> K["Spot keywords and verbs"]
    K --> F1["Product: fan-out"]
    K --> F2["Infrastructure: failure"]
    K --> F3["Data: throughput, duplicates"]
    K --> F4["Location: update rate"]
    K --> F5["Media: bandwidth"]
    K --> F6["Transactional: contention"]
    F1 --> E["Estimate the scarce resource"]
    F2 --> E
    F3 --> E
    F4 --> E
    F5 --> E
    F6 --> E
    E --> D["Pick deep dives"]

Worked example

Prompt: "Design a system that sells 10,000 concert tickets that go on sale at 10:00, with 2 million fans waiting."

Classify. The keywords are "sells", "tickets" and "go on sale": transactional with contention, plus a traffic spike. The dominant constraint is never selling a seat twice while the front door survives a surge.

Estimate the scarce resource. Two million fans refreshing every 2 seconds is 1 million requests per second at the edge, but only 10,000 successful purchases. If all of them tried to lock seat rows at once, a hot section of 500 seats would see thousands of conflicting writes per second on a handful of rows.

Choose deep dives that match. First, a virtual waiting room that admits, say, 2,000 users per minute, which converts the spike into a steady flow. Second, seat holds: a conditional update sets held_by and hold_expires_at for 10 minutes, and expired holds are released by a sweeper. Third, payment: an idempotency key per hold so a retried checkout cannot charge twice.

What to skip: profiles, recommendations and the artist page get one sentence each. For "design Instagram" those same minutes would go to fan-out, and "idempotency" might never come up.

In the wild

Trade-offs

FamilyDominant constraintTypical deep divesCommon trap
ProductRead fan-out and data modelTimeline cache, celebrity problem, rankingScoping too many features
InfrastructureCorrectness under partial failureReplication, consistent hashing, leasesHand-waving failure cases
Data pipelineThroughput with late and duplicate eventsPartitioned log, windows, idempotent sinksDesigning a read API nobody needs
LocationUpdate rate plus spatial queryGeohash or S2 index, sharding by regionPersisting every ping durably
MediaBandwidth and storage costChunked upload, transcoding, CDNOver-designing metadata
TransactionalNo double spend under contentionConditional writes, holds, idempotencyRetries without idempotency keys

Pitfalls in production

These misclassifications happen in real projects too, not only in interviews:

Leadership lens

Check yourself

  1. Why is a URL shortener with per-hour click analytics harder than one without?

    Show answer

    The analytics turn it into a write-heavy data pipeline: every redirect becomes an event that must be aggregated with late and duplicate handling, which needs a log and a stream aggregator rather than a simple counter.

  2. What single question tells you whether a prompt is transactional?

    Show answer

    Is there an invariant that must never be violated even briefly, such as "never sell more than capacity" or "never charge twice"? If so, correctness under contention dominates.

  3. Why do location systems usually keep live positions in memory?

    Show answer

    Updates arrive at hundreds of thousands per second and are only valid for seconds, so durable replicated writes cost far more than the data is worth; history can be sampled separately.

  4. An interviewer gives you "design Dropbox". Where should most of your estimates go?

    Show answer

    Into bytes: upload and download bandwidth, storage growth, and deduplication savings, since metadata volume is small compared with file content.

Sources and further study

Primary

Systems docs

Books

Other curricula

Watch

Free resources

Open in the interactive app: practice, quiz, mock interview →