On This Page

What to Focus On At Each Level

Not everyone starts from the same place. Figure out where you are, then focus your energy where it matters most.

๐ŸŸข Beginner โ€” "I know what an array is, sort of"
  • Implement basic data structures from scratch
  • Get comfortable with recursion (really comfortable)
  • Solve every easy you encounter โ€” don't skip to mediums
  • Focus on arrays, strings, hash maps, and linked lists
  • Goal: 50+ easy problems solved cleanly
๐ŸŸก Intermediate โ€” "I can solve easies but mediums wreck me"
  • Learn the 15 core patterns โ€” study 3-4 problems per pattern
  • Focus on trees, graphs, BFS/DFS, and sliding window
  • Start DP (1D first, then 2D)
  • Time yourself: 25 min per medium
  • Goal: solve 60-70% of mediums within time
๐Ÿ”ด Advanced โ€” "I can do mediums, but hards feel random"
  • Hards are usually 2+ patterns combined
  • Master segment trees, monotonic structures, advanced DP
  • Practice under pressure โ€” mock interviews, not solo grinding
  • Focus on communication โ€” explain your approach before coding
  • Goal: solve 30-40% of hards in 40 min

The Plans

โš ๏ธ Who This Is For You have an interview in 7 days and need to cram. This covers the highest-ROI topics โ€” the patterns that appear in 80% of interviews. You won't be an expert, but you'll be dangerous. Budget 3-4 hours per day.
Day 1 โ€” Foundations

Arrays, Strings, Hash Maps 6 problems

๐Ÿ”ฅ Warm-Up (15 min): Contains Duplicate, Valid Anagram
โฑ ~3 hours
Day 2 โ€” Two Pointers & Sliding Window

The O(n) Power Moves 6 problems

๐Ÿ”ฅ Warm-Up (15 min): Valid Palindrome, Best Time to Buy Stock
โฑ ~3.5 hours
Day 3 โ€” Binary Search & Sorting

Divide and Conquer 5 problems

๐Ÿ”ฅ Warm-Up (15 min): Binary Search
โฑ ~3 hours
Day 4 โ€” Trees & Graph Traversal

Recursion and BFS/DFS 7 problems

๐Ÿ”ฅ Warm-Up (15 min): Invert Binary Tree, Max Depth
โฑ ~4 hours
Day 5 โ€” Dynamic Programming

The Boss Battle 6 problems

๐Ÿ”ฅ Warm-Up (15 min): Climbing Stairs, House Robber
โฑ ~4 hours
Day 6 โ€” Stacks, Heaps, Linked Lists

Supporting Cast 7 problems

๐Ÿ”ฅ Warm-Up (15 min): Valid Parentheses, Reverse Linked List
โฑ ~3.5 hours
Day 7 โ€” Mock Interview & Review

Simulate the Real Thing 3-4 problems (timed)

  • Morning: Review Interview Patterns, Big-O Cheat Sheet
  • Afternoon: 3 timed problems (25 min each) โ€” pick random topics. No peeking at hints.
  • Practice talking: Explain your approach out loud before writing code. Interviewers care about your thought process as much as the code.
  • Review weak spots: Which pattern gave you the most trouble this week? Do 2 more from that category.
โฑ ~3 hours
๐Ÿ’ก Sprint Total: ~40 problems solved, ~24 hours of work. You'll cover 80% of what interviewers ask. The remaining 20% (advanced graphs, segment trees, tries) rarely shows up at standard FAANG rounds for mid-level positions.
๐Ÿ’ก Who This Is For You have a month to prepare and want solid coverage of all major topics. 1.5-2 hours per day, ~90 problems total. By the end, you'll handle most mediums confidently and some hards.
Week 1 โ€” Data Structure Foundations ~25 problems
Days 1-2

Arrays, Strings, Hash Maps

๐Ÿ”ฅ Warm-Up: Contains Duplicate, Valid Anagram
Days 3-4

Linked Lists, Stacks, Queues

๐Ÿ”ฅ Warm-Up: Reverse Linked List, Valid Parentheses
Days 5-7

Trees & Heaps

๐Ÿ”ฅ Warm-Up: Invert Binary Tree, Max Depth
Week 2 โ€” Core Algorithms ~25 problems
Days 10-11

BFS & DFS on Graphs

Days 12-14

Recursion & Backtracking

Week 3 โ€” Advanced Techniques ~22 problems
Days 15-18

Dynamic Programming โ€” The Grind

Week 4 โ€” Advanced DS & Polish ~18 problems + mocks
Days 22-24

Graphs (Advanced), Tries, Union-Find

Days 25-28

Mock Interviews & Weak Spot Drilling

  • Daily routine: 1 morning mock interview (2 problems, 50 min total) + afternoon weak-spot drilling
  • Mock format: pick 1 medium + 1 medium/hard at random. Timer on. Explain out loud.
  • Review Interview Patterns โ€” for each mock problem, identify which pattern it uses
  • 8 problems from weak areas (whichever topics tripped you up most)
  • Final day: read through every problem you solved this month. Can you describe the approach in one sentence each?
๐Ÿ’ก Month Total: ~90 problems, ~50 hours. Covers every major pattern. You should be able to recognize patterns within 2-3 minutes of reading a problem and have a working approach for most mediums.
๐Ÿ’ก Who This Is For You're preparing well in advance and want mastery, not just competence. 1 hour per day minimum, ~150 problems total. By the end, you'll handle hards consistently and understand why algorithms work, not just how to apply them.
Month 1 โ€” Build the Foundation ~50 problems

Weeks 1-2: Every Data Structure, Implemented From Scratch

๐Ÿ”ฅ Before You Start: Implement in your language of choice: dynamic array, singly linked list, doubly linked list, stack (array-based), queue (linked-list-based), hash map (with chaining and resizing), BST with insert/search/delete, min-heap with push/pop, trie with insert/search/startsWith. This takes time, but you'll never forget how these work.
  • Read every guide in the Data Structures section
  • 20 easy/medium problems spanning all basic data structures
  • For each problem: solve it, think of an alternative approach, analyze both complexities

Weeks 3-4: Core Algorithm Patterns

  • Two pointers, sliding window, binary search, BFS, DFS, sorting, backtracking
  • 30 problems โ€” at least 4 per pattern
  • For each problem: solve it, then find a better solution, then explain both approaches out loud
  • End-of-month test: 5 random medium problems, 25 min each, no hints. Target: solve 3 of 5.
Month 2 โ€” Advanced Techniques ~50 problems

Weeks 5-6: Dynamic Programming Deep Dive

  • Week 5: 1D DP โ†’ subsequence DP โ†’ knapsack variants (0/1, unbounded, bounded)
  • Week 6: 2D DP โ†’ interval DP โ†’ bitmask DP (for n โ‰ค 20)
  • 25 problems, escalating difficulty โ€” start with easies, end with hards
  • Focus on identifying the state โ€” what information do you need to make the next decision? That's your dp[] dimensions.
  • For every DP problem: write the recurrence FIRST, then code

Weeks 7-8: Graph Algorithms & Greedy

  • Dijkstra, Bellman-Ford, topological sort, MST (Kruskal + Prim), Union-Find with rank + path compression
  • Greedy: exchange argument proofs, activity selection, Huffman intuition
  • 25 problems โ€” mix of graph + greedy
  • Implement Dijkstra and Kruskal's from memory (you should be able to write both in under 10 minutes)
  • End-of-month test: 5 random medium/hard problems, 35 min each. Target: solve 3 of 5.
Month 3 โ€” Mastery & Competition ~50 problems + mocks

Weeks 9-10: Advanced Data Structures & String Algorithms

  • Segment trees (range query + point update), Fenwick tree (BIT), monotonic deque
  • String matching: KMP, Rabin-Karp, Z-algorithm
  • 20 hard problems โ€” these show up in L5+/Staff interviews at FAANG
  • Read: Segment Trees, String Matching, Network Flow

Weeks 11-12: Mock Interviews & Full Simulation

  • 3-4 mock interviews per week โ€” use Pramp, Interviewing.io, or a friend
  • Time yourself strictly: 20 min for mediums, 35 min for hards. If you can't solve it in time, stop and study the solution.
  • After each mock: write down what pattern it was, what you missed, and what you'd do differently
  • 30 problems from contest archives (LeetCode weekly contests) โ€” trains speed under pressure
  • Practice the 2-3 minute "approach explanation" before coding โ€” this is what separates a hire from a no-hire
๐Ÿ’ก Quarter Total: ~150 problems, ~100 hours. You'll have deep pattern recognition, can implement any standard algorithm from memory, and can explain your thinking clearly under pressure. This is the level that gets offers from top companies.

Mock Interview Format

Practicing problems solo is necessary but not sufficient. Real interviews have pressure, time limits, and another person watching. Here's how to simulate that.

Standard 45-Minute Technical Interview

  • 0:00 โ€“ 2:00
    Read the problem. Ask clarifying questions. "Can the input be empty? Are values always positive? Is it sorted?" โ€” even if you think you know, asking shows maturity.
  • 2:00 โ€“ 5:00
    Talk through your approach. "I'm thinking this is a sliding window problem because we need a contiguous subarray. I'll maintain a window and shrink when the constraint breaks." Don't start coding yet.
  • 5:00 โ€“ 7:00
    Discuss complexity. "This approach is O(n) time, O(k) space for the hash map." Interviewer may push for optimization here.
  • 7:00 โ€“ 30:00
    Code the solution. Talk as you go. Name your variables clearly. Handle edge cases inline ("I'll check for empty input here"). Don't go silent for more than 30 seconds.
  • 30:00 โ€“ 38:00
    Test with examples. Walk through your code with the given example step-by-step. Then test an edge case (empty input, single element, all same values).
  • 38:00 โ€“ 45:00
    Discussion. Interviewer may ask: "Can you optimize this? What if the input doesn't fit in memory? What's the worst case?" Have answers ready.

How to Practice Solo

  • Set a timer. 25 minutes for mediums, 40 for hards. When it dings, stop โ€” even if you're close. This trains you to work under pressure.
  • Talk out loud. Sounds silly alone, but it builds the habit. In the real interview, going silent for 5 minutes kills your chances.
  • Write on paper or a plain editor. No autocomplete, no syntax highlighting for at least some practice sessions. Interview whiteboards don't have IntelliSense.
  • Grade yourself honestly. If you looked at a hint, that's a fail โ€” mark it for re-attempt in 3 days.
  • Review optimally. After solving, always check if a cleaner solution exists. Study it. Can you write it from memory tomorrow?
๐ŸŽฏ The #1 Mock Interview Tip When stuck, don't go silent. Say: "I'm considering two approaches โ€” [X] and [Y]. Let me think about the tradeoffs." Then actually think. Interviewers want to see your reasoning, even when it's messy. Silence makes them nervous.

Common Mistakes in Interview Prep

Almost everyone makes these. Awareness alone puts you ahead of 70% of candidates.

โŒ Grinding random problems without learning patterns

Solving 500 random problems teaches you 500 specific solutions. Solving 100 problems organized by pattern teaches you to solve thousands. Pattern recognition is the whole game.

โœ… Organize by pattern. Do 4-5 problems per pattern, not 50 random ones.

โŒ Looking at the solution after 5 minutes

Struggling is where learning happens. If you look at the answer after 5 minutes, you've just read a solution โ€” you haven't practiced solving. You'll forget it by tomorrow.

โœ… Spend at least 20 minutes before looking at hints. 30 for hards. Your brain needs friction to form memories.

โŒ Never revisiting problems you got wrong

You solved it with help on Monday. By Friday, can you solve it again from scratch? Probably not, unless you revisited it. Spaced repetition matters.

โœ… Re-attempt failed problems 3 days later, then 7 days later. If you can solve it clean both times, it's learned.

โŒ Only practicing easy problems

Easies build confidence but not skill. Most interviews are 1-2 medium problems. If you can't solve mediums in 25 minutes, you're not ready โ€” no matter how many easies you've crushed.

โœ… Spend 60% of your time on mediums, 20% on easies (warm-up), 20% on hards (stretch).

โŒ Not practicing under time pressure

You can solve a medium in 45 minutes at home with Stack Overflow open? Great, but the interview gives you 25 minutes with someone watching. The pressure changes everything.

โœ… Timer on for every practice session. No exceptions. Train like you fight.

โŒ Ignoring communication skills

Two candidates solve the same problem. One silently codes for 20 minutes. The other explains their thought process, discusses tradeoffs, and walks through test cases. Same code, different outcomes. The talker gets the offer.

โœ… Practice explaining your approach out loud, even when alone. It's a skill that atrophies without practice.

โŒ Starting to code before having a plan

You read the problem, immediately start typing, realize your approach doesn't work at line 30, and now you've wasted 15 minutes. This happens in real interviews and it's devastating.

โœ… Spend 3-5 minutes thinking BEFORE writing any code. Write pseudocode or a bullet-point plan. Confirm the approach with the interviewer. Then code.

โŒ Skipping complexity analysis

You solved the problem! But when they ask "what's the time complexity?" you mumble "uh, O(n)... I think?" This signals you don't understand what you wrote.

โœ… Analyze time AND space complexity for every problem you solve. Make it automatic. Check the Big-O cheat sheet until it's second nature.

๐ŸŽฏ The Meta-Strategy Don't just solve problems โ€” categorize them. After solving a problem, ask: "What pattern is this? What similar problems exist?" The goal is building pattern recognition, not memorizing solutions. When you see a new problem in an interview, you should think "this looks like a sliding window variant" within 2 minutes.

The Problem-Solving Framework (Use In Every Interview)

  1. Clarify. Restate the problem. Ask about edge cases, constraints, input types.
  2. Examples. Work through the given example by hand. Create your own edge case.
  3. Brute force. State the obvious approach and its complexity. "I could check all pairs in O(nยฒ), but let me see if I can do better."
  4. Optimize. Apply pattern recognition. "The sorted input suggests two pointers for O(n)."
  5. Walk through. Explain your optimized approach step by step before coding.
  6. Code. Write clean, readable code with good variable names.
  7. Test. Trace through your code with examples. Check edge cases.
  8. Analyze. State time and space complexity. Mention potential further optimizations.