Your TypeScript-powered interview prep notebook β organized, concise and ready when you are.
- Quick Start
- How to use this repository?
- Repository Structure
- Learning Path
- Interview Preparation
- Practice Resources
- Coding Conventions
- Contributing
- Progress Tracking
- License
- Acknowledgments
# 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.
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.
-
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.
-
Practice with Purpose
- Use the Exercises folder to code hands-on solutions.
- Review explanations, analyze time/space complexity and test with provided cases.
-
Customize Your Notes
- Fork the repo and add your own solutions or optimizations.
- Bookmark tricky problems for quick revision before interviews.
-
Stay Interview-Ready
- Treat this like your exam revision notes β structured for quick refreshers when time is short.
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.
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
- Start with Basics - programming fundamentals
- Learn Complexity Analysis - understand Big O
- Master core Data Structures one by one
- Practice Easy Problems regularly
- Review and strengthen data structure knowledge
- Focus on Algorithm Implementation
- Learn Problem Patterns
- Tackle Medium Problems
- Master Dynamic Programming
- Study System Design
- Solve Hard Problems
Before the Interview:
- Review Big O Complexity
- Practice Common Patterns
- Review Notes
- Review Common Problems
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
- Google: Focus on Graph Algorithms and System Design
- Amazon: Emphasize Trees and Dynamic Programming
- Microsoft: Practice Arrays and String Problems
- Facebook/Meta: Master Graph Problems and DFS/BFS
- LeetCode - Primary practice platform
- HackerRank - Additional practice
- CodeSignal - Interview simulation
- Pramp - Mock interviews
- "Cracking the Coding Interview" by Gayle McDowell
- "Elements of Programming Interviews" by Aziz, Lee, and Prakash
- "Algorithm Design Manual" by Steven Skiena
- Each folder contains a comprehensive README
- Code includes time/space complexity analysis
- Examples include multiple test cases
- Solutions explain the thought process
Contributions are welcome! Please see for guidelines.
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-algorithm
- Commit changes:
git commit -am 'Add new sorting algorithm'
- Push to branch:
git push origin feature/new-algorithm
- Submit a Pull Request
- New algorithm implementations
- Additional practice problems
- Improved explanations
- Test cases and examples
- Performance optimizations
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
This project is licensed under the MIT License - see the LICENSE file for details.
- 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!