The framework
System design interviews are open-ended. There is no single correct answer. What matters is structured thinking, asking the right questions, and making reasonable trade-offs.
Step 1 — Clarify requirements (5 min)
Functional: what does the system do? Non-functional: scale, latency, availability, consistency requirements. Constraints: read-heavy or write-heavy? DAU? Data size?
Step 2 — Estimate scale (3 min)
DAU → requests/second. Storage needed per day/year. Bandwidth. Back-of-envelope math — don't need to be exact.
Step 3 — High-level design (10 min)
Draw the main components: clients, API servers, databases, caches, queues. Don't over-detail yet.
Step 4 — Deep dive (15 min)
Pick the most critical or interesting parts and go deep. The interviewer often guides this.
Step 5 — Wrap up
Discuss bottlenecks, single points of failure, monitoring, future scaling.