Cracking the Low Level Design ( LLD ) Interview
Shashi Bhushan Kumar
Group Product Manager ★ Instructor / Coach ?? Ex- Head of Curriculum at GeeksforGeeks ?? Ex- SDE 2 at Adobe, Paytm ★ EdTech ???? NIT Allahabad
Software Engineering interviews (mainly) focus on the Coding and Software Designing skills in an interview. The Data Structure & Algorithm round check the Problem Solving skills and Coding skills of a candidate, while the Design round tests the System design skills, which can be High Level Design (HLD) or Low Level Design (LLD).
LLD talks about the class diagrams with the methods and relations between classes, program specs and other low level details for a given system. It is also known as Object Oriented Design (OOD).
Expectations from the candidates
In the LLD Interviews, they will judge you on your knowledge of creating modular, flexible, maintainable and reusable software, by applying Object-oriented Design Principles and Design Patterns. These questions (like Design a Parking Lot, Design a Chess Game etc.) are about demonstrating that you understand how to create elegant, maintainable object-oriented code. These questions are (intentionally) unstructured and open-ended and they don't have a standard answer.
How to Prepare for the LLD Interview
- Learn at least one Object Oriented Language ( C++ / Java / Python or C# )
- Study about the SOLID and other Object Oriented Principles
- Learn all the common Design Patterns and their applications
- Explore some open-source projects and try to understand the best practices
- Practice common LLD interview questions
How to solve LLD problems in the Interview
- Clarify the problem by asking the relevant questions. Gather the complete requirement and start with the basic features.
- Define the Core Classes ( and Objects )
- Establish the relationships between the classes / objects by observing the interactions among the classes / objects.
- Try to fulfill all the requirements by defining the methods
- Apply Object Oriented Design Principles and Design Patterns to make the system maintainable and reusable.
- Write well structured clean code (if you are told to implement a function)
Resources for LLD
Books:
- Head first object-oriented analysis and design
- Head first design patterns
- Clean Code
- Clean Architecture
- Refactoring: Improving the Design of Existing Code
- Patterns of Enterprise Application Architecture
- Design Patterns: Elements of Reusable Object-Oriented Software
Online Live Course:
Other Links:
- https://refactoring.guru/design-patterns
- https://sourcemaking.com/design_patterns
- https://www.geeksforgeeks.org/software-design-patterns/
- https://github.com/prasadgujar/low-level-design-primer
- https://github.com/DovAmir/awesome-design-patterns#programming-language-design-patterns
- https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc
MTS @ Salesforce | Ex-SDE @ Amazon | LLDcoding.com | 500+ sessions on PrePlaced | 100K+ Mnth Page Views | Google Summer of Code Mentor | Top Mentor @ PrePlaced | Ex-SDE @ Hyland | TA at Relevel | GCI Mentor | Freelancer
10 个月https://lldcoding.com/
SDE-III @Expedia
2 年Most of the books and resources you mentioned are in Java. Any good ones for C++?
Senior Software Engineer at Walmart Global Tech India
2 年21211
Associate at Intel
2 年sab copied hai