advanced
System Design
Design scalable, reliable systems by clarifying requirements, estimating load, choosing data and API boundaries, and explaining trade-offs.
System design interviews evaluate structured thinking under ambiguity: clarify requirements, estimate scale, sketch APIs and data, identify bottlenecks, and defend trade-offs. Practice flows for URL shorteners, chat, feeds, notifications, uploads, rate limiters, and autocomplete.
Subtopics include scalability (horizontal/vertical, load balancing, sharding, replication), caching layers and invalidation strategies, reliability (availability, durability, fault tolerance, DR, RTO/RPO), and consistency models (CAP, strong vs eventual, read-after-write).
On interviews: narrate your process aloud, state assumptions, and deepen one component when prompted—do not jump to buzzwords.
Common pitfalls: skipping requirements, hand-waving capacity math, and designs without failure or hot-spot analysis.
Checklist:
- Clarify functional and non-functional needs.
- Estimate read/write QPS and storage growth.
- Draw data flow and critical paths.
- Name bottlenecks and mitigation.