awesome-low-level-design
Learn Low Level Design (LLD) and prepare for interviews using free resources.
A free collection of object-oriented design problems and Java solutions to help software developers prepare for low-level design interview rounds at tech companies, covering SOLID principles, UML diagrams, and dozens of practice systems.
This repository is a free learning resource for Low Level Design (LLD), also called Object Oriented Design — a topic that commonly appears in software engineering job interviews at tech companies. LLD interviews ask candidates to design the classes, objects, and relationships for a specific system from scratch: for example, design a parking lot, a vending machine, or a chess game.
The repository covers the full range of concepts you need: object-oriented programming fundamentals (classes, inheritance, encapsulation, polymorphism), design principles like SOLID (a set of rules for writing maintainable code), UML diagrams (visual blueprints of software structure), concurrency and multi-threading concepts, and — most importantly — a large library of practice interview problems with solutions in Java.
The practice problems are organized by difficulty. Easier ones include designing a parking lot, a logging framework, or a vending machine. Harder problems include designing systems like LinkedIn, an elevator, an online auction, or a chess game. Each problem comes with a problem statement and a worked-out Java implementation.
You would use this if you are a software developer preparing for technical interviews that include a system design or machine coding round, or if you want to strengthen your understanding of object-oriented design patterns in general.
Where it fits
- Study worked Java implementations of classic interview problems like parking lots, vending machines, and chess
- Learn SOLID design principles through concrete code examples rather than abstract theory
- Practice designing class hierarchies and relationships for complex systems like LinkedIn or an online auction