In this article, we are going to discuss how to best prepare for system design interviews. Most candidates don’t know how to effectively and efficiently prepare for system design interviews. If you are reading this article, you must be one of them. Most of the time you spend practicing Leetcode. And then you try to give three to four weeks, in the end at most, to prepare for the system design interviews. And the common way most people prepare for system dry interviews is by going through online resources like YouTube videos or different blog posts or different free or paid courses. However, most of the time you just go through those resources. For example, you may watch a YouTube video, may skip it a couple of times as well, or you may go and read a blog post about some system, or you go through some chapters on some paid courses such as mine (link below), and read the design of the distributed services like and that’s it. However, just going through YouTube videos or reading some online blog posts, or going through some course is not enough. You still need to understand what is the best way to prepare for system design using that resource.
Of course, it helps a little bit because you are educating yourself. You are gaining information about how to design different distributed systems. But it really does not help you in improving your overall systems and skills. Unless you go through all the different tips that I am going to point you in this article. You need to understand that going through these online YouTube videos or paid courses would be enough only if you are targeting some junior software engineering positions like L4, E4, etc. in companies like Facebook, Google, etc. However, this is certainly not going to help you if you are targeting senior, principal, or staff level positions like L5/6+ in these companies. You need to understand that at this level the hiring bar is really high and you need to understand that at this level just having information is not enough. So you need to understand at first that what should be the format of the system design interview.
So, you need to understand what you need to do first during a system design interview so the very first thing is you always start with collecting requirements. You need to first discuss the functional and non-functional requirements of the system with the interviewer. Most of the time interviewers do ask you about designing some service directly e.g. design a Twitter or Uber service. But you will also find cases where the interviewer will provide you some vague description of a problem. And then you need to figure out what the interview is asking you to design. For example, the interview may ask you to design a system that you can use to share some tasks list with your family. Now, you have to ask clarifying questions to the interviewer. And then you have to figure out what is the interview asking you to design. Maybe after asking clarifying questions, you come to the conclusion that the interviewer is asking you to design a TODO service, e.g. the Microsoft TODO-list, or a Wunderlist, etc. Another example is for example if you check the latest mock interview in my course I have asked the candidate to design a system through which different services can share their states with other services. After asking clarifying questions, the candidate was able to map that system to a design of distributed message queue system.
I have discussed the top tips to prepare for system design interviews in greater detail in my following YouTube video:
You can find the mock interview mentioned above in my course: The Distributed System Design Interviews Bible.
This is a great resource to not just improve your distributed system design skills but also to ace your distributed system design interviews and targeting level L5+ in companies like Facebook, Google, etc. The book/course is still in-progress work. There are already quite a few chapters discussing the design of TinyURL, Twitter, Distributed Cache, Uber, Whatsapp, Netflix, Dropbox, etc. We will be adding more chapters soon.
The course also includes a section on mock system design interviews. This is a great resource because it will provide you the experience of an actual distributed system design interview. It will enable you to go through real-life examples of system design interviews. You will see how an experienced interviewer can ask different questions to evaluate a candidate while designing a simple distributed system, such as TinyURL service, and how a candidate tackle questions asked by interviewers. What are the different mistakes that candidates make during the system design interviews and how you can avoid those mistakes in your interview. Also, more mock system design interviews are being added.