Entity naming
Are the classes right? Did you spot the implicit objects hiding in the problem statement?
The low-level design round is its own kind of interview. Same hour, same whiteboard, a different skill from the coding round and from system design. Nobody asks you to sort an array or to shard a database. Instead you take a small, concrete problem — a parking lot, a vending machine, an LRU cache — and turn it into classes: name the right entities, draw the relationships, model the state machine, and say out loud which edge cases you would handle. The seven pages below each work one problem the way a strong candidate would in 45 minutes — the requirements, the classes, the interfaces, the watch-outs — so you can practise the shape of the answer, not just the trivia.
Each page is roughly 15–20 minutes of careful reading — the requirements, the class diagram, the interfaces, and the edge cases that catch most candidates.
Constant-time get and put with capacity eviction. The interview classic — hash map plus doubly-linked list.
Multi-level lot, mixed vehicle sizes, ticketing. Tests entity modelling, polymorphism, the assign-a-spot algorithm.
Card / Deck / Hand / Game. Tests enums, generics, shuffle/deal, and how to compose pluggable games on top.
Bucket array plus collision chains. Tests memory layout, load factor, the rehash algorithm.
Fresher → TL → Manager → Director escalation. Tests responsibility chains and skill-based routing.
Users, rooms, messages, presence. Tests observers, threading, persistence boundaries.
Insert coin → select item → dispense. Tests the state-machine pattern in its purest form.
Are the classes right? Did you spot the implicit objects hiding in the problem statement?
Each class does one thing. ParkingLot should not also model Payment.
Adding a vehicle type or a card suit should extend the design, not edit existing classes.
Long chains of isinstance checks signal a missing base class or interface.
If a thing has states, draw the state machine. "It runs unless it doesn't" is not a state machine.
Naming where threads contend matters more than a flawless lock. "One lock here; per-shard in production" is usually enough.
The design patterns you reach for here — state machine, observer, chain of responsibility — come straight from the patterns catalogue. And the moment you zoom out from "classes inside one service" to "services across a network", you're in system design. These two are the natural pages to read alongside this one.