Phase 1
Getting Started
Understand what system design is and how to approach it.
Pause & reflect
Before you read on, answer this in your head — or on paper:
You're asked to "Design Twitter." No code, no screen mockups — just architecture.
What do you think the interviewer wants to hear? What should you clarify before drawing boxes?
System design is the process of defining the architecture, interfaces, and data for a system that satisfies specific requirements. It covers everything from infrastructure down to how data is stored and accessed.
A good system design requires thinking about scalability, availability, latency, and fault tolerance — and making deliberate tradeoffs between them.
How to approach an interview
1. Clarify requirements
Ask about functional requirements (what the system does) and non-functional (latency, availability, scale). Don't assume — "Design X" is intentionally vague.
2. Estimate scale
Ballpark numbers: DAU, requests per second, storage. This shapes your choices. Use simple math and round.
3. Data model
Define entities and relationships. Tables or collections. This anchors the rest of the design.
4. High-level design
Draw components: load balancer, API servers, databases, cache, queue. Show how data flows.
5. Deep dive
Go deeper where it matters. Sharding strategy, cache eviction, consistency tradeoffs. Discuss bottlenecks and how to fix them.