This repository is a comprehensive resource designed for individuals preparing for technical interviews, system design discussions, and coding challenges. It is particularly useful for roles such as Software Engineers, Site Reliability Engineers (SREs), and DevOps professionals.
The repository is organized into two main sections:
- Purpose: To build and strengthen problem-solving skills through coding challenges and algorithmic techniques.
- Contents:
- Algo-Techniques/: Techniques like Binary Search, Sliding Window, etc.
- Basics/: Foundational concepts in data structures and algorithms.
- Blind-75/: A curated list of 75 essential coding problems.
- Building-Muscle-Memory/: Sets of problems to practice repeatedly.
- LC150/: Problems categorized for LeetCode 150.
- SRE-Questions/: DSA questions tailored for SRE roles.
- Cheat Sheets: Quick reference guides for time-space complexity and Python data structures.
- Purpose: To prepare for system design interviews and understand architectural patterns.
- Contents:
- Basics/: Foundational concepts in system design.
- CheatSheets/: Quick reference guides for system design topics.
- DevOps-SRE/: Topics like Docker, Kubernetes, Terraform, and scripting.
- Interview-Questions/: Common system design and DevOps interview questions.
- Networking/: Topics like DNS, CORS, and TCP handshake.
- RoadMap/: A structured roadmap for mastering system design.
- System-Design-Layer-Template/: Templates and guides for designing scalable systems.
- System_Design_Runbook_SRE.md: A runbook for SRE-specific system design.
-
For DSA Preparation:
- Start with the
Basics/folder to build foundational knowledge. - Progress to
Algo-Techniques/andBlind-75/for targeted problem-solving. - Use the cheat sheets for quick revision before interviews.
- Start with the
-
For System Design Preparation:
- Begin with the
Basics/folder to understand core concepts. - Explore
RoadMap/for a structured learning path. - Use
System-Design-Layer-Template/for hands-on practice with design templates. - Refer to
DevOps-SRE/for tools and technologies like Docker and Kubernetes.
- Begin with the
-
For SRE and DevOps Roles:
- Focus on
DevOps-SRE/andSRE-Questions/for role-specific preparation. - Use
Networking/andSystem_Design_Runbook_SRE.mdfor advanced topics.
- Focus on
We welcome contributions from everyone! Follow these simple steps to get started:
-
Fork the Repository:
- Click the "Fork" button at the top-right corner of this repository to create your own copy.
-
Clone Your Fork:
- Use the following command to clone your forked repository to your local machine:
git clone https://github.com/<your-username>/DSA-System-Design.git
- Use the following command to clone your forked repository to your local machine:
-
Create a New Branch:
- Always create a new branch for your changes to keep your work organized:
git checkout -b your-branch-name
- Always create a new branch for your changes to keep your work organized:
-
Make Your Changes:
- Add new topics, improve existing content, or fix any issues.
-
Commit Your Changes:
- After making changes, commit them with a clear message:
git add . git commit -m "Your descriptive commit message"
- After making changes, commit them with a clear message:
-
Push Your Changes:
- Push your changes to your forked repository:
git push origin your-branch-name
- Push your changes to your forked repository:
-
Create a Pull Request:
- Go to the original repository and click on "Pull Requests".
- Click "New Pull Request" and select your branch to submit your changes for review.
-
Collaborate:
- Work with the maintainers to review and refine your changes if needed.
Thank you for contributing and helping improve this repository!