AI InterviewSearch…Search problems, topics, or pages…Ctrl KGet started
Skip to content
LLD notes

Low-Level Design · Note 1 of 9

Introduction to Low-Level Design

Beginner · 5 min read · updated 14 November 2026

Quick answer

What is low-level design in a software interview?

Low-level design is the round where you turn a small problem, such as a parking lot or an LRU cache, into classes, their relations and working code. You clarify requirements, pick entities from the nouns and methods from the verbs, draw a class diagram, apply patterns where change is expected, write the code and walk a use case through it. Interviewers grade extensibility, SOLID and readable code.

On this page
  1. What the round asks
  2. HLD vs LLD
  3. The approach
  4. Growing the model
  5. What interviewers grade
  6. Interview questions
  7. Common questions

Low-level design (LLD) turns a small, concrete problem into classes, relations and working code. Many companies run it as a machine-coding round: about an hour to design and code.

What the round asks

  • A bounded problem: parking lot, elevator, LRU cache, movie booking, splitwise.
  • A class diagram, then code that runs one or two use cases.
  • Discussion: "what if we add a new vehicle type?", "what if two users book the same seat?".

HLD vs LLD

High-level designLow-level design
UnitServices, databases, queuesClasses, interfaces, methods
QuestionWhat runs where, how it scalesHow the code is structured
OutputBox-and-arrow architectureClass diagram and code
Graded onScale, availability, trade-offsExtensibility, SOLID, clarity
From high-level design to low-level design

High-level design draws services, databases and the arrows between them. It answers what runs where and how the pieces talk.

0:01 / 0:12Step 1 of 4
Transcript · 4 steps

The approach

  1. Clarify requirements: use cases, actors, limits, what is out of scope.
  2. Find entities and behaviours: nouns become classes, verbs become methods.
  3. Draw the class diagram: fields and methods per class.
  4. Add relations: inheritance, composition, association, with multiplicity.
  5. Apply patterns where a requirement is likely to change.
  6. Write the code: core classes first, then a small main.
  7. Walk a use case through the code to prove it works.
Nouns become classes, verbs become methods

Start from the requirement exactly as the interviewer gave it. Read it slowly: the nouns, the verbs and the word has are the raw material of the design.

0:01 / 0:13Step 1 of 4
Transcript · 4 steps
  • An actor (driver, admin) is outside the system; it calls methods, it is not a class.
  • Put a method on the class that owns the data it needs.

Growing the model

Start from the class the use cases enter through, then add one class at a time.

A parking-lot model, one class at a time

Begin with the class the use cases enter through: ParkingLot, with park and leave as its public methods. Everything else hangs off it.

0:01 / 0:15Step 1 of 5
Transcript · 5 steps
  • Composition when the part dies with the whole (floor in a lot).
  • Abstract class or interface where new kinds will arrive (vehicles).
  • Keep each class small: one reason to change (SOLID).
Walking park(car) through the classes
F1: bike spot free, car spot taken · F2: two free car spots

The driver arrives: the gate calls park(car) on the lot. Walking one use case through the classes is how you prove the design works.

0:01 / 0:18Step 1 of 7
Transcript · 7 steps

What interviewers grade

  • Extensibility: a new type is a new class, not a new if.
  • SOLID: small classes, interfaces at the points of change.
  • Readable code: clear names, no god class, no global state.
  • Correctness: the use case runs; edge cases (lot full, double booking) are handled.
  • Communication: you state assumptions and trade-offs aloud.

Interview questions

  • How is LLD different from HLD? HLD places services and data stores; LLD designs the classes inside one of them.
  • Where do you start? With questions: use cases, actors and scope, before any class.
  • How do you find the classes? Nouns in the agreed requirements; verbs become methods.
  • When do you use a design pattern? When a named requirement is likely to change, such as pricing rules or notification targets.
  • What makes a design extensible? New behaviour arrives as a new class behind an existing interface.

Next: UML Class Diagrams for LLD Interviews

Common questions

What is the difference between HLD and LLD?

High-level design decides the services, databases, caches and queues of a whole system and how they talk. Low-level design zooms into one component and decides its classes, interfaces, relations and method signatures, usually down to running code.

What is a machine-coding round?

It is a low-level design round where you must also write working code, typically in 60 to 120 minutes, for a problem such as a parking lot, a snake and ladder game or a splitwise clone. The code is judged on structure and extensibility as much as on whether it runs.

How do I start a low-level design question?

Ask questions before drawing anything. Pin down the use cases, the actors, the scale of each entity and what is out of scope, then list the nouns and verbs in the agreed requirements. Those become your first classes and methods.

Which design patterns matter most for LLD interviews?

Strategy, Observer, State, Factory, Singleton and Decorator come up most because LLD problems keep needing swappable rules, notifications, state machines and object creation. Use a pattern when it solves a change you can name, not to show it off.

Do I need UML for an LLD interview?

You need enough UML to draw a class diagram quickly: a box per class with fields and methods, and lines for inheritance, interfaces, composition and association. Nobody grades notation details, but a clear diagram makes your design easy to follow and discuss.

Low-Level Design (LLD) Interview: What It Is, How

What a low-level design or machine-coding round asks, how LLD differs from HLD, a seven-step approach from requirements to code, and what gets graded.

What is low-level design in a software interview?

Low-level design is the round where you turn a small problem, such as a parking lot or an LRU cache, into classes, their relations and working code. You clarify requirements, pick entities from the nouns and methods from the verbs, draw a class diagram, apply patterns where change is expected, write the code and walk a use case through it. Interviewers grade extensibility, SOLID and readable code.

Low-level design (LLD) turns a small, concrete problem into classes, relations and working code. Many companies run it as a machine-coding round: about an hour to design and code.

What the round asks

  • A bounded problem: parking lot, elevator, LRU cache, movie booking, splitwise.
  • A class diagram, then code that runs one or two use cases.
  • Discussion: "what if we add a new vehicle type?", "what if two users book the same seat?".

HLD vs LLD

High-level designLow-level design
UnitServices, databases, queuesClasses, interfaces, methods
QuestionWhat runs where, how it scalesHow the code is structured
OutputBox-and-arrow architectureClass diagram and code
Graded onScale, availability, trade-offsExtensibility, SOLID, clarity
ClientAPI gatewayParking serviceDatabaseParking service, low-levelParkingService+ enter(v): Ticket+ exit(t): intParkingLot+ freeSpots(v)«interface»SpotPicker+ pick(v): SpotNearestFirst+ pick(v): Spot
From high-level design to low-level design.
  1. High-level design draws services, databases and the arrows between them. It answers what runs where and how the pieces talk.
  2. A low-level design round picks one of those boxes, here the parking service, and asks what code lives inside it.
  3. Inside the box are classes: a ParkingService that use cases call, holding the ParkingLot model with its floors and spots.
  4. How a spot is chosen will change, so it hides behind a SpotPicker interface; NearestFirst is today's rule, and a new rule is a new class.

The approach

  1. Clarify requirements: use cases, actors, limits, what is out of scope.
  2. Find entities and behaviours: nouns become classes, verbs become methods.
  3. Draw the class diagram: fields and methods per class.
  4. Add relations: inheritance, composition, association, with multiplicity.
  5. Apply patterns where a requirement is likely to change.
  6. Write the code: core classes first, then a small main.
  7. Walk a use case through the code to prove it works.
Aparking lothasfloors; eachfloorhasspots.Avehicleparksin a freespotthatfitsit,and gets aticket. Thedriverpaystheticketon exit.ParkingLot+ park(v): TicketFloorSpot+ fits(v): boolVehicleTicket+ pay(): void"has" → a relation between two classes
Nouns become classes, verbs become methods.
  1. Start from the requirement exactly as the interviewer gave it. Read it slowly: the nouns, the verbs and the word has are the raw material of the design.
  2. The nouns become candidate classes: ParkingLot, Floor, Spot, Vehicle, Ticket. The driver is a noun too, but an actor outside the system, so it gets no class.
  3. The verbs become methods, each on the class that owns the data it needs: park on ParkingLot, fits on Spot, pay on Ticket.
  4. Has marks a relation: a lot has floors, a floor has spots. Both are compositions here, because a floor does not exist apart from its lot.
  • An actor (driver, admin) is outside the system; it calls methods, it is not a class.
  • Put a method on the class that owns the data it needs.

Growing the model

Start from the class the use cases enter through, then add one class at a time.

ParkingLot- floors: Floor[]+ park(v): Ticket+ leave(t): intFloor- spots: Spot[]+ find(v): SpotSpot- size: Size- parked: Vehicle+ fits(v): bool«abstract»Vehicle- plate: String+ size(): SizeCar+ size(): SizeBike+ size(): SizeTicket- spot: Spot- inAt: int+ fee(outAt): int1..*1..*0..1creates
A parking-lot model, one class at a time.
  1. Begin with the class the use cases enter through: ParkingLot, with park and leave as its public methods. Everything else hangs off it.
  2. A lot has one or more floors. Floors never exist without their lot, so it is a composition (filled diamond) with multiplicity 1..*.
  3. Each floor has spots, again a composition. A spot knows its size and which vehicle, if any, is parked in it.
  4. A spot holds 0..1 Vehicle. Vehicle is abstract, and Car and Bike extend it, so a truck later is a new class rather than an edit to Spot.
  5. park creates a Ticket that remembers its spot and entry time. Its fee rule, 20 an hour or part of one, charges 60 for 9:00 to 11:30.
  • Composition when the part dies with the whole (floor in a lot).
  • Abstract class or interface where new kinds will arrive (vehicles).
  • Keep each class small: one reason to change (SOLID).
GateParkingLotF1: FloorF2: FloorF2-1: Spotpark(car)find(car)nullfind(car)F2-1assign(car)Ticket(F2-1)
Walking park(car) through the classes. Example: F1: bike spot free, car spot taken · F2: two free car spots
  1. The driver arrives: the gate calls park(car) on the lot. Walking one use case through the classes is how you prove the design works.
  2. The lot asks floor F1 for a free spot that fits a car. The lot does not search spots itself; each floor owns its own.
  3. F1's only car spot is taken and its free spot is for bikes, so F1 answers null and the lot moves on.
  4. The lot asks floor F2 the same question with the same call. Floors are interchangeable to the lot.
  5. F2 answers with spot F2-1, its first free car spot.
  6. The lot calls assign(car) on F2-1, so the spot now records which vehicle it holds and is no longer free.
  7. The lot creates a Ticket for F2-1 and returns it to the gate. Seven calls, each on the class that owns the data it touches.

What interviewers grade

  • Extensibility: a new type is a new class, not a new if.
  • SOLID: small classes, interfaces at the points of change.
  • Readable code: clear names, no god class, no global state.
  • Correctness: the use case runs; edge cases (lot full, double booking) are handled.
  • Communication: you state assumptions and trade-offs aloud.

Interview questions

  • How is LLD different from HLD? HLD places services and data stores; LLD designs the classes inside one of them.
  • Where do you start? With questions: use cases, actors and scope, before any class.
  • How do you find the classes? Nouns in the agreed requirements; verbs become methods.
  • When do you use a design pattern? When a named requirement is likely to change, such as pricing rules or notification targets.
  • What makes a design extensible? New behaviour arrives as a new class behind an existing interface.

Next: UML Class Diagrams for LLD Interviews

Common questions

What is the difference between HLD and LLD?

High-level design decides the services, databases, caches and queues of a whole system and how they talk. Low-level design zooms into one component and decides its classes, interfaces, relations and method signatures, usually down to running code.

What is a machine-coding round?

It is a low-level design round where you must also write working code, typically in 60 to 120 minutes, for a problem such as a parking lot, a snake and ladder game or a splitwise clone. The code is judged on structure and extensibility as much as on whether it runs.

How do I start a low-level design question?

Ask questions before drawing anything. Pin down the use cases, the actors, the scale of each entity and what is out of scope, then list the nouns and verbs in the agreed requirements. Those become your first classes and methods.

Which design patterns matter most for LLD interviews?

Strategy, Observer, State, Factory, Singleton and Decorator come up most because LLD problems keep needing swappable rules, notifications, state machines and object creation. Use a pattern when it solves a change you can name, not to show it off.

Do I need UML for an LLD interview?

You need enough UML to draw a class diagram quickly: a box per class with fields and methods, and lines for inheritance, interfaces, composition and association. Nobody grades notation details, but a clear diagram makes your design easy to follow and discuss.

← Low-Level Design notes · UML Class Diagrams for LLD Interviews →