Structuring Your Answer
The Framework: Task → Approach → Results → Improvements
Amazon system design interviews are 45 minutes. Without structure, you'll either rush through superficially or get lost in one component. Use this framework for every question:
Phase 1: Clarify Requirements (5 minutes)
Before drawing anything, ask questions. This is not wasted time — it's signal that you think before building.
Questions to ask:
- What are the core use cases? (read-heavy? write-heavy? real-time?)
- What is the scale? (users, QPS, data volume)
- What are the latency requirements? (real-time? batch? acceptable delay?)
- What consistency guarantees are needed? (strong vs. eventual)
- Are there specific constraints? (budget, existing infrastructure, regulatory)
Example dialogue:
"Before I start designing, I'd like to clarify the requirements. Are we building for reads, writes, or both? What's the expected scale in terms of daily active users and queries per second?"
Phase 2: High-Level Estimation (5 minutes)
Estimate scale to drive your design decisions. You don't need exact numbers — ballpark is fine.
100M daily active users
10 requests per user per day = 1B requests/day
1B / 86400 seconds ≈ 12,000 QPS peak ≈ 25,000 QPS peak (2x average)
Storage: 1B requests * 1KB average = 1TB/day = 365TB/year
These numbers drive decisions:
- 25K QPS → need load balancer + multiple app servers
- 365TB/year → need distributed storage (S3, DynamoDB, partitioned RDS)
- Read-heavy → add caching layer
Phase 3: Design the Architecture (20 minutes)
This is the core of the interview. Work from left to right:
- Client → Load Balancer: how traffic enters the system
- Load Balancer → Application Layer: compute tier, auto-scaling
- Application → Data Layer: databases, caches, message queues
- Data Layer internals: replication, partitioning, consistency
For each component, explain:
- What it does (brief)
- Why you chose it (justification)
- What alternatives exist (tradeoffs)
Phase 4: Deep Dive (10 minutes)
The interviewer will ask you to go deeper on specific areas:
- Database schema design
- Specific API design
- Caching strategy
- Failure scenarios
- Consistency model
Be ready to zoom into any component. Have mental "depth" ready for each layer.
Phase 5: Tradeoffs & Improvements (5 minutes)
Summarize your design with tradeoffs:
- What did you choose and why?
- What are the limitations?
- What would you do differently at larger scale?
- What failure scenarios exist and how would you handle them?
STAR-like for System Design
| STAR Element | System Design Equivalent | Example |
|---|---|---|
| Situation | Context & constraints | "We need a URL shortener for 100M daily users" |
| Task | Requirements & scale | "100M URLs/day, read-heavy, 100:1 read:write ratio" |
| Action | Architecture & decisions | "I'll use DynamoDB for storage, Redis for caching" |
| Result | Tradeoffs & analysis | "This gives us O(1) reads, eventual consistency for writes" |
| Improvement | Future scaling | "At 10x scale, I'd add CDN and multi-region" |
Drawing Diagrams Effectively
Think Out Loud While Drawing
The diagram is a communication tool, not an art project. Draw while explaining — don't draw silently for 5 minutes then present.
Bad approach: (silent drawing for 3 minutes)
"Here's my design." (interviewer has no context)
Good approach: (drawing while narrating)
"Let me start with the client side. We have mobile and web clients that send requests to a load balancer..." (draws client → LB)
"The load balancer distributes traffic across our application servers..." (draws LB → app servers)
"Now for the data layer, I'm going to use DynamoDB for our primary storage because..." (draws app → DynamoDB)
Diagram Best Practices
Label everything. Don't draw boxes without text. Every component should have a name.
Use consistent shapes. Pick a convention and stick to it:
- Rectangles: application servers, services
- Cylinders: databases, storage
n - Diamonds: load balancers, caches
n - Arrows: data flow direction
Show data flow direction. Arrows should indicate which direction data moves. Label bidirectional flows.
Add key details. Write important numbers or config next to components:
- "Redis (cache)" not just "Redis"
- "DynamoDB (partitioned by userId)" not just "DynamoDB"
- "3 AZs" next to your deployment
Group related components. Use dotted boxes or shading to show logical groupings:
- "Application Tier" box around app servers
- "Data Tier" box around databases and caches
- "AWS Region" box around everything
Common Diagram Mistakes
| Mistake | Why It's Bad | Fix |
|---|---|---|
| No labels | Interviewer can't follow | Label every component |
| Too detailed | Overwhelming, lose the big picture | Start high-level, add detail in deep-dive |
| Too simple | Looks like you haven't thought it through | Include replication, caching, queues |
| No data flow | Hard to understand how system works | Draw arrows with labels |
| UML notation | Overly formal, wastes time | Simple boxes and arrows are fine |
Diagram Progression
Start simple, add complexity as you discuss:
Minute 3: Basic flow — Client → LB → App → DB
Minute 8: Add caching — Client → LB → App → Cache → DB
Minute 12: Add async processing — Client → LB → App → Cache → DB + App → Queue → Worker → DB
Minute 18: Add replication — DB with read replicas, cache cluster
This progression shows your thinking evolving and prevents overwhelm.
What to Draw First
- Stick figures or rectangles for clients (mobile, web, IoT)
- Single box for load balancer
- 2-3 boxes for application servers (showing it's distributed)
- Cylinder for primary database
- Then refine: add cache, queues, replicas, CDNs as needed
Narration, Confidence, and Time Management
Narration: Explain WHY, Not Just WHAT
The biggest mistake candidates make is listing components without explaining reasoning.
Bad narration:
"I'll use Redis for caching, DynamoDB for the database, and SQS for the queue."
(No justification, no alternatives discussed)
Good narration:
"For caching, I'll use Redis. The reason is our access pattern is read-heavy — 90% reads, 10% writes. Redis gives us sub-millisecond latency for hot data. An alternative would be Memcached, but Redis also supports data structures we need for the leaderboard feature. The cache invalidation strategy would be write-through for consistency."
Narration template for each component:
- What: "I'm choosing [technology]"
- Why: "because [justification based on requirements]"
- Tradeoff: "the tradeoff is [limitation], which we accept because [reason]"
- Alternative: "alternatively, we could use [other], but [why it's worse for this case]"
Confidence Signals
Things that signal confidence:
- Speaking at a steady pace (not rushing)
- Making eye contact while explaining
- Drawing while narrating (not drawing silently)
- Acknowledging tradeoffs openly: "This approach has X limitation, but we accept it because Y"
- Asking clarifying questions (shows you think before building)
Things that signal uncertainty:
- Speaking too fast (rushing through to hide gaps)
- Drawing complex diagrams without explaining
- Saying "I don't know" to everything (one "I don't know" is fine, but not multiple)
- Being defensive when challenged
Handling "I Don't Know"
It's okay to not know everything. What matters is how you handle it:
Good response:
"I'm not deeply familiar with the internals of [X], but based on my understanding of [related concept], I'd approach it this way... After the interview, I'd research [specific topic] to understand the details."
Bad response:
"I don't know." (then silence)
The key is to show your thinking process even when you lack specific knowledge.
Time Management
45-Minute Breakdown:
| Phase | Time | What to Do |
|---|---|---|
| Clarify | 5 min | Ask 2-3 targeted questions about requirements |
| Estimate | 5 min | Quick back-of-envelope math |
| Design | 20 min | Build the architecture layer by layer |
| Deep Dive | 10 min | Go deeper on whatever the interviewer asks |
| Tradeoffs | 5 min | Summarize, discuss limitations, mention improvements |
Warning signs you're off track:
- You've spent 10+ minutes on requirements → start designing
- You're 15 minutes in and haven't drawn anything → start drawing
- You're 30 minutes in and still on high-level → time for deep-dive
- You're 40 minutes in and haven't discussed tradeoffs → wrap up
Pacing checkpoints:
- Minute 5: Requirements clear, estimation done
- Minute 10: Basic architecture drawn
- Minute 20: Architecture detailed with caching, queues
- Minute 30: Deep-dived on 1-2 key areas
- Minute 40: Tradeoffs and improvements discussed
- Minute 45: Done
Amazon-Specific Communication
Amazon values structured thinking and customer obsession in communication:
- Start with the customer: "The user needs to be able to..."
- Use data: Reference your estimates throughout ("At 25K QPS, we need...")
- Be explicit about tradeoffs: Amazon culture values data-driven decisions
- Think long-term: Mention how the design scales as requirements grow
- Be concise: Amazon's leadership principle "Have Backbone; Disagree and Commit" — state your position clearly
Common Communication Pitfalls
| Pitfall | Impact | Fix |
|---|---|---|
| Jumping into design without requirements | Build wrong thing | Always clarify first |
| Only listing technologies | No depth, no justification | Explain WHY for each choice |
| Ignoring interviewer hints | Miss key constraints | Listen for their follow-up questions |
| Over-engineering | Waste time on complexity | Start simple, add complexity as needed |
| Under-engineering | Miss critical components | Cover: LB, app, DB, cache, queue |
| Monologuing | No engagement | Pause, ask if they want to go deeper on X |
| Arguing with interviewer | Bad signal | Acknowledge their point, incorporate if valid |
Practice Problems
Design a scalable How to Communicate system. Cover high-level architecture, data model, and API design.
Solution
// Complete system design:
// - Functional + Non-functional requirements
// - Capacity estimation
// - Data model (SQL/NoSQL choice)
// - API endpoints
// - Component architecture
// - Scaling strategy
// - Monitoring & reliabilityHow would you scale How to Communicate to handle 10x the current load? Identify bottlenecks and solutions.
Solution
// Scaling approach:
// 1. Load balancing
// 2. Database sharding/replication
// 3. Cache layer (Redis)
// 4. CDN for static assets
// 5. Async processing (queues)
// 6. Microservices decompositionAnalyze potential failure modes for How to Communicate and design mitigation strategies.
Solution
// Failure mitigation:
// 1. Redundancy (multi-AZ)
// 2. Circuit breakers
// 3. Retry with backoff
// 4. Dead letter queues
// 5. Health checks
// 6. Graceful degradationQuiz
1. How much time should you spend clarifying requirements before starting to design?
2. When choosing a database for a system, what should you explain?
3. The interviewer says 'What if we can't use a cache?' What should you do?
4. What is the correct order for presenting your system design?
5. How should you respond when you don't know a specific technology detail?
Flashcards
Question
What are the 5 phases of a system design interview?
Click to reveal answer
Answer
1. Clarify Requirements (5 min) 2. Estimation (5 min) 3. High-Level Design (20 min) 4. Deep Dive (10 min) 5. Tradeoffs & Improvements (5 min)
Question
What should you explain for every component choice?
Click to reveal answer
Answer
What (name the tech), Why (justification from requirements), Tradeoff (what you're giving up), Alternative (what else you considered and why it's worse for this case)
Question
How should you start your system design answer?
Click to reveal answer
Answer
Clarify requirements: ask 2-3 targeted questions about scale, use cases, latency needs, consistency requirements, and constraints. Don't jump straight into designing.
Question
What is the STAR equivalent for system design?
Click to reveal answer
Answer
Situation (context) → Task (requirements) → Action (architecture decisions) → Result (tradeoffs) → Improvement (future scaling)
Question
How should you draw your diagram?
Click to reveal answer
Answer
Think out loud while drawing. Start simple (Client→LB→App→DB), then add layers (cache, queues, replicas). Label everything. Draw while narrating, not silently.
Question
What does Amazon specifically value in communication?
Click to reveal answer
Answer
Structured thinking, data-driven decisions, customer focus ('the user needs...'), clear tradeoff analysis, long-term scalability thinking, and concise delivery.
Revision Notes
Key Takeaways
- 1.Structure is everything: Requirements → Estimation → Design → Deep-dive → Tradeoffs
- 2.For every component, explain WHAT, WHY, tradeoffs, and alternatives
- 3.Draw while narrating — silent drawing loses the interviewer
- 4.5 minutes on requirements prevents 40 minutes on the wrong design
- 5.It's okay to not know — show your reasoning process and mention you'd research
- 6.Amazon values data-driven, customer-focused, structured communication
- 7.Time management: use the 5/5/20/10/5 breakdown as your guide
Interview Tips
- •Start every answer with: 'Let me clarify the requirements first. What are the core use cases and expected scale?'
- •When drawing, narrate: 'I'm adding a caching layer here because our read pattern is...'
- •After completing your design, pause and say: 'Let me walk through the failure scenarios.'
- •If the interviewer challenges your choice, acknowledge it: 'That's a good point. If we can't use X, I'd switch to Y because...'
- •Use transition phrases: 'Now let me deep-dive on...', 'Moving to the data layer...', 'For the caching strategy...'
- •End with: 'The main tradeoffs of this design are... At larger scale, I'd consider...'
- •Practice your narration out loud — it's different from thinking silently
Cheat Sheet
Communication Cheat Sheet
Structured Answer Flow
- Clarify (5 min): 2-3 questions on requirements, scale, constraints
- Estimate (5 min): Back-of-envelope: users × requests = QPS, data volume
- Design (20 min): Client → LB → App → Cache → DB, layer by layer
- Deep-Dive (10 min): Go deeper on what interviewer asks
- Tradeoffs (5 min): Limitations, alternatives, improvements
Narration Template
For each component:
- What: "I'm choosing [X]"
- Why: "because [justification from requirements]"
- Tradeoff: "the limitation is [Y], which we accept because [Z]"
- Alternative: "we could use [W], but it's worse for [reason]"
Diagram Rules
- Label everything (no unlabeled boxes)
- Draw while narrating (not silently)
- Start simple, add complexity progressively
- Show data flow with labeled arrows
- Group related components visually
Time Pacing
- Minute 5: Requirements done, estimation started
- Minute 10: Basic architecture drawn
- Minute 20: Architecture detailed
- Minute 30: Deep-dive complete
- Minute 40: Tradeoffs discussed
- Minute 45: Done
Handling Pressure
- Interrupted? Acknowledge → adapt → continue
- Don't know? "Based on [related concept], I'd... and I'd research [X] after"
- Wrong? Acknowledge, correct, move on
- Time pressure? Summarize what's left and ask priority