System Design · Note 15 of 22
How to Answer a System Design Interview
Quick answer
How do you answer a system design interview question?
Work in time-boxed stages. Clarify functional and non-functional requirements and scope, estimate the load, define the API and data model, draw a simple high-level design, then deep-dive into the parts the interviewer cares about, and finish with bottlenecks and trade-offs. Explain every choice by a requirement or a number.
On this page
A system design round is open-ended on purpose. A fixed order of stages keeps the answer complete and leaves time for depth.
The stages
- Requirements and scope: functional, non-functional, and what is out.
- Estimates: QPS, peak, storage, bandwidth — see Back-of-the-Envelope Estimation.
- API: the few endpoints the features need.
- Data model: entities, keys, and the store each lives in.
- High-level design: boxes and arrows, end to end.
- Deep dives: one or two components in detail.
- Wrap-up: bottlenecks, failures, trade-offs.
Requirements, minutes 0–5: Ask what the system must do, for whom and at what scale, and agree what is out of scope. Nothing is drawn yet.
Transcript · 7 steps
Requirements first
- Functional: what users can do.
- Non-functional: latency, availability, durability, consistency, scale.
- Out of scope: say it and write it down.
- Ask about users, scale, read/write mix and the one feature that matters most.
Interview: "Design a photo-sharing app." Requirements come first; here is the first one heard: "Upload a photo".
Transcript · 8 steps
API and data model
- One endpoint per functional requirement; method, path, inputs, outputs.
- Page large lists with a cursor.
- Pick each store by how its data is read, not by habit.
Each functional requirement becomes one endpoint, and each endpoint names the data it reads or writes. Nothing else is invented.
Transcript · 4 steps
Build the design up
- Start with client → server → database; check every requirement has a path.
- Add each component only for a reason: a number, a requirement, a failure.
- Name the trade-off as you add it ("a cache makes the feed slightly stale").
Start with the simplest design that meets the functional requirements: a client, one app server, one database.
Transcript · 5 steps
What interviewers listen for
- Structure: you lead the conversation through the stages.
- Reasons: each box ties to a requirement or a number.
- Trade-offs: consistency vs availability, cost vs latency, simplicity vs scale.
- Depth: at least one component explained down to data and failure handling.
- Collaboration: you check in and take hints.
Common mistakes
- Drawing before asking: the design answers a question nobody asked.
- Components with no reason: a queue, Kafka or sharding "because scale".
- Product names instead of mechanisms: say what Redis does here, not just "Redis".
- No failures: every box can die; say what happens when it does.
- One corner in depth, the rest unfinished.
Interview questions
- What do you do in the first five minutes? Clarify features, scale, latency and availability targets, and agree what is out of scope.
- When do you estimate? Right after requirements, and only the numbers that change a decision.
- How do you choose what to deep-dive into? The hardest or hottest part — the read path, the data model at scale — or what the interviewer asks.
- How do you end? List bottlenecks and failure modes and what you would improve next.
Next: Design a Chat App · Before this: Back-of-the-Envelope Estimation
Common questions
How long should each part of a system design interview take?
In a 45-minute round a common split is about five minutes on requirements, a few each on estimates, API and data model, ten on the high-level design, ten to fifteen on deep dives and five to wrap up. Adjust it to what the interviewer steers towards.
What do system design interviewers look for?
Clear requirements before drawing, numbers that drive decisions, a simple working design first, trade-offs said out loud, and depth in at least one component. They also watch how you take hints and change course.
Should I start drawing the architecture immediately?
No. Spend the first minutes on requirements and scale. A design drawn before knowing the read-to-write ratio, the latency target or what is out of scope often has to be thrown away.
What are common mistakes in system design interviews?
Jumping to a design, adding components without a reason, naming technologies instead of explaining them, ignoring failures and trade-offs, and spending all the time on one corner while the end-to-end design stays unfinished.
How do I handle a part of the design I do not know?
Say what you know, reason from first principles and state the trade-off you would test. Interviewers value a clear line of reasoning more than a memorised product name.