Pattern

Low-level design

Model one system's classes, states, and interactions in code, with concurrency and extensibility as the real test.

What it is

Low-level design questions hand you a single, self-contained system — an elevator bank, a parking lot, a vending machine, a text editor's undo stack — and ask you to produce the actual classes, their responsibilities, and enough of the method bodies to prove the design works, rather than a service architecture with network boundaries. There's no back-of-envelope math and usually no distributed system; the skill being tested is object modeling: which entity owns which state, how a state machine advances on each input, and how the design stays open to the follow-up the interviewer is already planning to ask.

When it applies

Tells in the problem

The classic mistake

Jumping straight to a working set of classes for the happy path, and only discovering the real edge cases — the tail cell a growing snake can re-enter, the exact-change refund a vending machine must issue, the redo history that must be discarded after a fresh edit — when the interviewer asks about them, is the failure that comes up most often, rather than having the class design already accommodate them. This happens because a clean class diagram feels like "the design," when the actual interview signal is whether state transitions were thought through before code was written. Counter it by walking through every explicit edge case in the prompt's clarifying-questions section before finalizing a single class, and checking that each one maps to a specific state transition, not a special-cased if.

Questions to start with

All 8 low-level design questions

Problem statement, examples and hints are free on every page; the worked approach, solution and tests are in the company guides.

Free starter pack

13 must-tier questions with full solutions

Sign in with an email — no purchase — and read them in the full reader.

No password, no spam. One sign-in email; you can read the pack in the full reader.