AI System Design
← All chapters
Chapter 3 5 min read

A Framework for System Design Interviews

A system design interview is a simulated collaboration on an ambiguous problem, and the interviewer is judging how you think as much as what you draw. A four-step structure (clarify scope, propose a high-level design and get buy-in, dive deep, wrap up) keeps the conversation focused and makes sure you spend time where it earns signal. This chapter turns that structure into a time budget and a set of habits.

Architecture at a glance
  1. Step 1: Understand the problem and scope (3–10 min)
  2. Step 2: High-level design and buy-in (10–15 min)
  3. Step 3: Design deep dive (10–25 min)
  4. Step 4: Wrap up (3–5 min)

What the interview is really measuring

There is no single correct answer to design a chat app; the problem is deliberately open-ended. What the interviewer is gathering is evidence about how you would behave as a colleague on a real design: whether you ask good questions before committing, whether you can reason about trade-offs, whether you communicate clearly, and whether you take feedback well. Technical depth matters, but it is weighed alongside these collaborative signals.

Interviewers also watch for red flags. Over-engineering (adding Kafka, Kubernetes and five databases to a problem that needs one) suggests poor judgment about cost. Narrow-mindedness and stubbornness suggest you would be hard to work with. Silence suggests the interviewer cannot evaluate you at all.

  • Ability to turn ambiguity into concrete requirements.
  • Sound trade-off reasoning, not buzzword collection.
  • Clear communication and responsiveness to hints.
  • Depth in at least one or two components.

Step 1: Understand the problem and establish scope

Resist the urge to start drawing. Spend the first few minutes asking questions that narrow the problem: which features matter most, how many users, how fast traffic is expected to grow, what the read/write mix looks like, which platforms are supported, and what existing infrastructure you can lean on. Write down the answers as functional and non-functional requirements, and if the interviewer says to assume something, record the assumption.

This step is where junior candidates lose the most points. Jumping into a solution without clarifying is like coding before reading the spec; you may solve the wrong problem beautifully. A quick back-of-the-envelope estimate belongs here too, because scale determines whether simple or distributed solutions are appropriate.

  • What specific features are we building?
  • How many users, and what is the expected growth?
  • What are latency, availability and consistency expectations?
  • What is out of scope?
Figure 1Turning a vague prompt into scope
Turning a vague prompt into scopeVague prompt"Design a chat app"Clarifying questionsfeatures, users, platformsFunctional reqs1:1 + group chat, historyNon-functional reqslatency, scale, uptimeRough estimatesDAU → QPS → storageAgreed scope+ explicit out-of-scope
Clarifying questions fan out into three concrete outputs, and only when all three are written down does the scope count as agreed. Writing the out-of-scope list is as important as the in-scope one.

Step 2: Propose a high-level design and get buy-in

Sketch a blueprint with the main boxes: clients, APIs, web servers, data stores, cache, CDN, queues. Define the core API endpoints and, if relevant, the data model. Walk through one or two concrete use cases end to end over the diagram, because tracing a request reveals missing components and edge cases early.

Treat the interviewer as a teammate and explicitly ask for feedback: does this match what you had in mind, is there an area you would like to go deeper on? Getting buy-in here prevents spending twenty minutes deep-diving into a component the interviewer does not care about. Do capacity estimates if they shape the diagram, but confirm first that the interviewer wants them.

Step 3: Design deep dive

By now you and the interviewer agree on the overall shape and goals. The deep dive is where you demonstrate depth, and the right topic depends on the problem and the interviewer's signals. For a URL shortener it might be the hash function and collision handling; for a chat system, how to keep connections and deliver messages with low latency and track presence; for a news feed, fan-out strategy and the celebrity problem.

Prioritize. Pick the components that are hardest, most interesting or most likely to break at scale, and explain the trade-offs among a few options before choosing. Avoid sinking time into details that add little signal, like the exact algorithm a library uses internally, unless asked. Time management is part of the assessment.

Figure 2A collaborative design conversation
A collaborative design conversationInterviewerCandidateWhiteboard1. Design a photo-sharing service2. Which features? How many users? Mobile?3. Upload + feed, 10M DAU, iOS and Android4. requirements + rough QPS and storage5. boxes: API, DB, object store, cache, CDN6. Trace one upload end to end — look right?7. Yes. Go deeper on feed generation.8. Fan-out on write vs on read — trade-offs9. What happens when a celebrity posts?10. Hybrid: pull celebrity posts at read time
The candidate asks before drawing, checks the blueprint with the interviewer, and lets the interviewer's interest pick the deep-dive topic. Follow-up questions are invitations to compare options, not traps.

Step 4: Wrap up

Use the final minutes to step back. Identify bottlenecks and how you would address them; no design is perfect, and claiming yours is invites skepticism. Give a short recap of the design, especially if several options were discussed, so the interviewer leaves with a clear picture.

Good wrap-up topics include error cases (server failure, network partition, data loss), operational concerns (monitoring, metrics, alerts, rollouts), and the next scaling step: what changes at 10x the current load. Each shows that you think about systems over their lifetime, not just their first deployment.

Time budget for a 45-minute session

A typical interview gives about 45 minutes of design time after introductions. A rough budget keeps you from running out of time halfway through the deep dive. Spend 3 to 10 minutes on scope, 10 to 15 on the high-level design, 10 to 25 on the deep dive, and 3 to 5 on wrap-up. The ranges flex based on the problem; a familiar problem may need less scoping and more depth.

Glance at the clock at transitions. If 25 minutes have passed and you have no complete high-level design, simplify and finish it, because an end-to-end sketch with shallow depth scores better than a beautiful single component with no surrounding system.

Figure 3The four steps on a 45-minute clock
The four steps on a 45-minute clockconfirmedbuy-intime box1 · Scope3–10 min2 · High-level design10–15 min3 · Deep dive10–25 min4 · Wrap up3–5 minRequirements listfeatures, scale, limitsAgreed blueprintboxes, APIs, data modelReasoned choices1–2 components, optionsRecap + next stepsbottlenecks, failures, 10×Clock check ~25 minno full design? simplify
Each step has a time box and a concrete output you can point to. If the high-level design is not on the board by about minute 25, simplify and finish it before going deep.

Dos and don'ts

The habits below sound obvious, but under pressure most candidates violate at least one. The common thread is to think out loud and keep the interviewer involved; the conversation itself is the work product.

  • Do ask for clarification rather than assuming your interpretation is correct.
  • Do state requirements and assumptions explicitly and revisit them when they change.
  • Do suggest multiple approaches and compare them before committing.
  • Do design the most critical components first, after agreeing on the blueprint.
  • Do bounce ideas off the interviewer and welcome hints.
  • Don't arrive unprepared for common problems like feeds, chat and rate limiters.
  • Don't go deep into one component before the high-level design exists.
  • Don't stay silent when stuck; say what you are weighing and ask for a nudge.
  • Don't consider yourself done until the interviewer says so; volunteer improvements.

Key numbers

Typical session length
45–60 minutes
Step 1: scope
3–10 minutes
Step 2: high-level design
10–15 minutes
Step 3: deep dive
10–25 minutes
Step 4: wrap up
3–5 minutes

Key terms

Functional requirements
The features the system must provide, such as posting or searching.
Non-functional requirements
Quality targets like latency, availability, consistency and scale.
Buy-in
Explicit agreement from the interviewer on the high-level design before diving deeper.
Deep dive
Focused, detailed design of the most critical or interesting components.
Bottleneck
The component that limits throughput or latency first as load grows.
Over-engineering
Adding complexity or components that the stated requirements do not justify.

Common mistakes

  • Drawing boxes in the first minute without asking a single clarifying question.
  • Spending half the interview on one component and never finishing the end-to-end design.
  • Listing technologies by name without explaining why each one is needed.
  • Defending a choice stubbornly after the interviewer points out a flaw.
  • Going silent while thinking, leaving the interviewer nothing to evaluate.
  • Claiming the design has no bottlenecks or failure modes.

Further study

  • Designing Data-Intensive Applications (Martin Kleppmann)
  • The System Design Primer (GitHub repository)
  • Google SRE book

Now practise it