System Design
System Design Guide
Ace your architecture interviews
System design interviews test your ability to design large-scale distributed systems. Follow this checklist to structure your answers.
Interview Checklist
1. Clarify Requirements
Functional requirements
Non-functional requirements (scale, latency, availability)
Constraints and assumptions
Back-of-envelope calculations
2. High-Level Design
Draw the main components
Show data flow
Identify APIs
Database choices (SQL vs NoSQL)
3. Deep Dive
Scale individual components
Handle edge cases
Discuss trade-offs
Address bottlenecks
4. Wrap Up
Summarize your design
Discuss monitoring and alerting
Consider future improvements
Address potential failures
Common Patterns
Load Balancer
Distributes traffic across servers
Use case: High-traffic web applications
CDN
Caches content at edge locations
Use case: Static content, media streaming
Message Queue
Decouples components asynchronously
Use case: Order processing, notifications
Caching
Stores frequently accessed data in memory
Use case: Database query results, sessions
Sharding
Partitions data across multiple databases
Use case: Large-scale data storage
Pro Tips
Always start by asking clarifying questions
Think out loud - communication is key
There's no single right answer - justify your choices
Consider trade-offs (consistency vs availability, cost vs performance)
Practice with real systems (design Twitter, design Uber, etc.)
Use Thoth AI's System Design checklist during your interviews for real-time guidance!
Get Started Free