Approaching a System Design Interview: HLD, LLD & the RESHADED Framework
A repeatable structure for answering any open-ended "design X" prompt, from a parking-lot pricing engine to a global chat app.
Beginner
| High-Level Design (HLD) | Low-Level Design (LLD) | |
|---|---|---|
| Focus | The overall architecture: which services exist, how they talk, which databases back them. | The internals of one subsystem: classes, interfaces, algorithms. |
| Example question | "Design a ride-hailing app." | "Design the class structure for the fare-pricing engine." |
| Typical output | A diagram of services, data stores, and the request flow between them. | Interfaces, class diagrams, and sometimes real code. |
| Letter | Step | What it covers |
|---|---|---|
| R | Requirements | Functional and non-functional requirements — what the service does and how well it must do it. |
| E | Estimation | Back-of-the-envelope numbers for servers, storage, and bandwidth at the stated scale. |
| S | Storage schema | The data model: what tables/collections exist and what fields they hold (optional — not every problem needs this level of detail). |
| H | High-level design | The main components and how they connect, driven by the functional requirements. |
| A | API design | The interfaces client and internal callers actually use — a direct translation of the functional requirements. |
| D | Detailed design | Where the high-level design's limitations get addressed — the interesting trade-offs live here. |
| E | Evaluation | Explicitly checking the design against the non-functional requirements, and naming the trade-offs made. |
| D | Distinctive component | The one part of this specific problem that isn't boilerplate — fraud detection for a payments app, concurrency control for a collaborative doc editor. |