The system design interview provides the key signals that differentiate a tech lead from programmers. Here’s some tips may help you ace it.
Image from Quora
When preparing, thinking about how to design a system that top-tier tech companies have(Google, Twitter, Amazon, Uber, etc).
Proactively picking some classic questions, like Twitter Feeds, Snapchat messaging, Dropbox file system, to exercise. Over-preparing and ensure you are familiar with these major scenarios.
“Drive the discussion from the beginning.”
After the interviewer throwing out the question, like “Design a Load Balancer for Twitter”.
Do NOT rush to the solution.
The very first thing you need to do is to get clarity about the system’s requirements and constraints:
In reality, the quality of these exploring questions reflects the candidate’s experience level.
Now that you have the clarity of the system’s requirements, continue to drive the discussion.
The next step is to write down the first version of a complete solution.
On a high level, a reasonable solution should include all the components that receive, process, and store the data. Specifically, we need to write down:
Then validate this solution with the interviewer, ensure the it satisfy the key business requirements. Sometimes it also involves a bit calculation to persuade the interviewer.
After having the 1st version solution nailed, the interview will usually go into the “Deep Dive” section. The interviewer will come up with a special requirement, and ask the candidate to adjust their design to ensure its system survive in this scenario.
For instances:
There’s no one-fits-all answer at this stage. The interviewer really needs to leverage his/her experience and resolve it.
However, there’s one thing each candidate should keep in mind.
“Think in trade-offs”.
No matter what solution you propose, always write down its pros and cons. What makes it work and what to sacrifice to meet this goal. That’s the key signal of an experienced engineer.
Unlike the coding interview, there’re hundreds of ways a system design interview could go. But no matter what scenarios you’re in, I wish tips mentioned above could help you navigate to the ideal destination.
#software-development #system-design-project #system-design-interview #interview