Notes / Low Level Design

Low Level Design

115 notes

Overview

Low-Level Design for MAANG Interviews

If this were a book, this page is the table of contents. For MAANG interviews, Low-Level Design should be learned in a progression from OOP fundamentals → SOLID → design principles → design patterns → UML → concurrency → case studies → interview problems. Unlike System Design, LLD is about writing maintainable, extensible, testable code while demonstrating strong object-oriented thinking — not about horizontal scale. Each Part below links out to the deeper OOP, pattern, and concurrency notes that already exist elsewhere in this wiki instead of duplicating them. Unwritten chapters are listed as stubs, not empty files.

Parts

00 — Foundations of Object-Oriented Design

The base vocabulary this whole book assumes: what LLD actually evaluates in an interview, and a fast OOP/object-relationship/lifecycle recap. See Object-Oriented Programming for the full-depth treatment of the four pillars and object relationships this Part only recaps.

01 — Object-Oriented Design Principles

SOLID and GRASP as the two principle sets that turn working code into well-designed code, plus the heuristics and clean-code habits interviewers expect alongside them. See SOLID Principles and GRASP Principles for the OOP-book treatment of the same two principle sets.

02 — UML and Modeling

The notation used to communicate a design during a whiteboard interview — class, sequence, state, activity, object, and package diagrams. See the UML appendix chapters in Object-Oriented Programming for the class/sequence/state/activity diagram reference notation.

03 — Design Patterns

The 23 canonical Gang-of-Four patterns grouped by intent, plus a selection guide for recognizing which pattern a problem is asking for. Full implementations already live in Patterns and Object-Oriented Programming — these chapters are the LLD-interview framing and recognition lens.

04 — Dependency Management

How objects get their collaborators — constructor/setter/interface injection, IoC, and the service-locator anti-pattern debate. See Dependency Management in Patterns for the full injection-style and IoC-container catalog.

05 — Error Handling & Reliability

Designing for the failure paths, not just the happy path — exception hierarchies, validation, defensive programming, and immutable value objects as a reliability tool.

06 — Concurrency Design

Where the interesting design decision is thread safety, not class hierarchy — locks, concurrent collections, producer-consumer, thread pools, deadlocks, race conditions, and lock-free design. See Multithreading and Deadlocks in Operating System for the underlying primitives, and Threading Patterns in Patterns for the pattern-level treatment.

07 — Domain Modeling

Identifying the entities, value objects, aggregates, and domain services a system is actually made of before writing any code. See Domain-Driven Design Basics in Object-Oriented Programming and Domain Modeling Patterns in Patterns for the full DDD tactical toolkit.

08 — API-Oriented Design

Designing the interface layer of a system — request/response shape, mapping, pagination, and error responses — as its own design discipline, independent of the domain model underneath it.

09 — Testing Design

Designing for testability, not testing as an afterthought — unit testing, mocking, DI for tests, and contract testing between collaborators.

10 — Refactoring

The concrete techniques for improving a design without changing its behavior — spotting code smells and applying named refactorings like Replace Conditional with Polymorphism.

11 — Classic LLD Interview Problems

The worked case studies every LLD prep list is built around — small enough to finish in a 45-minute round, rich enough to exercise real class relationships, state machines, and concurrency. See Coding Problems and Object-Oriented Design Interviews for the OOP-book framing of the same interview process, and Distributed Rate Limiter in System Design for the cross-service scale variant of the rate-limiter problem covered here at single-process scope.

12 — Advanced Object-Oriented Design

Architectural styles built on top of solid object modeling — Hexagonal and Clean Architecture, DDD at the essentials level, event-driven design, CQRS, event sourcing, and plug-in/extensible frameworks. See Layering Patterns for the Hexagonal/Clean/Onion catalog, and CQRS / Event Sourcing in Patterns for the full treatment of both.

13 — Performance-Oriented Design

Object-level performance work — memory optimization, pooling, lazy initialization, caching strategies, efficient collection choices, and profiling an OO application under load.

14 — MAANG Interview Masterclass

Where everything above gets applied under interview conditions — the repeatable framework, communication tactics, whiteboard technique, common mistakes, time management, and full mock-walkthrough transcripts. See Object-Oriented Design Interviews for the parallel process framing from the OOP side.

15 — Appendices

Quick-reference material — cheat sheets, decision matrices, an interview checklist, and per-language implementation guidelines for turning any chapter above into working code.

  1. OOP Foundations
  2. SOLID + GRASP
  3. UML Modeling
  4. Clean Code & Refactoring
  5. Design Patterns
  6. Dependency Injection & Testability
  7. Concurrency
  8. Domain Modeling
  9. Advanced Architectural Styles
  10. Solve 20–30 classic LLD interview problems
  11. Conduct timed mock interviews

This sequence aligns with interview expectations at companies such as Google, Meta, Amazon, Microsoft, Uber, and Stripe, where interviewers assess not only correctness but also extensibility, maintainability, abstraction quality, and the ability to reason about design trade-offs.

Metadata

AuthorAmit Singh
Scopelow-level-design
View as page →