My personal notes for Grokking the System Design Interview
A course from Educative
Educative advocates for a seven-step process in design interviews.
- Clarify the requirements. These interviews are intentionally vague. Ask questions to narrow down the exact scope of what we’re trying to solve and to clarify any ambiguities. Dig into the functional and non-functional requirements.
- Determine the scope and scale. Estimating the size of the system will help narrow down the design.
- Design the system interface (API). This will help to ensure we’ve nailed down all the requirements and haven’t gotten any wrong.
- Define the data model. Once we have a good idea of the APIs, we can use it to determine what the data model should look like.
- Create a high-level design. Identify the components needed to solve the problem end-to-end and draw them in a block diagram.
- Dig into the details. Pick a few layers and dig into the details. Focusing on the database and the server may be good targets.
- Identify any bottlenecks. Go into detail on how we’d resolve them if we found them.