Step by Step Guide for System Design Interview

  1. requirements clarifications - ask questions to clarify end goals
  2. back of the envelope estimation - estimate scale of the system -> help later when focusing on scaling, partitioning, load balancing, and caching
  3. system interface definition - define what APIs are expected from the system -> establish the exact contract expected from system
  4. defining data model - clarify how data flow between different system components -> later will guide data partitioning and management; identify various entities and how they interact with each other; data management i.e. storage, transportation, encryption
  5. high level design - draw a block diagram with 5-6 boxes representing the core components -> aim to solve problem from end-to-end
  6. detailed design - dig deeper in 2-3 major components; present different approaches
  7. identifying and resolving bottlenecks - discuss bottlenecks and different approaches to mitigate them