Low-Level Design
Object-oriented design, design patterns, concurrency, and machine-coding case studies.
What is Low-Level Design?
Low-Level Design (LLD) is the bridge between architecture and code. While HLD describes the components of a system and how they communicate, LLD describes how individual components are built — class structure, object relationships, data structures, algorithms, and concurrency.
In interviews, LLD rounds typically ask you to design the classes and methods for a focused problem (parking lot, elevator, splitwise, chat) in 45–60 minutes.
HLD vs LLD
| Aspect | HLD | LLD |
|---|---|---|
| Focus | System architecture | Class/object design |
| Level | Services, databases, queues | Classes, methods, fields |
| Output | Block diagrams, data flow | Class diagrams, sequence diagrams |
| Tools | UML deployment, C4 | UML class, sequence, state |
| Scale | Distributed systems | Single service / module |
| Concerns | Scalability, availability | Extensibility, testability |
Sections
Foundations
OOP, SOLID, UML, design principles
Creational Patterns
Singleton, Factory, Builder, ...
Structural Patterns
Adapter, Decorator, Facade, ...
Behavioral Patterns
Strategy, Observer, State, ...
Concurrency
Thread safety, locks, pools
Case Studies
Machine-coding problems
Recommended Reading Order
How to Approach an LLD Interview
- Clarify requirements — functional and non-functional. Don't assume.
- Identify entities — nouns become classes; verbs often become methods.
- Define relationships —
is-a(inheritance) vshas-a(composition). - Pick patterns deliberately — name the pattern you're using and why.
- Handle concurrency — call out shared state, locks, atomicity.
- Discuss extensibility — how would you add a new vehicle type / payment method?
- Edge cases — invalid input, exhausted resources, partial failure.