Step by Step Guide for System Design Interview
- requirements clarifications - ask questions to clarify end goals
- back of the envelope estimation - estimate scale of the system -> help later when focusing on scaling, partitioning, load balancing, and caching
- system interface definition - define what APIs are expected from the system -> establish the exact contract expected from system
- 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
- high level design - draw a block diagram with 5-6 boxes representing the core components -> aim to solve problem from end-to-end
- detailed design - dig deeper in 2-3 major components; present different approaches
- identifying and resolving bottlenecks - discuss bottlenecks and different approaches to mitigate them