System design fundamentals
HLD (High Level Design) decides which services a system is made of and how they work together at scale. LLD (Low Level Design) decides the classes, interfaces and patterns inside one of those services. Same product, two zoom levels - and in interviews, two separate rounds.
| HLD | LLD | |
|---|---|---|
| Full form | High Level Design | Low Level Design |
| Also called | System design, architecture | Object-oriented design, machine coding |
| Scope | A whole system of services | The inside of one service or module |
| Building blocks | Services, databases, caches, queues, CDNs, load balancers | Classes, interfaces, enums, design patterns |
| Main question | Will it scale and survive failure? | Is it correct, readable and easy to extend? |
| Output in an interview | An architecture diagram and the trade-offs behind it | A class diagram or working code |
| Graded on | Requirements, estimates, data model, scaling, trade-offs | Modelling, SOLID, patterns, extensibility, code quality |
| Typical round | 45-60 minutes of discussion at a whiteboard | 45-90 minutes, often with code that must run |
| Weighted most at | SDE-2, senior and staff | SDE-1 and SDE-2, and machine coding rounds |
High level design is the architecture of a system. It answers what the components are, what each one owns and how a request travels between them: an API gateway in front of a set of services, which databases hold which data, where caches sit, what goes through a queue, and what a CDN serves. It is driven by numbers - users, requests per second, data volume - because those numbers decide whether one database is enough or the data has to be sharded.
An HLD is judged on non-functional properties: scalability, availability, latency, consistency and cost. Most of the interesting decisions are trade-offs, such as accepting eventual consistency in a feed so that it stays fast.
Low level design is the structure of the code inside one component. It names the classes and what each is responsible for, the interfaces between them, the relationships (composition, inheritance) and the design patterns that make the code easy to change - a Strategy for pricing rules, a State machine for an elevator, an Observer for notifications.
An LLD is judged on correctness and how well it absorbs change: SOLID principles, clear boundaries, no duplicated logic, and whether a new requirement lands as a new class rather than an edit to five existing ones.
Movie, Theatre, Screen, Show, Seat and Booking, with a seat-status enum.SeatLockProvider interface, so the locking strategy can change without touching booking logic.PricingStrategy for seat categories and surge pricing, added without editing Booking.Read both in full: the ticket booking system design (HLD) and the BookMyShow low level design.
Outside interviews, both are written documents, produced in that order.
For a plan, read how to prepare for a system design interview. To rehearse, practise HLD with an AI interviewer, practise LLD against hidden tests, or book a live 1:1 mock interview.
HLD stands for High Level Design and LLD for Low Level Design. In interviews, HLD is usually called system design, and LLD is often called object-oriented design or, when working code is required, a machine coding round.
Scope. HLD designs a whole system of services - which components exist, how data flows between them and how the system scales and fails. LLD designs the inside of one component - its classes, interfaces, relationships and the design patterns that hold them together, down to method signatures.
Both are system design, but when an interview says "system design round" it almost always means HLD. Low level design is normally named separately as an LLD, OOD or machine coding round.
In a real project HLD comes first: the architecture is agreed, then each service gets a low level design. For interview preparation the order depends on level - freshers and SDE-1 candidates usually meet LLD and DSA first, while SDE-2 and senior loops weight HLD more heavily.
Sometimes, but smaller ones - a URL shortener or a rate limiter - graded on clear requirements and basic scaling ideas. Large distributed designs are expected from SDE-2 upwards. Freshers are far more likely to face an LLD or machine coding round.
LLD. A machine coding round is a low level design problem where the deliverable is working code rather than a diagram: 60 to 90 minutes to build an extensible solution, usually followed by a new requirement to add.