Low & High Level System Design
0% Completed
Low Level System Design
Low Level Design Basic Building Blocks
Learn core LLD concepts like inheritance, association, composition, aggregation, with a quick quiz to test understanding.
SOLID Principles
Understand SOLID principles to design clean, scalable, and maintainable systems, with a quiz to reinforce concepts.
Design Patterns
Creational Design Patterns
Learn object creation patterns like Factory, Builder, Singleton, and more, with a quiz to test understanding.
Structural Design Patterns
Learn patterns like Adapter, Decorator, Facade, and Bridge to structure flexible systems, with a quiz to test understanding.
Behavioural Design Patterns
Understand interaction-focused patterns like Command, Observer, State, and Strategy, with a quiz to test concepts.
LLD Topics
LLD Basic Case Studies
Pizza factory
Design a Pizza Factory system from requirements to diagrams, code implementation, and interview Q&A.
SQL Query builder
Design an SQL Query Builder from requirements to diagrams, code implementation, and interview Q&A.
Logger
Design a Logger system covering requirements, diagrams, code, and interview Q&A
Car Price Calculator
Design a Car Price Calculator from requirements to diagrams, code implementation, and interview Q&A.
Weather Station
Design a Weather Station system from requirements to diagrams, code implementation, and interview Q&A.
Intermediate LLD Case Studies
Ticket management system
Design a Ticket Management System from requirements to diagrams, code implementation, and interview Q&A.
Payment processor
Design a Payment Processor from requirements to diagrams, code implementation, and interview Q&A.
Elevator System
Design an Elevator System from requirements to diagrams, code implementation, and interview Q&A.
Car parking
Design a Car Parking system covering requirements, diagrams, services, logging, design patterns, and complete code implementation.
Introduction Video
Video - 00:00:55 mins
Use Case Diagram
Video - 00:3:44 mins
Class Diagram
Video - 00:6:07 mins
Class Diagram continued
Video - 00:5:30 mins
Services
Video - 00:9:57 mins
Parking Service
Video - 00:7:59 mins
Discussion on Parking Spots and Parking Service
Video - 00:8:12 mins
Activity Diagram
Video - 00:4:17 mins
Coding Part 1
Video - 00:34:45 mins
How to add Logging in the system
Video - 00:2:20 mins
Coding Part 2 (Adding Logging in the system)
Video - 00:6:04 mins
Implementing Parking pots using Decorator Design pattern
Video - 00:2:34 mins
Coding Part 3
Video - 00:12:11 mins
Requirements
Reading
Identification of actors
Reading
Use case diagram
Reading
Class diagram
Reading
QnA
Reading
Activity Diagram
Reading
Code
Reading
Advanced LLD Case Studies
Social media
Design a Social Media system from requirements to diagrams, code implementation, and interview Q&A.
WhatsApp
Design a WhatsApp-like system from requirements to diagrams, code implementation, and interview Q&A.
Amazon
Design an Amazon-like system from requirements to diagrams, code implementation, and interview Q&A.
PayPal
Design a PayPal-like payment system from requirements to diagrams, code implementation, and interview Q&A.
Assignment
Apply design patterns by implementing the Snakes and Ladders game end-to-end.
High Level System Design
Building Blocks
Learn core HLD concepts like scalability, consistency, caching, databases, real-time systems, and GenAI-enabled APIs.
What is HLD?
Reading
Consistent Hashing
Reading
Caching
Reading
Load Balancing
Reading
CAP Theorem
Reading
Indexes
Reading
Redundancy and Replication
Reading
SQL vs NoSQL
Reading
Data Partitioning
Reading
Long Polling and WebSockets
Reading
Retrieval Augmented Generation (RAG)
Reading
Quorum
Reading
Gen AI-enabled API Systems
Reading
Basic HLD Case Studies
TinyURL
Design a TinyURL system covering requirements, capacity planning, APIs, databases, caching, scaling, and testing.
Introduction
Reading
Requirements & Goals of the System
Reading
Capacity Estimations & Constraints
Reading
System APIs
Reading
Database design & Schema
Reading
High-Level Design
Reading
QnA
Reading
Purging & Db Cleanup
Reading
Database Partitioning & Replication
Reading
Cache & Load Balancing
Reading
Test
Reading
Rate Limiter
Design a Rate Limiter covering requirements, capacity planning, APIs, data storage, caching, scaling, and reliability.
Introduction
Reading
Requirements & Goals of the System
Reading
Capacity Estimations & Constraints
Reading
System APIs
Reading
Database design & Schema
Reading
High Level Design
Reading
QnA
Reading
Purging & Db Cleanup
Reading
Database Partitioning & Replication
Reading
Cache & Load Balancing
Reading
Intermediate HLD Case Studies
Typeahead suggestion (Google queries)
Design a Typeahead system covering requirements, capacity planning, APIs, data storage, caching, scaling, and reliability.
Introduction
Reading
Requirements & Goals of the System
Reading
Capacity Estimations & Constraints
Reading
System APIs
Reading
Database design & Schema
Reading
High Level Design
Reading
QnA
Reading
Purging & Db Cleanup
Reading
Database Partitioning & Replication
Reading
Cache & Load Balancing
Reading
Pastebin
Design a Pastebin-like system covering requirements, capacity planning, APIs, databases, caching, scaling, and reliability.
Introduction
Reading
Requirements & Goals of the System
Reading
Capacity Estimations & Constraints
Reading
System APIs
Reading
Database design & Schema
Reading
High Level Design
Reading
QnA
Reading
Purging & Db Cleanup
Reading
Database Partitioning & Replication
Reading
Cache & Load Balancing
Reading
Advanced HLD Case Studies
DropBox
Design a Dropbox-like system covering requirements, capacity planning, APIs, storage, caching, scaling, and reliability.
Introduction
Reading
Requirements & Goals of the System
Reading
Capacity Estimations & Constraints
Reading
System APIs
Reading
Database design & Schema
Reading
High Level Design
Reading
QnA
Reading
Purging & Db Cleanup
Reading
Database Partitioning & Replication
Reading
Cache & Load Balancing
Reading
Instagram
Design an Instagram-like system covering requirements, capacity planning, APIs, databases, caching, scaling, and reliability.
Introduction
Reading
Requirements & Goals of the System
Reading
Capacity Estimations & Constraints
Reading
System APIs
Reading
Database design & Schema
Reading
High Level Design
Reading
QnA
Reading
Purging & Db Cleanup
Reading
Database Partitioning & Replication
Reading
Cache & Load Balancing
Reading
Messenger
Design a Messenger system covering requirements, capacity planning, APIs, databases, caching, scaling, and reliability.
Introduction
Reading
Requirements & Goals of the System
Reading
Capacity Estimations & Constraints
Reading
System APIs
Reading
Database design & Schema
Reading
High Level Design
Reading
QnA
Reading
Purging & Db Cleanup
Reading
Database Partitioning & Replication
Reading
Cache & Load Balancing
Reading
BookMyShow
Design a BookMyShow-like ticketing system covering requirements, capacity planning, APIs, databases, caching, scaling, and reliability.
Introduction
Reading
Requirements & Goals of the System
Reading
Capacity Estimations & Constraints
Reading
System APIs
Reading
Database design & Schema
Reading
High Level Design
Reading
QnA
Reading
Purging & Db Cleanup
Reading
Database Partitioning & Replication
Reading
Cache & Load Balancing
Reading
Uber/Ola
Design a ride-hailing system covering requirements, capacity planning, APIs, databases, real-time matching, scaling, and reliability.
Introduction
Reading
Requirements & Goals of the System
Reading
Capacity Estimations & Constraints
Reading
System APIs
Reading
Database design & Schema
Reading
High Level Design
Reading
QnA
Reading
Purging & Db Cleanup
Reading
Database Partitioning & Replication
Reading
Cache & Load Balancing
Reading
Newsfeed
Design a Newsfeed system covering requirements, capacity planning, APIs, databases, caching, feed generation, scaling, and reliability.
Introduction
Reading
Requirements & Goals of the System
Reading
Capacity Estimations & Constraints
Reading
System APIs
Reading
Database design & Schema
Reading
High Level Design
Reading
QnA
Reading
Purging & Db Cleanup
Reading
Database Partitioning & Replication
Reading
Cache & Load Balancing
Reading
Youtube/Netflix
Design a video streaming system covering requirements, capacity planning, APIs, storage, caching, scaling, and reliability.
Introduction
Reading
Requirements & Goals of the System
Reading
Capacity Estimations & Constraints
Reading
System APIs
Reading
Database design & Schema
Reading
High Level Design
Reading
QnA
Reading
Purging & Db Cleanup
Reading
Database Partitioning & Replication
Reading
Cache & Load Balancing
Reading
Introduction:
-
The HAS-A relationship in Java is called Composition. By using a “has-a” relationship we ensure code reusability in our programs.
-
We make our program use an instance of a class directly instead of extending it from another class as we do in the case of inheritance.
-
For example, a car and an Engine share the HAS-A relationship. A car always has an Engine. We do not extend the properties of the Engine object, but we use the Engine object directly.
-
The composition is an association in which one class contains another class, and this contained class depends on the containing class in such a way that it cannot exist independently.
-
Hence, when the containing object is destroyed, the other object is also destroyed.
-
A composition relationship is a “part-of-a-whole” relationship in which the part does not exist without the whole.
Code:
class Engine {
public void startEngine() {
System.out.println("Car Engine Started.");
}
public void stopEngine() {
System.out.println("Car Engine Stopped.");
}
}
class Car {
private String color;
private int max_Speed;
public void carDetails(){
System.out.println("Color= "+color + " Max Speed= " +
}
public void setColor(String color) {
this.color = color;
}
public void setMaxSpeed(int max_Speed) {
this.max_Speed = max_Speed;
}
}
class Civic extends Car {
public void CivicStart(){
Engine engine = new Engine(); //composition
engine.startEngine();
}
}
public class Main {
public static void main(String[] args) {
Civic civic = new Civic();
civic.setColor("Silver");
civic.setMaxSpeed(180);
civic.carDetails();
civic.CivicStart();
}
}
Why Composition over Inheritance?
One of the main reasons to prefer composition over inheritance is to promote code reuse and maintainability.
Here are some advantages of using composition:
-
Flexibility: With composition, classes can be composed of multiple objects of different types, allowing for more flexible and dynamic behaviour. This allows for greater adaptability and extensibility in the code base.
-
Loose coupling: Composition promotes loose coupling between classes as they interact through interfaces or contracts, rather than relying on direct inheritance relationships. This reduces the dependencies between classes and makes the code base more modular and easier to maintain.
-
Encapsulation: Composed objects can be encapsulated within a class, hiding their internal details and providing a clean and well-structured API. This improves the overall design and reduces the risk of exposing unnecessary implementation details.
-
Code organisation: Composition allows for better code organisation by breaking down complex functionality into smaller, more manageable components. This improves code readability and makes it easier to understand and maintain.
-
Avoiding the limitations of multiple inheritance: Inheritance can become complex and error-prone when dealing with multiple inheritance. Composition, on the other hand, allows for combining behaviour from multiple classes without the complexities and limitations of multiple inheritance.
Overall, composition provides a more flexible and maintainable approach to designing classes, promoting code reuse, loose coupling, encapsulation, and better code organisation.