Low-Level Design (LLD) is about designing the code structure of a system. We’re talking about classes, interfaces, methods, relationships between objects — basically, how we’d actually write the code before we start coding.
In simple language, if High-Level Design is the blueprint of a building, LLD is the detailed plan for each room — where the wiring goes, where the plumbing fits, what material each wall uses.
HLD vs LLD — What’s the Difference?
This confuses a lot of people, so let’s clear it up.
HLD (High-Level Design) answers: “What components do we need and how do they talk to each other?” Think databases, services, load balancers, message queues.
LLD (Low-Level Design) answers: “How do we structure the code inside one of those components?” Think classes, interfaces, design patterns, method signatures.
- Database choices
- API contracts
- Service communication
- Scaling strategies
- "Which services do we need?"
- Design patterns
- Interfaces & abstractions
- Object relationships
- SOLID principles
- "How do we structure the code?"
What Do Interviewers Look For?
LLD interviews aren’t about writing perfect production code. Here’s what actually matters:
- Requirement gathering — Can we ask the right questions to scope the problem?
- Class identification — Can we figure out the right classes and their responsibilities?
- Relationships — Do we understand when to use inheritance vs composition?
- Design patterns — Can we apply the right pattern for the right situation?
- Extensibility — Is our design easy to extend without modifying existing code?
- Clean code — Are our naming conventions, method sizes, and class structures sensible?
The biggest red flag? A class that does everything. If we have a ParkingLotManager that handles payments, assigns spots, manages vehicles, AND sends notifications — that’s a problem.
The Typical LLD Interview Format
Most LLD rounds follow this pattern in a 45-60 minute window:
First 5-10 minutes: Requirements The interviewer gives us a vague problem like “Design a parking lot system.” We ask clarifying questions. How many floors? What vehicle types? Do we need payment? Real-time availability?
Next 10-15 minutes: Class Design We identify the main classes, their attributes, and methods. We might sketch a UML diagram or just list them out. This is where we show we understand OOP and SOLID principles.
Remaining 20-30 minutes: Code We write the core classes. Not the entire system — just enough to show the design works. The interviewer might ask us to extend it (e.g., “now add motorcycle support”) to test how flexible our design is.
Key Skills We Need
Before diving into design patterns and interview questions, we need solid foundations:
- OOP fundamentals — the four pillars (encapsulation, abstraction, inheritance, polymorphism)
- SOLID principles — the five rules that keep our code flexible
- Composition vs Inheritance — knowing when to use “has-a” vs “is-a”
- Design patterns — common solutions to common problems (Strategy, Observer, Factory, etc.)
- UML basics — enough to sketch class diagrams quickly
That’s exactly what we’ll cover in this collection. We start with OOP foundations, move through SOLID, explore major design patterns, and then tackle real LLD interview questions like Parking Lot, Elevator System, and more.
The goal isn’t to memorize designs — it’s to build the intuition to decompose any problem into clean, extensible classes.