System Design Sample Kit
System Design Sample Kit
Jain(Sample View)
Hello and welcome! I'm Parikh Jain, and I'm excited to share with you the ultimate
guide to excel System Design. This kit is a labor of love, drawn from my extensive
journey as an SDE at Amazon, a founding member at Coding Ninjas, and the
founder of ProPeers where I worked on different system designs from scratch to
scale. I’ve distilled my real-world experience into a comprehensive resource that
covers every topic you need to excel.
In this preview file, I have shared all the topics which i have covered in detail in the
full version with relevant code snippets and solutions.
I have shared all the sections which i have covered in full version. Checkout them
below.
📘(Detailed)
Section 1: Interview Mindset & Design strategy
📘Practical
Section 2: Core LLD Concepts Refresher (with
Code)
🔹 1. SOLID Principles (with Java Examples)
Example
Bad Example:
class Invoice {
void calculateTotal() { /* logic */ }
void printInvoice() { /* logic */ }
void saveToDB() { /* logic */ }
}
Why it’s wrong: This class does 3 things — business logic, UI, and persistence.
Good Example:
class Invoice {
double calculateTotal() { /* logic */ }
}
class InvoicePrinter {
void print(Invoice invoice) { /* logic */ }
}
✅ O — Open/Closed Principle
✅ L — Liskov Substitution Principle
✅ I — Interface Segregation Principle
✅ D — Dependency Inversion Principle
Covered all of them in the detailed version with examples
✅ A. Inheritance vs Composition
🔸 Inheritance – "is-a" relationship
Use when there's a clear hierarchy and common behavior to be inherited.
class Vehicle {
void startEngine() {
System.out.println("Engine started");
}
}
🔍 Use when:
You want code reuse across types
class Engine {
void start() {
System.out.println("Engine started");
}
}
class Car {
private Engine engine = new Engine();
void drive() {
engine.start();
System.out.println("Driving");
}
}
🔍 Use when:
You want modular, loosely coupled components
📘examples)
Section 3 : LLD Interview Questions (20+ with
🟩 1. Problem Statement
🟦 2. Assumptions & Functional Requirements
🟨 3. Entity Responsibility Table
🟧 4. Diagram With Proper Image
🟨 5. Java Code Implementation
🟥 6. Follow-Up Questions + Probable Solutions
🟩 7. Deep Dives & Version 2 Ideas
🟩 1. Problem Statement
Design a system like Splitwise where:
class User {
String id;
String name;
✅ Split.java (abstract)
✅ Expense.java
class Expense {
private User paidBy;
private double amount;
private List<Split> splits;
✅ BalanceSheet.java
✅ ExpenseService.java
class ExpenseService {
private BalanceSheet balanceSheet = new BalanceSheet();
service.showBalances();
}
}
Can we support Groups? Add Group class with users & expenses
How to undo/delete an expense? Track each expense with ID; reverse updates
How to scale this for 1M users? Split services, add DB, use caching
🟩 1. Problem Statement
🟦 2. Assumptions & Functional Requirements
🟨 3. Entity Responsibility Table
🟧
System Design By Parikh Jain(Sample View) 15
🟧 4. Diagram With Proper Image
🟨 5. Java Code Implementation
🟥 6. Follow-Up Questions + Probable Solutions
🟩 7. Deep Dives & Version 2 Ideas
Checkout the full version now : https://bit.ly/3YyjIHt