Graph algorithms: If time allows, you can revise a few graph algorithms as well. For example, Dijkstra’s algorithm, Bellman-Ford algorithm, and Topological sort.
Common interview patterns: Other than these common algorithms, it is preferred to revise and understand some common coding interview patterns like Two Pointers, Sliding Window, Fast and Slow Pointers, and Merge Intervals.
Educative offers an excellent series of courses designed to help you practice coding problems based on common interview patterns and algorithms. These courses cover 228 coding problems and are available in 6 languages:
Day 4: Dive into recursion, backtracking, and dynamic programming
Recursion: For recursion, quickly revise and familiarize yourself with the concept of base caseThe condition that stops the recursion. and recursive caseThe part where the function calls itself with modified parameters.. Then, practice a few commonly asked recursion coding problems like Factorial calculation, Fibonacci Sequence, String Reversal, and Power Calculation (e.g., pow(x, n)
). While practicing these problems, visualize how recursive calls are made, and understand the flow and depth of recursion.
Backtracking: For backtracking, revise and understand how is it different from recursion. Then, practice common problems like N-Queens, Sudoku Solver, and Permutations and Combinations.
Dynamic Programming (DP): For DP, understand its two fundamental concepts, overlapping subproblemsSubproblems recur multiple times. and optimal substructureOptimal solutions can be constructed from optimal solutions of subproblems., and two of its techniques memoization (top-down) and tabulation (bottom-up). Then practice common DP coding problems like Fibonacci Sequence (compare recursive vs. DP solutions), Knapsack Problem (both 0/1 Knapsack and Unbounded Knapsack), Longest Common Subsequence (LCS), Longest Increasing Subsequence (LIS), and Coin Change.
Dynamic programming can be a complex topic, but don’t worry—Educative has you covered! Educative offers separate courses on focusing on dynamic programming patterns and its commonly asked coding problems. These courses are available in 4 programming languages:
Day 5: Study trees and graphs
Review and understand the structure and implementation of binary trees, binary search trees (BST), and graphs. For trees, go over the basic tree traversals:
In-order
Pre-order
Post-order
Level-order
For graphs, by this time, you might have already reviewed common graph algorithms like Dijkstra’s algorithm, Bellman-Ford algorithm and graph traversals like DFS and BFS, so just practice some common trees and graphs coding problems.
Day 6: Practice mock interviews
We all know that:
Practice makes a man perfect.
So, practice, practice and practice. When you prepare on your own, there are chances that you might miss out on some very basic concepts or probably do a certain task in a wrong way. This is where taking someone's help will do the magic. While preparing for the coding interviews, attempting mock interviews help in a great way. They help you get good at time management, debugging, and coding fluency.
Take at least 2-3 mock interviews using platforms like Educative, or Pramp.
With Educative's AI-driven mock interviews, you can improve your skills in a bias-free environment, ensuring your true potential shines through.
Day 7: Final preparation and rest
General tips for interview preparation
Understand, Don’t Memorize: Try to comprehend the underlying principles or patterns instead of rote memorization. Understand common problem-solving approaches (e.g., divide and conquer, sliding window).
Use flashcards or notes: For quick reviews of key algorithms, data structures, and time complexities.
Time Management: Allocate specific time slots for each session to ensure comprehensive coverage.