How to Approach System Design Interviews

This is the framework. Memorize the structure, not the answers. Every system design interview follows the same arc — here’s how to navigate it in 45 minutes.

The 45-Minute Structure

Phase Time What you do
1. Requirements 5 min Clarify scope, list functional + non-functional requirements
2. Core Entities + API 5 min List 4-6 entities, define 3-4 endpoints
3. High-Level Design 15 min Build the architecture incrementally, one FR at a time
4. Deep Dives 15 min Pick 2-3 hardest problems, show Bad → Good → Great
5. Wrap-up 5 min Summarize trade-offs, mention what you’d do with more time

Phase 1: Requirements (5 min)

Start by asking “Users should be able to…” questions. Your goal is to lock down scope fast and show product thinking.

Pro tip: If you can’t prioritize, ask the interviewer: “Which of these would you like me to focus on?”

Phase 2: Core Entities + API (5 min)

Pro tip: This is your contract with the interviewer. Once they agree on APIs, you both know what “done” looks like.

Phase 3: High-Level Design (15 min)

This is where you build. Go through each functional requirement ONE AT A TIME.

Pro tip: If you’re stuck, ask yourself: What’s the most naive solution? What breaks about it at scale? That’s your next component.

Phase 4: Deep Dives (15 min)

Pick 2-3 areas driven by your non-functional requirements. Use the Bad → Good → Great structure:

Common deep dive topics:

Pro tip: Lead the deep dives yourself at senior+ level. Don’t wait for the interviewer to ask.

Phase 5: Wrap-up (5 min)

The 7 Deadly Sins (What Gets You Rejected)

  1. Jumping to the diagram without requirements
  2. Designing the entire system at once (not incrementally)
  3. Using buzzwords without explaining them
  4. Not asking questions — treating it as a monologue
  5. Over-engineering when a simple solution works
  6. Ignoring non-functional requirements
  7. Not explaining trade-offs (“Why this and not that?”)

Quick Reference: What Interviewers Score On

Dimension What they look for
Scoping Did you define clear requirements and stay focused?
Technical depth Can you go deep on 2-3 areas with specific mechanisms?
Trade-offs Do you explain WHY, not just WHAT?
Communication Can you lead the conversation and check in with the interviewer?
Progression Did you build incrementally from simple to complex?

Cheat Sheet: Common Patterns to Reach For

If you see… Reach for…
High write throughput Event bus (Kafka), async processing
Low latency reads Cache (Redis) + read replicas
Real-time updates to clients WebSocket or SSE
Exact-once guarantee Idempotency keys + transactional outbox
Search/discovery Elasticsearch or similar search index
Geo/proximity Redis Geo, PostGIS, geohash, S2
Scheduling/delays Timing wheel, delay queue, Temporal
Financial correctness Double-entry ledger, saga pattern
Hot partition (celebrity) Fan-out on write with limits, separate hot path

Bookmark this page. Read it 30 minutes before every system design interview.

Ready to practice? Pick a design: HLD Problems

💬 Comments