notes

System Design

Delivery Framework

1. Requirements (~5 min)

Functional

Identify and prioritize top 3-5 requirements, as you can’t build a design with 100+ during 1h interview

Non-Functional

Should be in form of The system should be...

Choose from:

Examples:

The system should be highly available, prioritizing availability over consistency
The system should be able to scale to support 100M+ DAU (daily active users)
The system should be have low latency, rendering feeds in under 200ms

Capacity Estimation

https://www.hellointerview.com/blog/mastering-estimation https://www.hellointerview.com/learn/system-design/core-concepts/numbers-to-know

2. Core Entities (~2 min)

List core entities of your system. This will help to define terms, understand data and some naming.

Ask yourself:

E.g. for twitter it would be:

3. API or System Interface (~5 min)

Choose form

4. Data Flow (~5 mins) [Optional]

For some backend systems, especially data-processing systems, it can be helpful to describe the high level sequence of actions or processes that the system performs on the input to produce desired output.

E.g. for a web crawler, it will be

  1. Fetch seed URLs
  2. Parse HTML
  3. Extract URLs
  4. Store data
  5. Repeat

5. High Level Design (~10-15 mins)

Build MVP. Focus on functional requirements first, mention moments which need improvement later.

6. Deep Dive

Harden your design by:

LISTEN. Make sure you give your interviewer room to ask questions and probe your design. Chances are they have specific signals they want to get from you and you’re going to miss it if you’re too busy talking. Plus, you’ll hurt your evaluation on communication and collaboration.

Numbers

System design numbers