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.