Skip to content

ravindrasinghshah/technical-interview-preparation-kit

Repository files navigation

Technical Interview Study Repository

TypeScript License: MIT Contributions Welcome

Your TypeScript-powered interview prep notebook β€” organized, concise and ready when you are.

πŸ“š Table of Contents

πŸš€ Quick Start

# 1. Clone the repository
git clone https://github.com/ravindrasinghshah/technical-interview-preparation-kit.git
cd technical-interview-preparation-kit

# 2. Install dependencies
npm install

# 3. Explore the Structure
 - Start with 0-Basics to warm up your fundamentals.
 - Browse 2-DataStructures and 4-Algorithms for topic-based learning.
 - Dive into 5-Exercises for hands-on problem solving.

# 4. Start Solving Problems
 - Pick a folder β†’ read the notes β†’ try the problems yourself.
 - Compare your solution with the provided one, noting time/space complexity.

# 5. Make It Yours
 - Fork the repo and add your own solutions, notes, or optimizations.
 - Keep it updated as your personal interview playbook.

πŸ“… How to use this repository?

This is your all-in-one interview preparation notebook for system design, data structures and algorithms in TypeScript.
Rather than just reading theory, you’ll learn by solving real interview-style problems β€” organized for maximum efficiency.

How to Get Started

  1. Follow the Learning Path

    • Start with Basics to build a solid foundation.
    • Move through Complexity Analysis, Core Data Structures and Algorithms.
    • Progress into Problem Patterns and System Design for advanced preparation.
  2. Practice with Purpose

    • Use the Exercises folder to code hands-on solutions.
    • Review explanations, analyze time/space complexity and test with provided cases.
  3. Customize Your Notes

    • Fork the repo and add your own solutions or optimizations.
    • Bookmark tricky problems for quick revision before interviews.
  4. Stay Interview-Ready

    • Treat this like your exam revision notes β€” structured for quick refreshers when time is short.

πŸ†š How Is This Different from LeetCode or Other Platforms?

While platforms like LeetCode are great for volume practice, this repo is centralized, curated and customizable:

  • Time-Saving: No endless searching β€” everything you need is here.
  • Easy to Navigate: Organized by topic, difficulty and problem pattern.
  • Customizable: Extend it with your own study notes and problem sets.

In short: Think of it as your personal exam notes β€” organized, concise and perfect for revisiting right before you step into the interview room.

πŸ—οΈ Repository Structure

technical-interview-preparation-kit/
β”œβ”€β”€ 0-Basics/                 # Basics revisions
β”‚   β”œβ”€β”€ maths.md              # Basic maths fundamental for algorithms
β”‚   β”œβ”€β”€ revision-notes.md     # Revision notes before interview
β”‚   └── revision-problems.md  # Problems to revise before interview
β”œβ”€β”€ 0-SystemDesign/           # System design concepts
β”‚   β”œβ”€β”€ cheet-sheet.md/       # Cheat Sheet
β”‚   β”œβ”€β”€ databases.md/         # Databases
β”‚   β”œβ”€β”€ how-to-do.md/         # How to deliver system design
β”‚   └── key-technologies.md   # Key technologies
β”œβ”€β”€ 1-Complexity/             # Time & space complexity
β”‚   β”œβ”€β”€ complexity-chart.png  # Complexity chart
β”‚   β”œβ”€β”€ space-complexity.md   # Space Complexity
β”‚   └── time-complexity.md    # Time Complexity
β”œβ”€β”€ 2-DataStructures/         # Core data structures
β”‚   β”œβ”€β”€ Arrays/               # Array operations & algorithms
β”‚   β”œβ”€β”€ BinarySearchTree/     # Binary Search Tree
β”‚   β”œβ”€β”€ DoublyLinkedLists/    # Doubly linked lists
β”‚   β”œβ”€β”€ LinkedLists/          # Singly, circular lists
β”‚   β”œβ”€β”€ Queues/               # Queue implementations
β”‚   β”œβ”€β”€ Stacks/               # Stack implementations
β”‚   β”œβ”€β”€ Strings/              # Strings implementations
β”‚   β”œβ”€β”€ Trees/                # Binary trees, BST, AVL, etc.
β”‚   β”œβ”€β”€ Graphs/               # Graph representations & algorithms
β”‚   β”œβ”€β”€ HashTables/           # Hash maps & collision handling
β”‚   └── Heaps/                # Min/max heaps & priority queues
β”œβ”€β”€ 3-Patterns/               # Common problem patterns
β”‚   β”œβ”€β”€ TwoPointers/          # Two pointer technique
β”‚   β”œβ”€β”€ SlidingWindow/        # Sliding window pattern
β”‚   β”œβ”€β”€ FastSlow/             # Fast & slow pointers
β”‚   β”œβ”€β”€ MergeIntervals/       # Interval problems
β”‚   β”œβ”€β”€ CyclicSort/           # Cyclic sort pattern
β”‚   └── TreeBFS_DFS/          # Tree traversal patterns
β”œβ”€β”€ 4-Algorithms/             # Algorithm implementations
β”‚   β”œβ”€β”€ Backtracking/         # Backtracking algorithms
β”‚   β”œβ”€β”€ Bitwise/              # Bitwise algorithms
β”‚   β”œβ”€β”€ Maths/                # Maths algorithms and common problems
β”‚   β”œβ”€β”€ Recursion/            # Recursive solutions
β”‚   β”œβ”€β”€ Searching/            # Search algorithms - Binary, Linear
β”‚   β”œβ”€β”€ Sorting/              # Sorting algorithms - Bubble, Cyclic, Merge, Quick, Selection
β”‚   β”œβ”€β”€ DynamicProgramming/   # DP patterns & solutions
β”‚   β”œβ”€β”€ Greedy/               # Greedy algorithms
β”‚   └── GraphAlgorithms/      # BFS, DFS, shortest path, etc.
└── 5-Exercises/              # Practice problems

🎯 Learning Path

For Beginners

  1. Start with Basics - programming fundamentals
  2. Learn Complexity Analysis - understand Big O
  3. Master core Data Structures one by one
  4. Practice Easy Problems regularly

For Intermediate

  1. Review and strengthen data structure knowledge
  2. Focus on Algorithm Implementation
  3. Learn Problem Patterns
  4. Tackle Medium Problems

For Advanced

  1. Master Dynamic Programming
  2. Study System Design
  3. Solve Hard Problems

πŸ’Ό Interview Preparation

πŸ“ Coding Interview Checklist

Before the Interview:

During the Interview:

  • Clarify requirements and constraints
  • Discuss approach before coding
  • Start with brute force, then optimize
  • Test with examples
  • Analyze time and space complexity

Common Interview Topics:

  • Arrays and String manipulation
  • Linked List operations
  • Tree and Graph traversals
  • Dynamic Programming
  • Two Pointers and Sliding Window
  • Binary Search variations

🏒 Company-Specific Preparation

πŸ› οΈ Practice Resources

Online Platforms

Books

  • "Cracking the Coding Interview" by Gayle McDowell
  • "Elements of Programming Interviews" by Aziz, Lee, and Prakash
  • "Algorithm Design Manual" by Steven Skiena

YouTube Channels

πŸ“‹ Coding Conventions

Documentation Standards

  • Each folder contains a comprehensive README
  • Code includes time/space complexity analysis
  • Examples include multiple test cases
  • Solutions explain the thought process

🀝 Contributing

Contributions are welcome! Please see for guidelines.

How to Contribute

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/new-algorithm
  3. Commit changes: git commit -am 'Add new sorting algorithm'
  4. Push to branch: git push origin feature/new-algorithm
  5. Submit a Pull Request

Areas for Contribution

  • New algorithm implementations
  • Additional practice problems
  • Improved explanations
  • Test cases and examples
  • Performance optimizations

πŸ“Š Progress Tracking

Use the following template to track your progress:

## My Study Progress

### Data Structures

- [ ] String
- [ ] Arrays
- [ ] Linked Lists
- [ ] Stacks & Queues
- [ ] Trees
- [ ] Graphs
- [ ] Hash Tables
- [ ] Heaps

### Algorithms

- [ ] Sorting
- [ ] Searching
- [ ] Recursion
- [ ] Dynamic Programming
- [ ] Greedy
- [ ] Graph Algorithms

### Problem Patterns

- [ ] Two Pointers
- [ ] Sliding Window
- [ ] Fast & Slow Pointers
- [ ] Merge Intervals
- [ ] Cyclic Sort
- [ ] Tree BFS/DFS

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Inspired by various coding interview preparation resources
  • Thanks to the open-source community for algorithm implementations
  • Special thanks to all contributors

Happy Coding! πŸš€

Star ⭐ this repository if you find it helpful for your interview preparation!

Releases

No releases published

Packages

No packages published