Cracking the System Design Interview
August 25, 2020
This post is supplemented by a Youtube series of System Design Interviews
Do you think there are more areas that I should cover? Please raise an issue and let me know.
What is a System Design Interview?
System Design is a round of interviews that are asked by tech companies to assess your architecture and problem-solving skills. In this round, you will be given an abstract problem statement. Something like design Twitter, Pinterest, or any such high scale apps. Its also not limited to such user-facing apps, you can be asked to design any software system like a code deployment system or a web crawler.
What are the expectations of these System Design Interviews?
Let’s start with what is not expected. You are not expected to design an architecture that is free of all edge cases and something that Engineers can start coding from the next day. That is not possible and neither is that the intent for this round. Broadly here is what the interviewers are looking for
- How do you approach a large undefined and abstract problem statement?
- How do you break down the problem into smaller parts?
- What’s the thought process and how you arrive at a solution.
- Are you able to explain and communicate your thought process tto the interviewer.
- Are you driving the conversation ? (For more senior candidates)
On the technical side these are what an interviewer is looking for
- The rationale behind your tech choices (Why do you need a Master-Slave architecture )
- Your understanding of computer systems and knowledge of when to use what.
- Your ability to look at all aspects of the stack, right from the request start to the load balancer to compute to storage?
- How extensible is your design?
- The tradeoffs that you do and how you do it? (SQL vs NOSQL)
Where can I see and experience a System design Interview look like?
There are 2 parts to this. Firstly, understanding how to approach the interviews and what are the potential pitfalls. This is where you can refer to my Youtube channel.
- I have interviewed candidates from SDE 1 to SDE 3/4 levels.
- You can see how these interviewees approach the problem.
- In each of the videos, you will see markers to where I critique the interview . This is to help you understand where the interviewee did well or where she went wrong.
- You can understand the approach of how different people are solving these and develop your strategy to avoid the problems.
Where can I schedule a Mock Interviews?
- Pramp . This is more of a peer mock interview, where you interview the other person and the other person’s interviews. In my experience, this can be a hit or miss depending on who you’re matched with.
- Interviewing.io - This one is a solid portal, where you would need to pay around 250$ for a senior engineer from Big Tech to interview you.
- Schedule one with me - I have a few slots every week. We can work out something.
Is there a system design community where I can hang out and share with other folks who are on the same boat.
There is a Telegram group that I run where folks help each other on System Design. It is also where I post useful system design concepts that will help you in designing a distributed system.
Where can I start preparing for interviews?
The best place to start are these resources below. All of these are free