System Design Pre-requisites
Level 1
- Basic Algorithms (searching, sorting, recursion, time/space complexity)
- Object-Oriented Programming (OOP) concepts
- Fundamentals of Operating Systems (processes vs threads, concurrency basics, memory management, deadlocks)
- Basic Data Structures
- At least one OOP language comfortably (Java, Python, C++, Go, etc.)
Level 1 Materials
Level 2
- Basic Computer Networking (TCP vs UDP, 3-way handshake, IP, ports, load balancers)
- How the web works (DNS, HTTP/HTTPS, browsers, request-response cycle)
- Basic SQL (queries, joins, indexing, normalization)
- REST API basics (verbs, status codes, idempotency, statelessness)
Level 2 Materials
Level 3
- Databases basics (ACID, replication, sharding, partitioning)
- Caching fundamentals (where, why, eviction policies, cache invalidation)
- Scalability concepts (vertical vs horizontal scaling)
- Message queues / pub-sub basics
- CAP theorem (high-level understanding) & Consistency vs Availability trade-offs
- Microservices vs Monolith (pros/cons at high level)
Level 3 Materials
Level 4
- Basic NoSQL concepts (key-value, document, column-family, graph)
- CDN (Content Delivery Network) purpose
- Basic authentication/authorization (sessions, JWT, OAuth basics)
- Rate limiting & throttling
- Logging, monitoring, alerting basics
- Distributed systems challenges (latency, fault tolerance, eventual consistency)
Level 4 Materials