System design (HLD+LLD)
There are two kinds of designs included while designing any system
High-Level Design (HLD)
Low-Level Design (LLD)
Lets describe them in details
High-Level Design:
It includes top-level design of our entire application Like how much scalability, cost, request application can handle at a time.
This work is mostly done by the Principle Engineers or Product Managers
But in interviews, it is expected that at least the candidate should have a basic idea about these terminologies.
Like what are Load balancers, Caching, Compute Power, SQL vs NoSQL, Streaming, Data Modeling, etc. Few important topics are like
Design Twitter
Design Prime Music
Design Google Drive
Design Uber
Design Netflix
Design Instagram
Low-Level Design:
Low-Level Design is also known as machine coding round in interviews it includes questions like design a basic crud operation of any system and then writes code for that with test cases and deployment.
In this round interviewer want to check your DSA knowledge as well as OOPs knowledge.
Suppose in the given problem like(Create a note taking app) interviewer will ask questions like how you will organize data, how to fetch data, which data structure to use and why, test cases, UML, ER Diagram, etc.
In organizations when any project comes then HLD is done by the PMs but the low-level design is done by the SDE-1, SDE-2. It is like breaking a big problem into smaller units and then solving it.
So while preparing for an interview or going for a job System Design is always very important in both places. And this comes with the practice of the questions asked in different interviews.
Last updated