System Design and Scalability
System Design and Scalability
Algorithms vs System Design Questions
"These questions are simply designed to see how you would perform in the real world. If you were asked by your manager to design some system, what would you do?
That's why you should approach it just like this. Tackle the problem by doing it just like you would at work. Ask questions. Engage the interviewer. Discuss the tradeoffs."
Handling the Questions
- Communicate
- Go broad first
- Use the whiteboard
- Acknowledge interviewer concerns
Handling the Questions
- Be careful about assumptions
- State your assumptions explicitly
- Estimate when necessary
- Drive
"These questions are largely about the process rather than the ultimate design."
Design: Step-By-Step
- Scope the Problem
- Make Reasonable Assumptions
- Draw the Major Components
- Identify the Key Issues (bottlenecks or major challenges in the system)
- Redesign for the Key Issues
Algorithms that Scale: Step-By-Step
- Ask Questions
- Make Believe
- Get Real
- Solve Problems
Key Concepts
- Horizontal vs. Vertical Scaling
- Load Balancer
- Database Denormalization and NoSQL
- Database Partitioning (Sharding)
Key Concepts
- Caching
- Asynchronous Processing & Queues
- Networking Metrics
- Bandwidth
- Throughput
- Latency
- MapReduce
Take a look at...
Want more?!

Review
System Design & Scalability: a simple review built by Claude.ai