Source: GeeksforGeeks

Cracking the Low Level Design (LLD) Interview

Shashi Bhushan Kumar
2 min readSep 17, 2020

--

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

  1. Learn at least one Object Oriented Language (C++ /Java /Python or C# )
  2. Study about the SOLID and other Object Oriented Principles
  3. Learn all the common Design Patterns and their applications
  4. Explore some open-source projects and try to understand the best practices
  5. Practice common LLD interview questions

How to solve LLD problems in the Interview

  1. Clarify the problem by asking the relevant questions. Gather the complete requirement and start with the basic features.
  2. Define the Core Classes ( and Objects )
  3. Establish the relationships between the classes / objects by observing the interactions among the classes / objects.
  4. Try to fulfill all the requirements by defining the methods
  5. Apply Object Oriented Design Principles and Design Patterns to make the system maintainable and reusable.
  6. Write well structured clean code (if you are told to implement a function)

Resources for LLD

Books:

  1. Head first object-oriented analysis and design
  2. Head first design patterns
  3. Clean Code
  4. Clean Architecture
  5. Refactoring: Improving the Design of Existing Code
  6. Patterns of Enterprise Application Architecture
  7. Design Patterns: Elements of Reusable Object-Oriented Software

Online Live Course:

  1. https://practice.geeksforgeeks.org/courses/design-patterns-live

Other Links:

  1. https://refactoring.guru/design-patterns
  2. https://sourcemaking.com/design_patterns
  3. https://www.geeksforgeeks.org/software-design-patterns/
  4. https://github.com/prasadgujar/low-level-design-primer
  5. https://github.com/DovAmir/awesome-design-patterns#programming-language-design-patterns
  6. https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc (for UML 2.0)

Initially, this Article was written at LinkedIn (by me only).

--

--

Shashi Bhushan Kumar

Tech Interview Coach at Interview Kickstart 💼 Ex -Tech Lead & Instructor at GeeksforGeeks ♦ Ex -SDE 2 at Adobe, Paytm 👨‍🎓 NIT Allahabad | Trainer