Lesson 129 of 129
System Design Interview Checklist
This checklist follows the phases of a system design interview. Use it during practice to verify that each phase produced its output, and during the interview as a reference for what to cover. The reasoning behind each phase is in the system design interview framework.
flowchart LR
P["Before"] --> R["Requirements"]
R --> E["Estimation"]
E --> D["Design"]
D --> K["Deep dive"]
K --> W["Wrap-up"]Before the interview
- Know the format and duration; confirm the drawing tool works.
- Review the numbers cheat sheet: latency values, seconds per day, availability nines.
- Review the technology choice guide.
- Prepare a default order: requirements, estimation, design, deep dive, wrap-up.
- Practice explaining components aloud, not only drawing them.
Requirements
- Restate the problem in one sentence.
- List functional requirements as short verb phrases.
- Prioritize them; select the core two to four.
- State non-goals (out of scope).
- Ask about users and scale: daily active users, growth.
- Ask about the read/write ratio and the most frequent operations.
- Set non-functional targets: latency (percentile), availability, consistency, durability.
- Ask about constraints: geography, data retention, compliance, existing systems.
- Confirm the list with the interviewer.
See functional and non-functional requirements.
Estimation
- Convert users to requests per day, then to average QPS (divide by 86,400).
- State the peak factor and compute peak QPS.
- Split into read QPS and write QPS.
- Compute storage: records x size x retention x replication.
- Compute bandwidth for ingress and egress.
- Compute cache size if a cache is planned.
- State the design consequence: single node or partitioned, cache needed, CDN needed.
- Write units next to every number.
See back-of-envelope estimation.
High-level design
- Define the API: endpoints, parameters, responses, authentication.
- Define the data model: entities, keys, relationships, access patterns.
- Choose storage per data type and give the reason.
- Draw clients, load balancer, stateless services, storage, cache, queues, workers.
- Trace the write path end to end.
- Trace the read path end to end.
- Identify synchronous versus asynchronous steps.
- Confirm every functional requirement is served by the design.
- Note where each component scales: replicas, partitions.
Deep dive
- Name the two or three hardest components and confirm the choice with the interviewer.
- For each: state the sub-problem and why it is hard at the estimated scale.
- Present at least two alternatives.
- Compare them against the requirements and estimates.
- Decide, and state what the decision gives up.
- Describe behavior on failure: node crash, network partition, slow dependency.
- Address correctness: consistency guarantees, ordering, duplicates, idempotency.
- Address skew: hot keys, hot partitions, popular items.
- Address caching: what is cached, eviction, invalidation, staleness.
Typical deep-dive prompts and where to look:
| Topic | Article |
|---|---|
| Partitioning and rebalancing | Sharding and partitioning, consistent hashing |
| Consistency choices | Consistency models, CAP theorem and PACELC |
| Cache problems | Cache invalidation, stampede, hot keys |
| Duplicates and retries | Delivery semantics and idempotency |
| Failure containment | Circuit breaker, timeouts, retries, backoff, and jitter |
| Traffic control | Rate limiting algorithms |
Wrap-up
- Identify single points of failure and their mitigations.
- Identify the first bottleneck at 10 times the estimated load.
- Describe monitoring: key metrics, alerts, logs, traces (see observability).
- Describe failure recovery and data backup.
- Mention security: authentication, authorization, encryption, abuse protection.
- Mention multi-region or disaster recovery if availability targets require it.
- List possible extensions and what would change in the design.
- Summarize the main trade-offs made, in a few sentences.
Time checkpoints for a 45-minute round
| Elapsed minutes | Should be complete |
|---|---|
| 5 | Functional list, non-goals, and non-functional targets confirmed. |
| 10 | Peak QPS, storage, and the resulting structural conclusions written down. |
| 15 to 25 | API, data model, and end-to-end diagram with read and write paths. |
| 25 to 40 | Two or three deep dives, each with alternatives, a decision, and failure behavior. |
| 40 to 45 | Single points of failure, bottlenecks, monitoring, extensions. |
If a checkpoint is missed, shorten the next phase instead of skipping it: reduce estimation to the two numbers that decide the design, or reduce the number of deep dives.
Throughout the interview
- Think aloud; state assumptions as they are made.
- Keep the requirements list, numbers, and diagram visible.
- Announce transitions between phases.
- Check with the interviewer at phase boundaries.
- Give an alternative and a cost for each major decision.
- Track time against the budget: about 5 minutes requirements, 3 to 5 minutes estimation, 10 to 15 minutes design, 15 to 20 minutes deep dive.
Common failure modes are listed in interview communication and common mistakes.
Interview questions
- What is the minimum output of the requirements phase? A prioritized functional list, non-functional targets, and stated non-goals. Without them, later choices cannot be justified.
- When can estimation be skipped? It should not be skipped. If time is short, compute only the numbers that decide a structural choice, such as peak QPS and total storage.
- What separates a good deep dive from a component list? A deep dive explains the mechanism, compares alternatives against the requirements, states the trade-off, and covers failure behavior.
- What should the final minutes contain? Single points of failure, the first bottleneck at higher load, monitoring, and extensions, so that the risks are stated before the interviewer raises them.
