Pro-tip: Focus on developing an understanding!
Interview Prep | High Level Design Roadmap
Companies don’t want to hire people who can’t develop scalable and resilient systems. The demand for people who can understand the tradeoff of using different tech is always high.
If you are someone with more than a year of experience, your interview preparation schedule should include reading up on System design.
Your response to a HLD question is expected to have parity with the number of years of experience you have.
What is a High-Level design interview?
Book definition — High level design (HLD) explains the architecture that would be used to develop a system, it is also referred to as Sytem design. The architecture diagram provides an overview of an entire system, identifying the main components that would be developed for the product and their interfaces. [Source]
Points to note
- You are expected to talk about the components you choose and why you choose them.
- There is no correct solution, but be ready to explain every decision you make.
Preparation Path/Roadmap
We will talk about the preparation path you need to take up. Each of the subsequence sections shall contain links and resources for the same.
Timeline to complete this is 1 hour everyday for 1 month.
[1]
If you are an SDE 2 or above. Watch the video given in this step. Understanding just 20% of it would mean that preparation wouldn’t really be a challenge for you.
[2]
In the next step, Read up on the basics of system design.
[3]
Start going through actual examples.
[4]
Take care that you go through 5–6 complete examples. Pick up fresh questions, start trying to write down your solution, and then go through the solution/explanation.
[5]
Next is assessment time!!
Basics of System design
You need to understand that there is a flow to the System design interview. Which mostly looks like this:
- Requirement clarification - functional & non-functional
- Estimations - Storage, Bandwidth, etc.
- Data flow
- High-level component design
- Detailed design
- Identify and address issues (System bottlenecks)
Resources
- Educative.io To develop an Uber-level understanding of the flow of a system design round. If you watched the video above, you would be able to grasp the article.
- Educative.io -guide Get an overview of all topics relevant to system design
- donnemartin/system-design-primer This is a great resource for the basics of System design, and it also contains a number of examples.
- Leetcode Discuss This is a list of frequently asked design questions you should be aware of. It contains the solutions as well.
A cheat sheet to keep handy -The Sheet
If you are finding it tough to read through these resources. The last section contains links to YouTube videos as well.
Books to check out
- System Design Interview — An insider’s guide
- System Design Interview — An Insider’s Guide: Volume 2
- Design data-intensive application
This is pretty expensive, but it’s really great for in-depth knowledge. Wouldn't recommend it if you had your interview in a month, as you won't be able to completely grasp all concepts.
Video Resources
- System Design Complete Course The one-stop video from Scalar
- Gaurav Sen Playlist for System Design
- CodeKarle In-depth explanation
5. Actual Interview Experiences
Last step — Self evaluation.
The question descriptions are intentionally kept hidden. Prep up first and come back to test yourself out. These questions are about interview experiences shared by people.