The Interview Framework
5 stages ยท 45 minutesA system design interview is not a test of whether you can draw the "correct" architecture. There isn't one. It's a test of how you think under ambiguity: whether you ask the right questions, whether you can back a decision with a number, and whether you notice the thing that breaks before your interviewer does.
1. Requirements 2. Estimation 3. High-Level 4. Deep Dive 5. Wrap-Up
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Functional โโโโโโถโ QPS โโโโโถโ Boxes and โโโโโถโ Pick 1-2 โโโโโถโ Bottlenecks โ
โ Non-func. โ โ Storage โ โ arrows โ โ components โ โ Failure โ
โ Scope โ โ Bandwidth โ โ Data flow โ โ Go deep โ โ modes โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
~5 min ~5 min ~10 min ~15 min ~10 min
Clarifying Requirements
functional ยท non-functional ยท scopeThe actions a user or another service can take. Get these from the interviewer directly, don't guess.
- Who are the users, and what are the two or three core actions they take?
- What's explicitly out of scope for this session?
- Is there an existing system this replaces, or is it greenfield?
These decide the entire shape of the design, so pin them down before you draw anything.
- Read-heavy or write-heavy? What's the rough ratio?
- Latency budget: is this on the user-facing request path, or can it be async?
- Consistency: is stale data tolerable, or does every read need the latest write?
- Scale: how many users, how much data, growth rate over the next year?
Identifying the Bottleneck
before you design around itEvery system has one resource that runs out first: disk I/O, network bandwidth, a single database's write throughput, or a hot key that funnels traffic through one node. Find it before you propose a solution. A design that scales the wrong resource is wasted effort, no matter how clean the diagram looks.
| Signal | Likely bottleneck | Direction to lean |
|---|---|---|
| Reads outnumber writes 100:1 or more | Database read capacity | Caching, read replicas |
| Writes dominate, single entity updated often | Write contention, hot row | Sharding, queueing, batching |
| Payloads are large (video, images, files) | Bandwidth, storage cost | Object storage, CDN |
| Requests fan out to many services | Tail latency, cascading failure | Timeouts, circuit breakers, parallelism |
| One key or user drives disproportionate traffic | Hot partition | Key salting, dedicated capacity |
| Strict ordering or uniqueness required | Coordination overhead | Single writer, partitioned ordering |
Sketching the High-Level Design
boxes, arrows, iterate Client โโโถ Load Balancer โโโถ API Service โโโถ Cache โโโถ Database
โ โฒ
โผ โ
Message Queue โโโถ Worker โโโโโโโโ
Start here. Every box on this line should map to a requirement
you already named. Add nothing the interviewer hasn't asked for.
Start wide and shallow: one box per major responsibility, one arrow per data flow. Narrate as you draw, so the interviewer can redirect you before you've sunk five minutes into a corner they don't care about.
- Client and entry point (load balancer, API gateway, CDN if relevant).
- The service or services that own the core logic.
- The datastore, and why you picked it over the alternatives.
- Anything asynchronous: queues, background workers, event streams.
- Only then: caching, replication, and the layers that exist purely for scale.
Naming the Tradeoffs
every decision costs somethingThere is no free decision in distributed systems. Caching buys latency at the cost of staleness. Sharding buys write throughput at the cost of cross-shard queries. The interview isn't graded on which side you pick, it's graded on whether you can say what you gave up.
| You choose | You pay with |
|---|---|
| Caching for read speed | Stale data, invalidation complexity |
| Strong consistency | Higher latency, lower availability during partitions |
| Sharding for write throughput | Cross-shard joins and transactions get hard |
| Async processing via queues | Eventual consistency, harder debugging |
| Microservices for team autonomy | Network calls replace function calls, more failure surface |
| Denormalization for read speed | Write amplification, data can drift out of sync |
Enumerating Failure Modes
before you call it doneA design isn't finished when the happy path works. It's finished when you've walked through what happens when a piece of it dies. Spend the last few minutes here even if nobody asks: it's the part that shows you've operated something in production, not just read about it.
- What happens if any single node in this diagram goes down right now?
- What happens if the network between two of your services partitions?
- What happens if one client retries aggressively? Does it make things worse?
- What happens if a downstream dependency slows down instead of failing outright?
- Is there a single point of failure you introduced for simplicity? Say so out loud.
- If this component fails, does the rest of the system degrade gracefully, or does it fail hard?
Common Mistakes
what pulls the score down- Designing before clarifying. Jumping to a diagram before you know the scale or the read/write ratio means redesigning later, in front of the interviewer.
- Reciting a template. Load balancer, cache, message queue, sharded database, in that order, on every question, regardless of whether the requirements call for them.
- Never doing the math. "It should scale" is not a number. Back your capacity claims with a QPS or storage estimate, even a rough one.
- Going deep on one component too early. Spending fifteen minutes on database schema before the interviewer has seen the whole system leaves no time for the parts they actually wanted to probe.
- Silence on tradeoffs. Presenting a design as though it has no downsides signals you haven't operated one, or haven't thought past the diagram.
- Ignoring the interviewer's redirects. If they keep asking about one part, that's the part to go deep on, not a detour from your plan.
Quick Reference
stage-by-stage cheat sheet| Stage | Time | Goal | Avoid |
|---|---|---|---|
| Requirements | ~5 min | Pin down scope, functional and non-functional needs | Open-ended questioning with no end point |
| Estimation | ~5 min | Rough QPS, storage, bandwidth numbers | Skipping the math entirely |
| High-level design | ~10 min | One box per responsibility, narrated as you draw | Adding components nobody asked for |
| Deep dive | ~15 min | One or two components, in the direction the interviewer steers | Going deep on the wrong thing for too long |
| Wrap-up | ~10 min | Bottlenecks, failure modes, tradeoffs made explicit | Ending on the happy path with no caveats |