awesome-low-level-design

Learn Low Level Design (LLD) and prepare for interviews using free resources.

23,846 stars Java Markdown Skills API Spec #awesome#design-patterns#interview#interview-practice
AI Prompts & Specs

Repository: ashishps1/awesome-low-level-design


Stars: 23366

README.md

<p align="center">
<img src="images/lld-repo-logo.png" width="350" height="200">
</p>
<p align="center">
<a href="https://blog.algomaster.io/">Join Free Newsletter</a>
</p>

This repository contains resources to learn Low Level Design (LLD) / Object Oriented Design (OOD) and prepare for interviews. It covers OOP fundamentals, design patterns, UML, concurrency and commonly asked interview questions.

👉 For a better and more comprehensive experience, checkout the LLD page at AlgoMaster.io

🧱 OOP Fundamentals


- Classes and Objects
- Enums
- Interfaces
- Encapsulation
- Abstraction
- Inheritance
- Polymorphism

🔗 Class Relationships


- Association
- Aggregation
- Composition
- Dependency

🧭 Design Principles


- DRY Principle
- YAGNI Principle
- KISS Principle
- SOLID Principles with Pictures
- SOLID Principles with Code

🧩 Design Patterns

| Creational Patterns | Structural Patterns | Behavioral Patterns |
| ----------------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| Singleton | Adapter | Iterator |
| Factory Method | Bridge | Observer |
| Abstract Factory | Composite | Strategy |
| Builder | Decorator | Command |
| Prototype | Facade | State |
| | Flyweight | Template Method |
| | Proxy | Visitor |
| | | Mediator |
| | | Memento |
| | | Chain of Responsibility |

🗂️ UML


- Class Diagram
- Use Case Diagram
- Sequence Diagram
- Activity Diagram
- State Machine Diagram

⏱️ Concurrency and Multi-threading Concepts


Concurrency 101


- Introduction to Concurrency
- Concurrency vs Parallelism
- Processes vs Threads
- Thread Lifecycle and States
- Race Conditions and Critical Sections

Synchronization Primitives


- Mutex (Mutual Exclusion)
- Semaphores
- Condition Variables
- Coarse-grained vs Fine-grained Locking
- Reentrant Locks
- Try-Lock and Timed Locking
- Compare-and-Swap (CAS)

Concurrency Challenges


- Deadlock
- Livelock

Concurrency Patterns


- Signaling Pattern
- Thread Pool Pattern
- Producer-Consumer Pattern
- Reader-Writer Pattern

How to Answer a LLD Interview Problem


<img src="images/interview-template.png" width="350" height="250">

💻 Low Level Design Interview Problems


Easy Problems

- Design Parking Lot
- Design Stack Overflow
- Design a Vending Machine
- Design Logging Framework
- Design Traffic Signal Control System
- Design Coffee Vending Machine
- Design a Task Management System

Medium Problems

- Design ATM
- Design LinkedIn
- Design LRU Cache
- Design Tic Tac Toe Game
- Design Pub Sub System
- Design an Elevator System
- Design Car Rental System
- Design an Online Auction System
- Design Hotel Management System
- Design a Digital Wallet Service
- Design Airline Management System
- Design a Library Management System
- Design a Social Network like Facebook
- Design Restaurant Management System
- Design a Concert Ticket Booking System

Hard Problems

- Design CricInfo
- Design Splitwise
- Design Chess Game
- Design a Snake and Ladder game
- Design Ride-Sharing Service like Uber
- Design Course Registration System
- Design Movie Ticket Booking System
- Design Online Shopping System like Amazon
- Design Online Stock Brokerage System
- Design Music Streaming Service like Spotify
- Design Online Food Delivery Service like Swiggy

⏱️ Concurrency and Multi-threading Problems

- Print FooBar Alternately
- Print Zero Even Odd
- Fizz Buzz Multithreaded
- Building H2O Molecule
- Design Thread-Safe Cache with TTL
- Design Concurrent HashMap
- Design Thread-Safe Blocking Queue
- Design Concurrent Bloom Filter
- Multi-threaded Merge Sort

📇 Courses


- Master LLD Interviews - AlgoMaster.io
- Master Concurrency Interviews - AlgoMaster.io

📚 Books


- Head First Design Patterns
- Clean Code
- Refactoring: Improving the Design of Existing Code

📩 Newsletter


- AlgoMaster Newsletter

Additional resources


- Coursera - Object-Oriented Design
- Coursera - Design Patterns
- Github - Awesome Design Patterns

🤝 Contributing


Contributions are welcome! If you'd like to add a new problem, improve existing content, or fix errors:
1. Fork the repository
2. Create a feature branch: git checkout -b feature/your-feature-name
3. Commit your changes: git commit -m 'Add some feature'
4. Push to the branch: git push origin feature/your-feature-name
5. Submit a pull request

Please make sure to update Readme files and documentation as appropriate.

---

<p align="center">
<i>If you find this resource helpful, please give it a star and share it with others!</i>
</p>