This guide provides a comprehensive, structured, and actionable plan to master Data Structures and Algorithms (DSA) for technical interviews at top-tier companies like Google, Amazon, Meta, Microsoft, and Apple (FAANG).
- You have basic knowledge of DSA (like arrays, strings, loops, and recursion).
- You can code proficiently in at least one language: Java, Python, or C++.
- You are aiming for coding interviews and online assessments.
- You are ready to commit 2-3 hours/day, 5-6 days/week.
| Month | Focus Area | Key Goals |
|---|---|---|
| Month 1 | DSA Fundamentals & Problem Solving Patterns | Master Arrays, Strings, Hashing, Two Pointers, Sliding Window, and Binary Search. |
| Month 2 | Recursion & Backtracking | Understand recursion deeply and solve backtracking patterns. |
| Month 3 | Trees, Graphs, BFS/DFS | Build a strong foundation on Tree traversal and Graph algorithms. |
| Month 4 | Heaps, Tries, Segment Trees, Union-Find | Learn advanced data structures used in system design and optimization. |
| Month 5 | Dynamic Programming (DP) | Master classic DP problems and common patterns. |
| Month 6 | Mock Interviews, Optimization, & LC Hards | Practice under time pressure, review mistakes, and refine communication. |
| Weekday | Time | Activity |
|---|---|---|
| Mon/Wed/Fri | 2 hrs | Learn new topic + Solve 3-5 LeetCode problems. |
| Tue/Thu/Sat | 2 hrs | Revise previous topics + Work on Blind 75 / Grind 75. |
| Sun | 3-4 hrs | Mock Interview + Weak area revision. |
Stay organized and track your progress with this simple template. You can easily adapt this for Notion or Excel.
| Topic | Subtopic | Difficulty | Problems | Completed? (✅) | Notes |
|---|---|---|---|---|---|
| Arrays | Two Sum | Easy | LeetCode 1 | ✅ | Use a Hash Map for O(n) time complexity. |
| Arrays | Sliding Window Maximum | Hard | LeetCode 239 | ❌ | Use a Deque to store indices. |
| Strings | Longest Without Repeating | Medium | LeetCode 3 | ✅ | Use a Two Pointers approach with a Hash Map. |
| Recursion | Fibonacci | Easy | LeetCode 509 | ✅ | Practice memoization to avoid redundant calculations. |
| ... | ... | ... | ... | ... | ... |
🔗 Google Sheet Template: Make a Copy Here
This is a prioritized list of topics based on their frequency in FAANG interviews.
- Arrays & Strings 📝
- Two Pointers 🔀
- Sliding Window 🖼️
- Binary Search 🔍
- Hashing / Maps 🗺️
- Sorting Algorithms 📈
- Greedy Algorithms 💰
- BFS / DFS (Graphs & Trees) 🌲
- Dynamic Programming (DP) 🧩
- Backtracking 🏃
- Trie 🌳
- Union-Find / Disjoint Set 🤝
- Segment Trees 📊
- Heaps / Priority Queues 📦
- Bit Manipulation 🔢
- Monotonic Stack / Queue 📉
- Binary Indexed Trees (Fenwick Trees) 📊
- LRU Cache 💾
- Design Twitter / Autocomplete / Search Suggestions 🐦
- Concurrent Data Structures 🤝
This curated list is sorted by frequency across Google, Amazon, Meta, Microsoft, and Apple. Prioritize the first 50 problems to build a strong foundation.
| # | Question | Difficulty | Tags |
|---|---|---|---|
| 1 | Two Sum | Easy | Array, Hash Map |
| 2 | Valid Parentheses | Easy | Stack |
| 3 | Longest Substring Without Repeating Characters | Medium | Two Pointers, Sliding Window |
| 4 | Median of Two Sorted Arrays | Hard | Binary Search |
| 5 | Longest Palindromic Substring | Medium | String, Two Pointers |
| 6 | Container With Most Water | Medium | Two Pointers |
| 7 | 3Sum | Medium | Two Pointers, Sorting |
| 8 | Remove Nth Node From End of List | Medium | Linked List, Two Pointers |
| 9 | Merge Two Sorted Lists | Easy | Linked List |
| 10 | Generate Parentheses | Medium | Backtracking |
| ... | ... | ... | ... |
| 14 | Climbing Stairs | Easy | DP |
| 15 | Coin Change | Medium | DP |
| ... | ... | ... | ... |
| 26 | Number of Islands | Medium | DFS, BFS |
| 27 | Clone Graph | Medium | BFS, DFS |
| ... | ... | ... | ... |
| 49 | Permutations | Medium | Backtracking |
| 50 | Permutations II | Medium | Backtracking |
| ... | ... | ... | ... |
📌 Tip: Focus on the problem-solving patterns and underlying logic, not just memorizing solutions.
These are the fundamental problem-solving patterns that will help you solve a wide range of questions.
| Pattern | Description | Example Problems |
|---|---|---|
| Two Pointers | Efficiently traverse a data structure from two different ends. | Two Sum, Three Sum, Remove Duplicates |
| Sliding Window | Process a subarray or sub-string in a fixed or variable window. | Longest Substring, Max Consecutive Ones |
| Binary Search | Search for an element in a sorted data set. | Find Peak Element, Koko Eating Bananas |
| Greedy Algorithms | Make the locally optimal choice at each step. | Jump Game, Meeting Rooms |
| Backtracking | Explore all possible solutions by trying to build a solution incrementally. | Permutations, N-Queens, Sudoku |
| Divide and Conquer | Break a problem into smaller subproblems. | Merge K Sorted Lists, Merge Sort |
| Dynamic Programming (DP) | Solve problems by breaking them into overlapping subproblems. | House Robber, Longest Increasing Subsequence |
| BFS / DFS | Traverse tree and graph data structures. | Number of Islands, Word Ladder |
| Trie | Use a tree-like data structure for efficient string retrieval. | Word Search II, Implement Trie |
| Heap / Priority Queue | Quickly access the minimum or maximum element. | Top K Frequent Elements, Find Median |
| Monotonic Stack / Queue | Maintain an increasing or decreasing sequence of elements. | Daily Temperatures, Largest Rectangle in Histogram |
| Union-Find (Disjoint Set) | Track a set of elements partitioned into a number of disjoint subsets. | Redundant Connection, Number of Provinces |
- NeetCode – Clean, concise explanations for top LeetCode problems.
- Tech Dose – Great for advanced topics like DP, Trees, and Graphs.
- Errichto – Competitive programming style walkthroughs.
- Abdul Bari – Clear explanations of core algorithms and theory.
- Take U Forward – Indian-friendly coding interview prep.
- Blind 75
- Grind 75
- FAANG Tagged Problems
- Top Interview Questions
- LeetCode Premium (if possible) – for access to company-tagged questions.
- Pramp – Free peer-to-peer mock interviews.
- Interviewing.io – Mocks with real engineers and detailed feedback.
- Gainlo.co – Paid FAANG-style mocks.
- LeetCode Mock Interview – A simulated interview environment.
- CodeSignal – Company-level practice and assessments.
- Use a habit tracker app (e.g., Habitica, Loop Habit Tracker).
- Set weekly goals (e.g., "Complete 20 LeetCode problems").
- Track your progress daily using your sheet.
- Review every weekend to identify what worked and what didn't.
- Join a Discord group or find a study buddy.
- Reward yourself after milestones (e.g., watch a movie, eat out).
- Focus on the problem-solving logic and not just the code.
- Write clean, well-commented code during interviews.
- Explain your thought process clearly during mocks.
- Practice writing code without auto-complete to build muscle memory.
- Simulate real interview conditions—no hints and timed.
Good luck on your preparation! 🚀
I'm Abhisek Panda 👨🎓, currently pursuing my Bachelor of Technology (B.Tech) in Computer Science 💻 Final Year 🎓.
💡 My tech journey is driven by a passion for mastering the ✨ MERN Stack, along with strong skills in ☕ Java and 📊 Data Structures & Algorithms (DSA). I’m also an 🌍 Open Source Contributor, always eager to learn, build, and share knowledge with the community.
- 🎨 Craft immersive user experiences through Frontend Development.
- 🚀 Build scalable web applications using MERN Stack.
- 🧠 Solve algorithmic challenges to sharpen problem-solving skills.
- 🤝 Contribute to impactful open-source projects.
✨ "Embrace challenges, keep learning, and grow through every experience."
💪 I thrive on taking challenges head-on, refining my craft, and delivering meaningful solutions. I’m poised to contribute my skills and enthusiasm to projects that make a difference.
🌐 Portfolio: abhisekpanda072.vercel.app 💼 LinkedIn: linkedin.com/in/abhisekpanda2004 🐙 GitHub: github.com/abhisek2004
🔥 Let’s code, collaborate, and create something amazing together! 🚀💻