LearningSystem Design Interview CasebookInterview Preparation and Course Orientation

The Do’s and Don’ts of the System Design Interview

Lesson 5 of 25610 minInterview Preparation and Course Orientation
In this lesson7 sections

The Do’s and Don’ts of the System Design Interview

Use the interview to show how requirements lead to a design. This lesson covers the questions to ask, the data to characterize, and the tradeoffs to explain before committing to components.

What to do during the interview

Start from the problem you were given. A familiar architecture can be useful, but explain why its components fit these requirements and where you would change it. Novelty alone does not justify a design.

Since interviews can be stressful, having a structured plan is a valuable strategy. While there are many ways to approach a System Design problem, we recommend the following technique.

Two large speech shapes overlap a shared drawing surface.
Make the design a conversation

Strategize, then divide and conquer

We recommend including the following activities somewhere in the interview:

Activities to include in the interview
Activities to include in the interview

Ask refining questions

Ask questions that change the design: which users matter, which actions they need, and which constraints are mandatory. Prioritize a few features with the interviewer, then use those answers to explain the scope of your solution.

We need to ensure we are solving the right problem. It is helpful to divide requirements into two groups:

A large magnifying lens frames a question mark above an unfinished sketchbook, an cue to clarify requirements.
Ask before drawing
  • Functional requirements: Features the clients need directly, such as sending messages to friends in near real-time.

  • Non-functional requirements: Qualities and constraints on those features, such as a latency target at an agreed user load. State the target and the load together so the requirement can guide a design decision.

Handle data

Describe the data before choosing storage or processing components. Its size, access patterns, consistency needs, and retention requirements determine which options are worth comparing.

Different paper shapes sit in a sample tray beside a ruler, suggesting that data types, size, and access patterns deserve inspection.
Get to know the data

Some important questions to ask ourselves when searching for the right systems and components include the following:

  • What’s the size of the data right now?

  • At what rate is the data expected to grow over time?

  • How will the data be consumed by other subsystems or end users?

  • Is the data read-heavy or write-heavy?

  • Do we need strict consistency of data, or will eventual consistency work?

  • What’s the durability target of the data?

  • What privacy and regulatory requirements do we require for storing or transmitting user data?

Discuss the components

At a high level, our job involves selecting components, determining their placement, and defining their interactions.

For instance, we must decide on the appropriate database type, such as choosing between a conventional SQL database or a NoSQL alternative.

An exploded construction model uses an arch, beam, and supports.
Choose the parts with care

Suppose you recommend a NoSQL database and the interviewer asks you to use a relational database. First clarify whether this is a fixed constraint or an invitation to compare alternatives. Then adapt the design: explain how the required queries and updates would work, and identify any cost or scaling tradeoff. Repeating the original recommendation does not answer the new constraint.

Note: We often abstract component details into boxes and use arrows to illustrate interactions. Defining high-level user-facing APIs can further clarify system data and interaction requirements.

Common System Design components include front-end interfaces, load balancers, caches, databases, firewalls, and CDNs.

Discuss trade-offs

Remember that there’s no one correct answer to a design problem. If we give the same problem to two different groups, they might come up with different designs.

Two walking paths curve around a common garden.
Make a deliberate choice

Here are the primary reasons for diversity in System Design solutions:

  • Trade-offs: Components have distinct advantages and disadvantages. We must carefully weigh which options best suit our needs.

  • Resource management: Compare financial cost, operating effort, and technical complexity against the requirements.

  • Weaknesses: Every design has limitations. We must identify these flaws and have a plan to address them.

We should proactively highlight design weaknesses to the interviewer and explain our reasoning. For example, our current design might not handle a tenfold increase in load, but we do not anticipate reaching that scale soon. By implementing a monitoring system to track growth, we can upgrade the design when necessary. This demonstrates an intentional trade-off to reduce immediate system costs.

Failures are inevitable in large systems. Therefore, we must integrate fault tolerance and security directly into our design.

What not to do in an interview

Here are a few things that we should avoid doing in a System Design interview:

  • Keep code secondary to the design unless an implementation detail or interviewer request makes it useful.

  • Agree on the problem and scope before drawing components.

  • Explain decisions as you make them, leaving room for questions.

  • Give estimates units, assumptions, and a reason they matter to the design.

  • State what you do not know and explain how you would resolve it.

A pencil rests across two annotated sheets beside an open speech shape, an reminder to use feedback.
Listen and revise

Note: If an interviewer asks us to design a system we haven’t heard of, we should just be honest and tell them so. The interviewer will either explain it to us or they might change the question.

Use this sequence as a guide, then respond to what the interviewer says. A clarifying question only helps if its answer affects the design. When a constraint changes, revisit the relevant decision rather than defending the original diagram.

In your next practice session, pause after the high-level design and name one assumption that would force a revision. Explain what you would change and what evidence would justify it. The next lesson examines this kind of adaptation under interview pressure.