Skip to content

Hari-Ravuri/Technical-Resources

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

Repository files navigation

Technical-Resources

This repository contains all the Technical documentation resource links

1. Data Structures and Algorithms (DSA)

If you want to start DSA from scratch, you can begin with these helpful articles:

2. Low-Level Design (LLD) for Better Software Solutions

Want to improve your software development skills? Learning Low-Level Design (LLD) is crucial for building scalable, efficient, and maintainable systems.

2.1 Object-Oriented Design (OOD) Principles

2.2 Design Patterns

2.3 System Components Design

2.4 Database Design

2.5 Concurrency & Multithreading

2.6 Error Handling & Logging

2.7 API Design

2.8 Scalability & Performance

3. My Favorite 10 Books for Software Developers

3.1 General Advice

  1. The Pragmatic Programmer by Andrew Hunt and David Thomas
  2. Code Complete by Steve McConnell

3.2 Coding

  1. Clean Code by Robert C. Martin
  2. Refactoring by Martin Fowler

3.3 Software Architecture

  1. Designing Data-Intensive Applications by Martin Kleppmann
  2. System Design Interview (our own book :))

3.4 Design Patterns

  1. Design Patterns by Eric Gamma and Others
  2. Domain-Driven Design by Eric Evans

3.5 Data Structures and Algorithms

  1. Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein
  2. Cracking the Coding Interview by Gayle Laakmann McDowell

4. System Design

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.

4.1 System Design Key Concepts

  1. Scalability: https://lnkd.in/gpge_z76
  2. Latency vs Throughput: https://lnkd.in/g_amhAtN
  3. CAP: https://lnkd.in/g3hmVamx
  4. ACID Transactions: https://lnkd.in/gMe2JqaF
  5. Rate Limiting: https://lnkd.in/gWsTDR3m
  6. API Design: https://lnkd.in/ghYzrr8q
  7. Strong vs Eventual Consistency: https://lnkd.in/gJ-uXQXZ
  8. Distributed Tracing: https://lnkd.in/d6r5RdXG
  9. Synchronous vs Asynchronous Communications: https://lnkd.in/gC3F2nvr
  10. Batch Processing vs Stream Processing: https://lnkd.in/g4_MzM4s
  11. Fault Tolerance: https://lnkd.in/dVJ6n3wA

4.2 System Design Building Blocks

  1. Database: https://lnkd.in/gti8gjpz
  2. Horizontal vs Vertical Scaling: https://lnkd.in/gAH2e9du
  3. Caching: https://lnkd.in/gC9piQbJ
  4. Distributed Caching: https://lnkd.in/g7WKydNg
  5. Load Balancing: https://lnkd.in/gQaa8sXK
  6. SQL vs NoSQL: https://lnkd.in/g3WC_yxn
  7. Database Scaling: https://lnkd.in/gAXpSyWQ
  8. Data Replication: https://lnkd.in/gVAJxTpS
  9. Data Redundancy: https://lnkd.in/gNN7TF7n
  10. Database Sharding: https://lnkd.in/gMqqc6x9
  11. Database Index's: https://lnkd.in/gCeshYVt
  12. Proxy Server: https://lnkd.in/gi8KnKS6
  13. WebSocket: https://lnkd.in/g76Gv2KQ
  14. API Gateway: https://lnkd.in/gnsJGJaM
  15. Message Queues: https://lnkd.in/gTzY6uk8

4.3 System Design Architectural Patterns

  1. Event-Driven Architecture: https://lnkd.in/dp8CPvey
  2. Client-Server Architecture: https://lnkd.in/dAARQYzq
  3. Serverless Architecture: https://lnkd.in/gQNAXKkb
  4. Microservices Architecture: https://lnkd.in/gFXUrz_T

4.4 Machine Coding Round and Low Level Design Problems

  1. Design Parking Lot: https://lnkd.in/dQaAuFd2
  2. Design Splitwise: https://lnkd.in/dF5fBnex
  3. Design Chess Validator: https://lnkd.in/dfAQHvN4
  4. Design Distributed Queue | Kafka: https://lnkd.in/dQ6_B4_M
  5. Design Tic-Tac-Toe: https://lnkd.in/dFDApUBt

4.5 System Design and Architecture (HLD)

  1. Design Unique ID Generator Service
  2. Design bit.ly
  3. Design Whatsapp
  4. Design Instagram/Twitter News Feed
  5. Design Search Autocomplete
  6. Design Zomato Search

5. Additional Resources

5.1 Scalability

5.2 Latency vs Throughput

5.3 CAP Theorem

  • Explains the trade-offs between consistency, availability, and partition tolerance in distributed systems. Link → https://lnkd.in/dFpgDSnY

5.4 ACID Transactions

  • Guarantees reliable database processing through atomicity, consistency, isolation, and durability. Link → https://lnkd.in/dkkmMu_D

5.5 Rate Limiting

5.6 API Design

5.7 Strong vs Eventual Consistency

  • Balances the need for immediate data consistency versus eventual data accuracy in distributed systems. Link → https://lnkd.in/dQDwa7TQ

5.8 Distributed Tracing

  • Helps monitor and debug complex, distributed systems by tracking requests across multiple services. Link → https://lnkd.in/dA-3swq2

5.9 Synchronous vs Asynchronous Communications

  • Determines how systems interact, either waiting for responses (synchronous) or continuing independently (asynchronous). Link → https://lnkd.in/dx2nFDgR

5.10 Batch Processing vs Stream Processing

  • Differentiates between processing large volumes of data at once (batch) and processing data in real-time (stream). Link → https://lnkd.in/dqGFQppV

5.11 Fault Tolerance

6. GitHub Repositories

17 famous GitHub repos to help you pass software engineering job interviews:

These resources cover everything you need to ace technical rounds and beyond.

  1. System Design Resources: https://lnkd.in/e7SUQ3ei
  2. Developer Roadmaps: https://lnkd.in/e9MuB_Yg
  3. Tech Interview Handbook: https://lnkd.in/e7EjsJNF
  4. Engineering Leadership Resources: https://lnkd.in/ePCzV3zF
  5. Public APIs Collection: https://lnkd.in/epWSyzqs
  6. Path to Senior Engineer: https://lnkd.in/exkJCxVi
  7. Coding Interview University: https://lnkd.in/evJSNCPE
  8. FreeCodeCamp: https://lnkd.in/e_4pA8xV
  9. Free Programming Books: https://lnkd.in/eXAzAJ3M
  10. JavaScript Algorithm Implementations: https://lnkd.in/g9V7d-Ya
  11. The Algorithms: https://lnkd.in/dyW4Z5R6
  12. Cracking the Coding Interview: https://lnkd.in/dMiRPrb7
  13. Tech Interview Handbook: https://lnkd.in/gU6kk5eN
  14. System Design Primer: https://lnkd.in/g6yMEsGv
  15. Front End Interview Handbook: https://lnkd.in/gpZpC_ZX
  16. Python Algorithm Implementations: https://lnkd.in/g7hv9ShZ
  17. Awesome Interview Questions: https://lnkd.in/gY-AYpQk

7. Blogs to Learn System Design Concepts

30 Blogs to Learn 30 System Design Concepts:

  1. APIs: https://lnkd.in/dsbwPZ6N
  2. API Gateway: https://lnkd.in/gtyXmvf4
  3. Scalability: https://lnkd.in/gPGhW-qK
  4. Availability: https://lnkd.in/gQk2p4_6
  5. CAP Theorem: https://lnkd.in/g_tFqJJb
  6. Load Balancers: https://lnkd.in/dzM7VDKq
  7. Load Balancing Algorithms: https://lnkd.in/gvxfwEUr
  8. Caching: https://lnkd.in/gBSeTstS
  9. Caching Strategies: https://lnkd.in/dVk7nZ_Y
  10. Cache Eviction Strategies: https://lnkd.in/gQAEXEmq
  11. Distributed Caching: https://lnkd.in/gf6pCqdi
  12. CDNs: https://lnkd.in/g2zvPhkA
  13. Database Types: https://lnkd.in/gDxtZVE2
  14. SQL vs NoSQL: https://lnkd.in/gHyC9qWc
  15. ACID Transactions: https://lnkd.in/dB3QHiMz
  16. Database Indexes: https://lnkd.in/g_-bQWtA
  17. Database Sharding: https://lnkd.in/g9mc-d5m
  18. Database Scaling: https://lnkd.in/gSUtAwc7
  19. WebSockets: https://lnkd.in/gD-TUZep
  20. Message Queues: https://lnkd.in/g-jnNGDC
  21. Service Discovery: https://lnkd.in/gRj_QeP8
  22. Bloom Filters: https://lnkd.in/gfGjCrSZ
  23. Rate Limiting Algorithms: https://lnkd.in/gYDxg8XY
  24. SPOF: https://lnkd.in/gw_uHZWn
  25. Idempotency: https://lnkd.in/gDB3AJij
  26. Checksums: https://lnkd.in/gGPEKV8b
  27. Long Polling vs WebSockets: https://lnkd.in/d9xKD28K
  28. Concurrency vs Parallelism: https://lnkd.in/gGZXhjBD
  29. Proxy vs Reverse Proxy: https://lnkd.in/gMTtidBq
  30. Batch vs Stream Processing: https://lnkd.in/gKtj_qWh

16 resources I plan to use to become 10x better at software architecture this year

  1. Evolutionary architecture by example - https://lnkd.in/dsqv5Q2u
  2. Modular monolith application with DDD - https://lnkd.in/dftp8iM6
  3. .NET 8 starter kit with multitenancy support - https://lnkd.in/d3YvD5eZ
  4. eCommerce microservice .NET application - https://lnkd.in/d_XNwxvP
  5. Vertical slice architecture example - https://lnkd.in/dxbBMM5a
  6. Clean architecture template for .NET apps - https://lnkd.in/d8KkMJrx
  7. Hexagonal application example - https://lnkd.in/dcfctsyJ

Read these books:

  1. Software Architecture for Developers
  2. Head First Software Architecture
  3. Fundamentals of Software Architecture: An Engineering Approach
  4. Software Architecture: The Hard Parts
  5. System Design Interview – An Insider's Guide
  6. System Design Interview – An Insider's Guide: Volume 2
  7. Designing Data-Intensive Applications

Practice using software architecture katas:

  1. Software Architecture katas - https://lnkd.in/dU5SBHRn
  2. KataLog - https://lnkd.in/dU5SBHRn

About

This repository contains all the Technical documentation resource links

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors