What is Low-Level Design (LLD) and what does an LLD interview expect you to do?
Fast recall
Quick revision
Core answer
Whether you understand LLD is about concrete class design and OOP relationships, not vague architectural diagrams or high-level system components.
Confusing LLD with High-Level Design (HLD) and talking about databases, load balancers, or microservices instead of class structures and methods.
Immediately clarify requirements by asking about scale, edge cases, and core features before jumping into classes—shows you design intentionally, not randomly.
Interview-ready guide
Interview answer
Low-level design is the process of designing the internal structure of a single component — its classes, interfaces, the fields and methods they hold, and crucially the relationships between them. The easiest way to place it is against high-level design. HLD operates at the system level: which services exist, what databases they use, how they talk over APIs, how you scale and load-balance. LLD zooms all the way in to one of those services and asks, what classes live inside it and how do they collaborate.
So in an LLD interview, when someone says design a parking lot or a library system, what they want me to produce is a class diagram and some key Java skeletons — the actual classes with their fields and method signatures — built using object-oriented principles like encapsulation, inheritance, and composition, plus a couple of design patterns where they fit naturally.
The thing I'd emphasise is that the interviewer is watching my process as much as the final answer. They want to see me clarify the requirements first, then identify entities, assign each a single responsibility, map the relationships, and only then reach for patterns. A common mistake is drifting into HLD territory — talking about sharding and caching — when the question is really about clean class structure. Another is jumping straight into writing classes without scoping what we're actually building. LLD is fundamentally about translating a problem into well-structured, maintainable objects.
What is Low-Level Design (LLD) and what does an LLD interview expect you to do
Direct Answer
Low-Level Design (LLD) is the process of designing the internal structure of a system component by defining classes, interfaces, their relationships, and interactions. In an LLD interview, you're expected to translate a problem statement (like designing a parking lot or library management system) into a working class diagram with proper object-oriented design principles, showing how objects collaborate to fulfill requirements.
Deep Dive & Architecture
LLD turns one requirement into code-level structure
High-level design chooses services, data stores, and communication boundaries. Low-level design opens one component and defines its classes, interfaces, important fields, public methods, relationships, and rules. For a parking lot, the output might include ParkingLot, ParkingFloor, ParkingSpot, Vehicle, ParkingTicket, and a pricing interface.
The interview expects a traceable process
Clarify the main use cases and constraints, identify candidate objects, assign each responsibility, draw the important relationships, and walk a normal flow such as park and unpark. Then write skeleton code for the decisions that matter and explain how the model handles an error or extension.
Patterns support the design; they are not the deliverable
A Strategy is useful when pricing rules vary, but adding one implementation for every imagined future is noise. A good answer is internally consistent: method calls match the diagram, state changes protect the rules, and every abstraction has a reason. The expected depth depends on the prompt, so confirm scope instead of assuming a fixed checklist.
Code Example
// LLD deliverable: classes, fields, signatures, relationships
abstract class Vehicle { String plate; abstract SpotSize requiredSize(); }
class Car extends Vehicle { SpotSize requiredSize() { return SpotSize.REGULAR; } }
class ParkingLot { // HAS-A floors (composition)
private List<ParkingFloor> floors;
Optional<ParkingTicket> park(Vehicle v); // key behaviour
BigDecimal unpark(ParkingTicket t);
}
The output is concrete classes and signatures — not boxes-and-arrows infrastructure (that's HLD).
Common Mistakes & Pitfalls
- Confusing LLD with HLD — talking load balancers and sharding when asked for classes.
- Jumping to code without clarifying — always scope the requirements first.
- Listing classes with no relationships — the connections are the design.
- Ignoring OOP principles — LLD is judged on encapsulation, SRP, and sensible patterns.
Check your understanding
Answer these without looking back at the article.
- What is Low-Level Design (LLD) and why does it exist? It translates high-level architecture into concrete class structures, relationships, and APIs that a developer can directly implement, bridging the gap between architecture and code.
- What is the step-by-step process for solving an LLD interview question?
- How do SOLID principles apply in LLD design?
Looking for a structured roadmap?
Every module on this page is also part of the full Java backend interview track.