Low Level Design
Like Tinder for your coding life,
But here, swipe right to get a
guranteed match ! 3 Months
rd
Solid
Principles
th
5 Months
st
1 Months Interview
Questions
OOPs
Concepts
Design
Patterns
th
4 Months
UML Basics &
Diagrams
nd
2 Months
Step 1
OOPS Concepts
Overview:
Object-oriented programming (OOP) is a programming
paradigm based on the concept of classes, objects and
their interactions. Learn OOPS concepts in detail in your
preferred programming language such as C++, Java, Python,
etc.
Key Concepts
Classes and Objects: Classes define the blueprint for
objects, which are instances of classes
Inheritance: It allows a class to inherit properties and
methods from another class, promoting code reuse
Encapsulation: Encapsulation hides the internal details
of an object and exposes a controlled interface
Abstraction: Abstraction focuses on defining a simplified
representation of an object, hiding complex
implementation details.
shared by HeyCoach 1
Polymorphism: It enables objects to take on multiple forms,
often achieved through method overriding and interfaces.
Resources
https://www.w3schools.com/cpp/cpp_oop.as
https://www.w3schools.com/java/java_oop.as
https://www.freecodecamp.org/news/object-oriented-
programming-in-python/
shared by HeyCoach 2
Step 2
UML Basics and Diagrams
Overview:
The Unified Modeling Language (UML) is a general-purpose
visual modeling language that is intended to provide a
standard way to visualize the design of a system.
Understand UML and types of diagrams used for
visualization.
Key Concepts
Use Case Diagram: Used to describe a set of user
scenarios, this diagram, illustrates the functionality
provided by the system
Class Diagram: Used to describe structure and
behaviour in the use cases, this diagram provides a
conceptual model of the system in terms of entities and
their relationships.
shared by HeyCoach 3
Activity Diagram: Used to model the functional flow-of-
control between two or more class objects
Sequence Diagram: Used to describe interactions
among classes in terms of an exchange of messages
over time.
Further Reading
https://github.com/tssovi/grokking-the-object-oriented-
design-interview/tree/master/object-oriented-design-
and-uml
shared by HeyCoach 4
Step 3
SOLID Principles
Overview:
SOLID is an acronym for five design principles intended to
make object-oriented designs more understandable,
flexible, and maintainable. Learn and understand SOLID
principles along with examples.
Key Principles
Single Responsibility Principle (SRP): A class should have
only one reason to change
Open/Closed Principle (OCP): Software entities (classes,
modules) should be open for extension but closed for
modification
Liskov Substitution Principle (LSP): Subtypes must be
substitutable for their base types without altering the
correctness of the program.
shared by HeyCoach 5
Interface Segregation Principle (ISP): Clients should not
be forced to depend on interfaces they do not use
Dependency Inversion Principle (DIP): High-level
modules should not depend on low-level modules; both
should depend on abstractions.
Resources
https://www.oodesign.com/design-principle
https://www.freecodecamp.org/news/solid-principles-
explained-in-plain-english/
shared by HeyCoach 6
Step 4
Design Patterns
Overview:
Design patterns are typical solutions to common problems
in software design. Each pattern is like a blueprint that you
can customize to solve a particular design problem in your
code. Learn and understand important design patterns
along with examples.
Key Patterns
Singleton Pattern: Ensures a class has only one instance
and provides a global point of access
Factory Method Pattern: Defines an interface for
creating objects but allows subclasses to alter the type
of objects created
Adapter Pattern: Adapter pattern allows objects with
incompatible interfaces to work together.
shared by HeyCoach 7
Observer Pattern: Defines a one-to-many dependency
between objects, ensuring changes in one object trigger
updates in others
Strategy Pattern: Defines a family of algorithms,
encapsulates them, and makes them interchangeable.
Some other important design patterns
Abstract Factor
Builde
Decorato
Facad
Comman
Iterator.
Best Resource:
https://refactoring.guru/design-patterns
shared by HeyCoach 8
Step 5
Interview Questions
Overview:
Practice is the key to master LLD for interviews. This
includes solving commonly asked design problems, along
with their diagrams and code.
Standard Problems
Design a Parking Lot.
Design a Two-player game like Chess, Carrom or
TicTacToe
Design a Library Management System
Design a Hotel Management System
Design an Elevator System
Design a Ticket Booking System like BookMyShow
Design an ATM.
shared by HeyCoach 9
Some other important problems:
BlackJack Game, Caching Library, Rate Limiter, Online E-
commerce Platform like Amazon, Online Social Media App
like Facebook, Stack Overflow, Ride-sharing App like Uber,
Stock-trading App like Zerodha.
Best Resource:
https://github.com/tssovi/grokking-the-object-oriented-
design-interview/tree/master/object-oriented-design-
case-studies
shared by HeyCoach 10
Have you read this Doc?
Allow me to summarize its main points for you.
Speaking of valuable insights,
HeyCoach can offer you similar guidance but
tailored to your career in tech
1000+ engineers Engineers land an
chose HeyCoach to average CTC of 27
land a job at a top LPA
product company. with HeyCoach
Engineers got an 100% placement
average of 300% assistance
hike through
HeyCoach
The batch size of 30 students They assigned me a coach who
gives the learners a great level of helped me with the preparations
personalized attention and also guided me throughout the
interview process.
Shubham Monark
Signup Now
(link in caption)