Join Free Newsletter
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](https://algomaster.io/learn/lld)
## 🧱 OOP Fundamentals
- [Classes and Objects](https://algomaster.io/learn/lld/classes-and-objects)
- [Enums](https://algomaster.io/learn/lld/enums)
- [Interfaces](https://algomaster.io/learn/lld/interfaces)
- [Encapsulation](https://algomaster.io/learn/lld/encapsulation)
- [Abstraction](https://algomaster.io/learn/lld/abstraction)
- [Inheritance](https://algomaster.io/learn/lld/inheritance)
- [Polymorphism](https://algomaster.io/learn/lld/polymorphism)
## 🔗 Class Relationships
- [Association](https://algomaster.io/learn/lld/association)
- [Aggregation](https://algomaster.io/learn/lld/aggregation)
- [Composition](https://algomaster.io/learn/lld/composition)
- [Dependency](https://algomaster.io/learn/lld/dependency)
## 🧭 Design Principles
- [DRY Principle](https://algomaster.io/learn/lld/dry)
- [YAGNI Principle](https://algomaster.io/learn/lld/yagni)
- [KISS Principle](https://algomaster.io/learn/lld/kiss)
- [SOLID Principles with Pictures](https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898)
- [SOLID Principles with Code](https://blog.algomaster.io/p/solid-principles-explained-with-code)
## 🧩 Design Patterns
| **Creational Patterns** | **Structural Patterns** | **Behavioral Patterns** |
| ----------------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| [Singleton](https://algomaster.io/learn/lld/singleton) | [Adapter](https://algomaster.io/learn/lld/adapter) | [Iterator](https://algomaster.io/learn/lld/iterator) |
| [Factory Method](https://algomaster.io/learn/lld/factory-method) | [Bridge](https://algomaster.io/learn/lld/bridge) | [Observer](https://algomaster.io/learn/lld/observer) |
| [Abstract Factory](https://algomaster.io/learn/lld/abstract-factory) | [Composite](https://algomaster.io/learn/lld/composite) | [Strategy](https://algomaster.io/learn/lld/strategy) |
| [Builder](https://algomaster.io/learn/lld/builder) | [Decorator](https://algomaster.io/learn/lld/decorator) | [Command](https://algomaster.io/learn/lld/command) |
| [Prototype](https://algomaster.io/learn/lld/prototype) | [Facade](https://algomaster.io/learn/lld/facade) | [State](https://algomaster.io/learn/lld/state) |
| | [Flyweight](https://algomaster.io/learn/lld/flyweight) | [Template Method](https://algomaster.io/learn/lld/template-method) |
| | [Proxy](https://algomaster.io/learn/lld/proxy) | [Visitor](https://algomaster.io/learn/lld/visitor) |
| | | [Mediator](https://algomaster.io/learn/lld/mediator) |
| | | [Memento](https://algomaster.io/learn/lld/memento) |
| | | [Chain of Responsibility](https://algomaster.io/learn/lld/chain-of-responsibility) |
## 🗂️ UML
- [Class Diagram](https://algomaster.io/learn/lld/class-diagram)
- [Use Case Diagram](https://algomaster.io/learn/lld/use-case-diagram)
- [Sequence Diagram](https://algomaster.io/learn/lld/sequence-diagram)
- [Activity Diagram](https://algomaster.io/learn/lld/activity-diagram)
- [State Machine Diagram](https://algomaster.io/learn/lld/state-machine-diagram)
## ⏱️ Concurrency and Multi-threading Concepts
### Concurrency 101
- [Introduction to Concurrency](https://algomaster.io/learn/concurrency-interview/introduction-to-concurrency)
- [Concurrency vs Parallelism](https://algomaster.io/learn/concurrency-interview/concurrency-vs-parallelism)
- [Processes vs Threads](https://algomaster.io/learn/concurrency-interview/processes-vs-threads)
- [Thread Lifecycle and States](https://algomaster.io/learn/concurrency-interview/thread-lifecycle-and-states)
- [Race Conditions and Critical Sections](https://algomaster.io/learn/concurrency-interview/race-conditions-and-critical-sections)
### Synchronization Primitives
- [Mutex (Mutual Exclusion)](https://algomaster.io/learn/concurrency-interview/mutex)
- [Semaphores](https://algomaster.io/learn/concurrency-interview/semaphores)
- [Condition Variables](https://algomaster.io/learn/concurrency-interview/condition-variables)
- [Coarse-grained vs Fine-grained Locking](https://algomaster.io/learn/concurrency-interview/coarse-vs-fine-grained-locking)
- [Reentrant Locks](https://algomaster.io/learn/concurrency-interview/reentrant-locks)
- [Try-Lock and Timed Locking](https://algomaster.io/learn/concurrency-interview/try-lock-and-timed-locking)
- [Compare-and-Swap (CAS)](https://algomaster.io/learn/concurrency-interview/compare-and-swap)
### Concurrency Challenges
- [Deadlock](https://algomaster.io/learn/concurrency-interview/deadlock)
- [Livelock](https://algomaster.io/learn/concurrency-interview/livelock)
### Concurrency Patterns
- [Signaling Pattern](https://algomaster.io/learn/concurrency-interview/signaling-pattern)
- [Thread Pool Pattern](https://algomaster.io/learn/concurrency-interview/thread-pool-pattern)
- [Producer-Consumer Pattern](https://algomaster.io/learn/concurrency-interview/producer-consumer-pattern)
- [Reader-Writer Pattern](https://algomaster.io/learn/concurrency-interview/reader-writer-pattern)
## ✅ [How to Answer a LLD Interview Problem](https://blog.algomaster.io/p/how-to-answer-a-lld-interview-problem)
## 💻 Low Level Design Interview Problems
### Easy Problems
- [Design Parking Lot](problems/parking-lot.md)
- [Design Stack Overflow](problems/stack-overflow.md)
- [Design a Vending Machine](problems/vending-machine.md)
- [Design Logging Framework](problems/logging-framework.md)
- [Design Traffic Signal Control System](problems/traffic-signal.md)
- [Design Coffee Vending Machine](problems/coffee-vending-machine.md)
- [Design a Task Management System](problems/task-management-system.md)
### Medium Problems
- [Design ATM](problems/atm.md)
- [Design LinkedIn](problems/linkedin.md)
- [Design LRU Cache](problems/lru-cache.md)
- [Design Tic Tac Toe Game](problems/tic-tac-toe.md)
- [Design Pub Sub System](problems/pub-sub-system.md)
- [Design an Elevator System](problems/elevator-system.md)
- [Design Car Rental System](problems/car-rental-system.md)
- [Design an Online Auction System](problems/online-auction-system.md)
- [Design Hotel Management System](problems/hotel-management-system.md)
- [Design a Digital Wallet Service](problems/digital-wallet-service.md)
- [Design Airline Management System](problems/airline-management-system.md)
- [Design a Library Management System](problems/library-management-system.md)
- [Design a Social Network like Facebook](problems/social-networking-service.md)
- [Design Restaurant Management System](problems/restaurant-management-system.md)
- [Design a Concert Ticket Booking System](problems/concert-ticket-booking-system.md)
### Hard Problems
- [Design CricInfo](problems/cricinfo.md)
- [Design Splitwise](problems/splitwise.md)
- [Design Chess Game](problems/chess-game.md)
- [Design a Snake and Ladder game](problems/snake-and-ladder.md)
- [Design Ride-Sharing Service like Uber](problems/ride-sharing-service.md)
- [Design Course Registration System](problems/course-registration-system.md)
- [Design Movie Ticket Booking System](problems/movie-ticket-booking-system.md)
- [Design Online Shopping System like Amazon](problems/online-shopping-service.md)
- [Design Online Stock Brokerage System](problems/online-stock-brokerage-system.md)
- [Design Music Streaming Service like Spotify](problems/music-streaming-service.md)
- [Design Online Food Delivery Service like Swiggy](problems/food-delivery-service.md)
## ⏱️ Concurrency and Multi-threading Problems
- [Print FooBar Alternately](https://algomaster.io/learn/concurrency-interview/print-foobar-alternately)
- [Print Zero Even Odd](https://algomaster.io/learn/concurrency-interview/print-zero-even-odd)
- [Fizz Buzz Multithreaded](https://algomaster.io/learn/concurrency-interview/fizz-buzz-multithreaded)
- [Building H2O Molecule](https://algomaster.io/learn/concurrency-interview/building-h2o)
- [Design Thread-Safe Cache with TTL](https://algomaster.io/learn/concurrency-interview/design-thread-safe-cache-with-ttl)
- [Design Concurrent HashMap](https://algomaster.io/learn/concurrency-interview/design-concurrent-hashmap)
- [Design Thread-Safe Blocking Queue](https://algomaster.io/learn/concurrency-interview/design-thread-safe-blocking-queue)
- [Design Concurrent Bloom Filter](https://algomaster.io/learn/concurrency-interview/design-concurrent-bloom-filter)
- [Multi-threaded Merge Sort](https://algomaster.io/learn/concurrency-interview/multi-threaded-merge-sort)
## 📇 Courses
- [Master LLD Interviews - AlgoMaster.io](https://algomaster.io/learn/lld/course-introduction)
- [Master Concurrency Interviews - AlgoMaster.io](https://algomaster.io/learn/concurrency-interview)
## 📚 Books
- [Head First Design Patterns](https://www.amazon.in/dp/9385889753)
- [Clean Code](https://www.amazon.in/dp/B001GSTOAM)
- [Refactoring: Improving the Design of Existing Code](https://www.amazon.in/dp/0134757599)
## 📩 Newsletter
- [AlgoMaster Newsletter](https://blog.algomaster.io/)
## Additional resources
- [Coursera - Object-Oriented Design](https://www.coursera.org/learn/object-oriented-design)
- [Coursera - Design Patterns](https://www.coursera.org/learn/design-patterns)
- [Github - Awesome Design Patterns](https://github.com/DovAmir/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.
---
If you find this resource helpful, please give it a star and share it with others!