Skip to content
Preptima

Low-Level Design & Object-Oriented Design

Low-level design is the round where you produce classes, interfaces and interactions inside one service rather than infrastructure boxes. It scores where you put boundaries, what you name things, how the design absorbs the next requirement, and whether the code runs before the timer stops.

High demand23 min readSoftware Engineer, Senior Software Engineer, Backend Engineer, Android or iOS Engineer, Technical LeadUpdated 2026-07-27

Assumes you know: Fluency in one object-oriented language you can write without an IDE prompting you, Comfort defining a class, an interface and a unit test unaided, Having read someone else's codebase and had to extend it

Overview

What this area actually covers

Low-level design, usually written LLD and sometimes called object-oriented design, is the design of the inside of one program. You are given a problem small enough to hold in your head — a parking lot, a lift bank, a vending machine, a split-the-bill app, a cache with expiry — and asked to produce the types: which classes exist, what each owns, what the interfaces between them look like, and what happens as a request travels through them. The deliverable is a class diagram with method signatures, or in a machine-coding round, working code.

The subject matter is class boundaries and the vocabulary for discussing them: encapsulation, which is about which invariants a class is responsible for rather than about writing getters; polymorphism, which is how you delete a switch that grows every quarter; composition versus inheritance, a decision you justify from the requirements rather than from a slogan; cohesion and coupling, which every other heuristic here is a proxy for; SOLID, useful as diagnostic questions and misleading as rules; design patterns, which are names for shapes that recur; and concurrency within one component, meaning what is immutable, what is guarded, and by which lock.

Two things get wrongly bundled in. Distributed architecture — sharding, replication, queues, regions — belongs to the system design round; LLD lives inside one process, and if your answer to "two people book the same seat" is "Kafka", you have left the room you were asked to design. Algorithmic problem-solving belongs to the DSA round: machine-coding problems are deliberately shallow there because the difficulty is meant to be structural, and spending twenty of your ninety minutes optimising a lookup over four elements is a misread of the exercise.

Where to go next

Now practise it

35 interview questions in Low-Level Design & OOD, each with the rubric the interviewer is scoring against.

All LLD questions
low-level-designobject-oriented-designdesign-patternsmachine-codingcode-quality