The best way to think about the conversation is to imagine that you and a colleague are asked to design a large-scale system, and you are hashing out the details on the whiteboard. You are understanding the requirements, scope, and constraints before proposing a solution.
So how do you design a system in an interview if you have never built one in real life? To crack your system design interview, you’ll need to prepare in three areas:
Distributed system fundamentals
The architecture of large-scale web applications
Designing distributed systems
Each of these dimensions flows into the next.
If you don’t know the fundamentals, you won’t be prepared to architect a service; if you don’t know how to put those systems together, you won’t be able to design a specific solution; once you’ve designed large-scale systems, you can take lessons learned and integrate them into your base knowledge.
Let’s look at each of these dimensions in order.