Low-level design (LLD) is a componenet-level design process and is frequently used while designing data structures, and algorithms. It is also known as Object-Oriented Design (OOD), micro-level/detailed design. In general, a low-level design consists of class diagrams, program specifications and other low-level details for a given software componenet. During the LLD phase, the actual software components are designed by defining the logical and functional segments whereas design of application structure is developed during the high=level design phase. Low-level design is often created based on the high-level design.
Learn how to design a given system in an object-oriented approach.
Prep for the low-level design interview.
Common low-level design interview questions with sample discussions, code, and diagrams.
Solutions linked to content in the
solutions/
folder.
Question | |
---|---|
Design a Parking Lot | Solution |
Design Poker Game - Under Development | Solution |
Design an Online Shopping Platform | Contribute |
Design a Movie Ticket Booking System | Contribute |
Design Facebook | Contribute |
Design a Car Rental System | Contribute |
Design an Online Stock Brokerage System | Contribute |
Design Blackjack | Contribute |
Design an Airline Management System | Contribute |
Design an ATM | Contribute |
Design a Hotel Management System | Contribute |
Add a system design question | Contribute |
Learn from the community.
Feel free to submit pull requests to help:
- Fix errors
- Improve sections
- Add new sections
- Low-level design topics: start here
- Programming Logic
- Design Patterns
- Architectural Patterns
- Appendix
- Under development
- Credits
- Contact info
- Additional Resources
- Inspiration
- License
New to low-level design?
First, you'll need a basic understanding of OOPS concepts, learning about what they are, how they are used, and their pros and cons.
- Topics covered:
- Use Case Diagrams
- Class Diagram
- Sequence Diagram
- Activity Diagrams
In this topic, we will concentrate on the brains of the problem solution. While design components are important, logic is what determines how a software works. The logic often composed of various algorithms and data strucutres. Also, data structures and algorithms play a major role in the hiring process as well. In this section, the idea is to go over some of the popular algorithms and data structures that are crucial for any aspiring software engineer. We can start off the discussion by discussing some of the basics concepts like Time and Space complexity which can be used to analyse the performance of the algorithms.
-
Basic Data Structures
- Sets
- Stacks
- Queues
- Arrays
- LinkedLists
- HashMaps
- Heaps
-
Advanced Data Structures
- Trees
- Binary Search Trees
- m-Array Trees
- B-Trees
- Binomial Heaps
- Fibonacci Heaps
- Red-Black Trees
- Graphs
Note: This section is under development
Interested in adding a new section or helping complete one in-progress? Feel free to Contribute!
Inspired from System Design Primer