This repository contains all the Technical documentation resource links
If you want to start DSA from scratch, you can begin with these helpful articles:
- Master Linked List: https://lnkd.in/d7vekRyG
- Master Tree: https://lnkd.in/dRyF6rRH
- To Queue Or Not To Queue: https://lnkd.in/dRYfWnPq
- Master Stacks and Overflows: https://lnkd.in/dwnPyHRi
- Taking Hash Tables Off The Shelf: https://lnkd.in/dAsuiV8W
- Master Heaps: https://lnkd.in/dCp8NWv2
- Master Recursion: https://lnkd.in/dhFwcNjn
- Understanding Tries: https://lnkd.in/dXyHYgp9
- Ultimate Binary Search Template: https://lnkd.in/dwzG3c95
- 10-line template that can solve most 'substring' problems: https://lnkd.in/dP-gxFhy
- Less Repetition, More Dynamic Programming: https://lnkd.in/dPK9U77F
- Introduction To Graph Theory: https://lnkd.in/dBbC8iuF
- DFS Traversal - Deep Dive through a Graph: https://lnkd.in/d7vUakch
- BFS Traversal - Going Broad In A Graph: https://lnkd.in/dsyZfymU
- Finding The Shortest Path, With A Little Help From Dijkstra: https://lnkd.in/duSDdpsJ
Want to improve your software development skills? Learning Low-Level Design (LLD) is crucial for building scalable, efficient, and maintainable systems.
- SOLID: https://lnkd.in/dafK6TzQ
- DRY: https://lnkd.in/dreUT7_h
- KISS: https://lnkd.in/d-nFYfdR
- YAGNI: https://lnkd.in/dHzEi__Y
- Singleton: https://lnkd.in/dB5aDUXr
- Factory: https://lnkd.in/dvZtfe-k
- Adapter: https://lnkd.in/dKQpsTfe
- Observer: https://lnkd.in/dByc-whP
- Strategy: https://lnkd.in/d9dz8ER7
- Class diagrams: https://lnkd.in/d8_8rYCp
- Sequence diagrams: https://lnkd.in/duPf_cJ2
- Interfaces: https://lnkd.in/d8NzSRgG
- ER diagrams: https://lnkd.in/d6xygCrb
- Normalization: https://lnkd.in/dz7MCVaj
- Relationships: https://lnkd.in/da3YTaJN
- Thread safety: https://lnkd.in/dNe6FpfS
- Locks: https://lnkd.in/dN2YdpvU
- Atomic operations: https://lnkd.in/dcfZF9Jb
- Exception handling: https://lnkd.in/dkUHDGBu
- Logging strategies: https://lnkd.in/dvikcadQ
- RESTful API: https://lnkd.in/dqDrkbDS
- Pagination: https://lnkd.in/dJfwFqmd
- Authentication: https://lnkd.in/dQ94BgzQ
- Caching: https://lnkd.in/deMQvEJ9
- Load balancing: https://lnkd.in/dkeYMX74
- Lazy loading: https://lnkd.in/dvcdY_RX
- The Pragmatic Programmer by Andrew Hunt and David Thomas
- Code Complete by Steve McConnell
- Clean Code by Robert C. Martin
- Refactoring by Martin Fowler
- Designing Data-Intensive Applications by Martin Kleppmann
- System Design Interview (our own book :))
- Design Patterns by Eric Gamma and Others
- Domain-Driven Design by Eric Evans
- Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein
- Cracking the Coding Interview by Gayle Laakmann McDowell
The main reason people struggle with System Design interviews isn’t because they haven’t read enough case studies or designed enough systems. It’s because they haven’t built a strong understanding of the basics.
It’s easy to get excited about advanced topics like designing distributed databases, scalable microservices, or messaging systems. But the truth is, these are not as common as they seem.
Instead, focus on getting the fundamentals right. These are the building blocks that every system is built on, and they’ll help you confidently handle any design problem during interviews.
- Scalability: https://lnkd.in/gpge_z76
- Latency vs Throughput: https://lnkd.in/g_amhAtN
- CAP: https://lnkd.in/g3hmVamx
- ACID Transactions: https://lnkd.in/gMe2JqaF
- Rate Limiting: https://lnkd.in/gWsTDR3m
- API Design: https://lnkd.in/ghYzrr8q
- Strong vs Eventual Consistency: https://lnkd.in/gJ-uXQXZ
- Distributed Tracing: https://lnkd.in/d6r5RdXG
- Synchronous vs Asynchronous Communications: https://lnkd.in/gC3F2nvr
- Batch Processing vs Stream Processing: https://lnkd.in/g4_MzM4s
- Fault Tolerance: https://lnkd.in/dVJ6n3wA
- Database: https://lnkd.in/gti8gjpz
- Horizontal vs Vertical Scaling: https://lnkd.in/gAH2e9du
- Caching: https://lnkd.in/gC9piQbJ
- Distributed Caching: https://lnkd.in/g7WKydNg
- Load Balancing: https://lnkd.in/gQaa8sXK
- SQL vs NoSQL: https://lnkd.in/g3WC_yxn
- Database Scaling: https://lnkd.in/gAXpSyWQ
- Data Replication: https://lnkd.in/gVAJxTpS
- Data Redundancy: https://lnkd.in/gNN7TF7n
- Database Sharding: https://lnkd.in/gMqqc6x9
- Database Index's: https://lnkd.in/gCeshYVt
- Proxy Server: https://lnkd.in/gi8KnKS6
- WebSocket: https://lnkd.in/g76Gv2KQ
- API Gateway: https://lnkd.in/gnsJGJaM
- Message Queues: https://lnkd.in/gTzY6uk8
- Event-Driven Architecture: https://lnkd.in/dp8CPvey
- Client-Server Architecture: https://lnkd.in/dAARQYzq
- Serverless Architecture: https://lnkd.in/gQNAXKkb
- Microservices Architecture: https://lnkd.in/gFXUrz_T
- Design Parking Lot: https://lnkd.in/dQaAuFd2
- Design Splitwise: https://lnkd.in/dF5fBnex
- Design Chess Validator: https://lnkd.in/dfAQHvN4
- Design Distributed Queue | Kafka: https://lnkd.in/dQ6_B4_M
- Design Tic-Tac-Toe: https://lnkd.in/dFDApUBt
- Design Unique ID Generator Service
- Design bit.ly
- Design Whatsapp
- Design Instagram/Twitter News Feed
- Design Search Autocomplete
- Design Zomato Search
- Ensures systems can handle increased load and grow efficiently. Link → https://lnkd.in/dD-GZpVq
- Balances speed and capacity in system performance. Link → https://lnkd.in/dscK9g3E
- Explains the trade-offs between consistency, availability, and partition tolerance in distributed systems. Link → https://lnkd.in/dFpgDSnY
- Guarantees reliable database processing through atomicity, consistency, isolation, and durability. Link → https://lnkd.in/dkkmMu_D
- Controls the amount of incoming and outgoing traffic to prevent overload and abuse. Link → https://lnkd.in/dY9NqRG9
- Ensures APIs are user-friendly, efficient, and maintainable. Link → https://lnkd.in/dTgxGa5i
- Balances the need for immediate data consistency versus eventual data accuracy in distributed systems. Link → https://lnkd.in/dQDwa7TQ
- Helps monitor and debug complex, distributed systems by tracking requests across multiple services. Link → https://lnkd.in/dA-3swq2
- Determines how systems interact, either waiting for responses (synchronous) or continuing independently (asynchronous). Link → https://lnkd.in/dx2nFDgR
- Differentiates between processing large volumes of data at once (batch) and processing data in real-time (stream). Link → https://lnkd.in/dqGFQppV
- Ensures systems remain operational despite failures or errors. Link → https://lnkd.in/dzKWh4ju
17 famous GitHub repos to help you pass software engineering job interviews:
These resources cover everything you need to ace technical rounds and beyond.
- System Design Resources: https://lnkd.in/e7SUQ3ei
- Developer Roadmaps: https://lnkd.in/e9MuB_Yg
- Tech Interview Handbook: https://lnkd.in/e7EjsJNF
- Engineering Leadership Resources: https://lnkd.in/ePCzV3zF
- Public APIs Collection: https://lnkd.in/epWSyzqs
- Path to Senior Engineer: https://lnkd.in/exkJCxVi
- Coding Interview University: https://lnkd.in/evJSNCPE
- FreeCodeCamp: https://lnkd.in/e_4pA8xV
- Free Programming Books: https://lnkd.in/eXAzAJ3M
- JavaScript Algorithm Implementations: https://lnkd.in/g9V7d-Ya
- The Algorithms: https://lnkd.in/dyW4Z5R6
- Cracking the Coding Interview: https://lnkd.in/dMiRPrb7
- Tech Interview Handbook: https://lnkd.in/gU6kk5eN
- System Design Primer: https://lnkd.in/g6yMEsGv
- Front End Interview Handbook: https://lnkd.in/gpZpC_ZX
- Python Algorithm Implementations: https://lnkd.in/g7hv9ShZ
- Awesome Interview Questions: https://lnkd.in/gY-AYpQk
30 Blogs to Learn 30 System Design Concepts:
- APIs: https://lnkd.in/dsbwPZ6N
- API Gateway: https://lnkd.in/gtyXmvf4
- Scalability: https://lnkd.in/gPGhW-qK
- Availability: https://lnkd.in/gQk2p4_6
- CAP Theorem: https://lnkd.in/g_tFqJJb
- Load Balancers: https://lnkd.in/dzM7VDKq
- Load Balancing Algorithms: https://lnkd.in/gvxfwEUr
- Caching: https://lnkd.in/gBSeTstS
- Caching Strategies: https://lnkd.in/dVk7nZ_Y
- Cache Eviction Strategies: https://lnkd.in/gQAEXEmq
- Distributed Caching: https://lnkd.in/gf6pCqdi
- CDNs: https://lnkd.in/g2zvPhkA
- Database Types: https://lnkd.in/gDxtZVE2
- SQL vs NoSQL: https://lnkd.in/gHyC9qWc
- ACID Transactions: https://lnkd.in/dB3QHiMz
- Database Indexes: https://lnkd.in/g_-bQWtA
- Database Sharding: https://lnkd.in/g9mc-d5m
- Database Scaling: https://lnkd.in/gSUtAwc7
- WebSockets: https://lnkd.in/gD-TUZep
- Message Queues: https://lnkd.in/g-jnNGDC
- Service Discovery: https://lnkd.in/gRj_QeP8
- Bloom Filters: https://lnkd.in/gfGjCrSZ
- Rate Limiting Algorithms: https://lnkd.in/gYDxg8XY
- SPOF: https://lnkd.in/gw_uHZWn
- Idempotency: https://lnkd.in/gDB3AJij
- Checksums: https://lnkd.in/gGPEKV8b
- Long Polling vs WebSockets: https://lnkd.in/d9xKD28K
- Concurrency vs Parallelism: https://lnkd.in/gGZXhjBD
- Proxy vs Reverse Proxy: https://lnkd.in/gMTtidBq
- Batch vs Stream Processing: https://lnkd.in/gKtj_qWh
16 resources I plan to use to become 10x better at software architecture this year
- Evolutionary architecture by example - https://lnkd.in/dsqv5Q2u
- Modular monolith application with DDD - https://lnkd.in/dftp8iM6
- .NET 8 starter kit with multitenancy support - https://lnkd.in/d3YvD5eZ
- eCommerce microservice .NET application - https://lnkd.in/d_XNwxvP
- Vertical slice architecture example - https://lnkd.in/dxbBMM5a
- Clean architecture template for .NET apps - https://lnkd.in/d8KkMJrx
- Hexagonal application example - https://lnkd.in/dcfctsyJ
Read these books:
- Software Architecture for Developers
- Head First Software Architecture
- Fundamentals of Software Architecture: An Engineering Approach
- Software Architecture: The Hard Parts
- System Design Interview – An Insider's Guide
- System Design Interview – An Insider's Guide: Volume 2
- Designing Data-Intensive Applications
Practice using software architecture katas:
- Software Architecture katas - https://lnkd.in/dU5SBHRn
- KataLog - https://lnkd.in/dU5SBHRn