← Logan Kane

System Design Questions to ask in an interview

Fair warning, this is a long one. Brew a pot of coffee (or tea!) and read on.

This page is about questions to ask in a system design interview, not answers. In general, we should ask these questions. Be careful to ask questions, but not dive too deep into a topic if you don’t know the answers. Topics can become very deep when tackling distributed systems.

Gathering requirements

At this stage we want to gather requirements so that we have a better understanding of the system we’re designing.

Functional requirements

Non-functional requirements

Availability and consistency requirements

Response time and latency

API design

High level diagrams

Draw the diagram early and move quickly. A concrete diagram allows for real discussion around choices and prevents flip-flopping. A few guidelines:

Data model and schema

Here we define how we are going to store our data in our data store of choice. We make tradeoffs based on schema vs. schemaless approaches.

Questions to work through:

Deep dive design

This is where we scale up the design. You should have numbers already (e.g. 5 million users).

Ask these questions, but also be ready to provide answers. Everything mentioned here is fair game depending on what you bring up.

The following are questions you may be asked, and if not you should ask and answer them yourself.

Addendum

In closing

Hope this gives you a solid set of questions to work through at each stage of a system design interview. Use it as a checklist going in, and over time you’ll find you need to look at it less and less.