The canonical 4-step framework
Almost every successful HLD answer follows the same arc. Internalize it so you never face a blank page.
1. Requirements (clarify the problem)
Pin down what you are building before you build it. Three buckets:
- Functional — the core operations. For a URL shortener: shorten and redirect. Explicitly cut scope ("analytics is out of scope for now") so the interviewer knows you're managing time, not forgetting.
- Non-functional — latency targets, availability (99.9% vs 99.99%), consistency needs, durability. These constrain the design more than the features do.
- Scale assumptions — DAU, read/write ratio, data size. Get rough numbers here; you'll compute precisely in step 2.
2. Capacity estimation
Turn the scale assumptions into the numbers that drive architecture: DAU → QPS → storage → bandwidth. This is the step weak candidates skip — and it's the one that tells you whether you need sharding, how big the cache is, and whether reads dominate. (See the dedicated capacity-estimation question for a worked example.)
3. High-level design
Draw the system: clients → load balancer → stateless services → data stores, with caches and queues where the numbers justify them. Then specify the API contract (a few endpoints with request/response shapes) and the data model (key tables/collections and the access patterns). Keep it high-level; resist diving into one component yet.
4. Deep dive
The interviewer steers (or you offer) one or two hard parts: a bottleneck from your estimation, a consistency trade-off, an ID-generation scheme, a hot-partition mitigation. This is where senior signal lives — you show you can reason about failure modes, not just happy paths.
Why it works across styles
The framework is style-agnostic — what changes is where you spend the deep-dive minutes. FAANG interviewers push step 4 hardest (scale, bottlenecks). EU/contracting interviewers care that steps 1–2 lead to a cost-justified, simple design. Regional (EPAM/Uzum) interviewers want steps 3 to be clean and buildable — a defensible diagram and a real schema. Same four steps, different emphasis.