Coding interview study plan - what to study and practice based on time left
One of the most important questions to answer at the start of your coding interview preparation is: What study topics and practice questions should you do to most efficiently prepare for your coding interviews?
There are plenty of resources on the internet, but it can be hard to know how they fit into the time you have left to prepare. Thankfully, this article will help you with that.
I have personally gone through the dreaded Software Engineer interview process myself several times and prepared my own study plans, refining them each time.
In this article, I will share the 3 month study plan that I personally use to prepare for my coding interviews. You will find the exact topics to study (with recommended links) and exact questions to practice (with practice links).
Recommended preparation time and approach
How much time do you need to prepare for your coding interviews? Generally, 3 months (if you can dedicate 11 hours a week) is the recommended period of time for a more holistic preparation. I will be sharing recommended study plans for 3 months (recommended period), but you can generate study plans for practice questions for any time frame you need via the Grind 75 tool (built by me). More options like filtering by difficulty, topics, alternative grouping of questions can be found there.
Regardless of how long you have, if you are unfamiliar with core data structures and algorithms knowledge, you are advised to revise them before starting on the coding interview questions practice. Different people have different styles of practicing and you should do what works best for you. The various possible approaches are:
- Breadth-first preparation - Revise every topic and then start practicing a variety of questions across all topics. This strategy is recommended if you have around a month to spare.
- Depth-first preparation - Tackle one topic at a time - revise materials for a topic, practice lots of questions for that topic. After ensuring mastery of a topic, move on to the next topic. Repeat for all or selected topics. If you don't have much time, this might be the best way to prepare. You can focus on the High priority topics in our recommended study plan.
- Depth-first-then-breadth preparation - Tackle one topic at a time - revise materials for a topic, practice a few questions for that topic. After ensuring mastery, move on to the next topic. Repeat for all topics. At the end, practice a variety of questions across all topics. This strategy takes more time than others, so it's recommended if you have more than a month.
My personal recommendation would be the Breadth-first preparation or Depth-first-then-breadth preparation. It's important to have some form of breadth-level studying / practicing in your schedule so that you don't forget about the earlier topics as you move on to later topics.
The 3 month study plan - with recommended study resources and practice question links
In each study plan, you will find a list of coding interview topics with resources and practice questions that you should work through in order of priority every week.
To best utilize it, you should create a template where you break down the dates left and hours left per day, so that you can later fill in the topics/questions to cover per day.
Keep the estimate relatively conservative so you don't end up burning out.
Week 1 - 4: Topical study + practice
These are all the topics you should study, in order of priority. The learning resources linked are my algorithm cheatsheets - which give you an overview of must-remembers like time complexity, corner cases, and topic-specific useful techniques, as well as essential and recommended practice questions.
Don't forget to apply behaviors from coding interview best practices and methods from coding interview techniques early on while you practice!
Week 1
Topic | Priority | Time required |
---|---|---|
Array | High | 2 hours |
String | High | 3 hours |
Hash Table | Mid | 3 hours |
Recursion | Mid | 3 hours |
Week 2
Topic | Priority | Time required |
---|---|---|
Sorting and searching | High | 3 hours |
Matrix | High | 1 hour |
Linked List | Mid | 3 hours |
Queue | Mid | 2 hours |
Stack | Mid | 2 hours |
Week 3
Topic | Priority | Time required |
---|---|---|
Tree | High | 4 hours |
Graph | High | 4 hours |
Heap | Mid | 3 hours |
Trie | Mid | 3 hours |
Week 4
Topic | Priority | Time required |
---|---|---|
Interval | Mid | 2 hours |
Dynamic programming | Low | 4 hours |
Binary | Low | 2 hours |
Math | Low | 1 hour |
Geometry | Low | 1 hour |
Week 5 - 12: In-depth practice
Here, I listed 75 questions that you should do to be fully prepared for your coding interviews. This list of questions are generated from the Grind 75 tool (built by me), which generates recommended study plans for coding interviews based on the time you have left. More options like filtering by difficulty, topics, alternative grouping of questions can be found there.
- If you followed the Week 1 - 4 study plan, you would have done some of these questions here. Feel free to skip them or do them again.
- Feel free to skip the dynamic programming questions if you haven't studied them or feel that they won't be relevant. Many dynamic programming questions can be solved with recursion / backtracking anyway.
Don't forget to apply behaviors from coding interview best practices and methods from coding interview techniques early on while you practice!
We recommend using the Grind 75 tool which allows you to keep track of your practice progress.
Week 5
Problem | Difficulty | Duration |
---|---|---|
Two Sum | Easy | 15 mins |
Valid Parentheses | Easy | 20 mins |
Merge Two Sorted Lists | Easy | 20 mins |
Best Time to Buy and Sell Stock | Easy | 20 mins |
Valid Palindrome | Easy | 15 mins |
Invert Binary Tree | Easy | 15 mins |
Valid Anagram | Easy | 15 mins |
Binary Search | Easy | 15 mins |
Flood Fill | Easy | 20 mins |
Lowest Common Ancestor of a Binary Search Tree | Easy | 20 mins |
Balanced Binary Tree | Easy | 15 mins |
Linked List Cycle | Easy | 20 mins |
Week 6
Problem | Difficulty | Duration |
---|---|---|
Implement Queue using Stacks | Easy | 20 mins |
First Bad Version | Easy | 20 mins |
Ransom Note | Easy | 15 mins |
Climbing Stairs | Easy | 20 mins |
Longest Palindrome | Easy | 20 mins |
Reverse Linked List | Easy | 20 mins |
Majority Element | Easy | 20 mins |
Add Binary | Easy | 15 mins |
Diameter of Binary Tree | Easy | 30 mins |
Middle of the Linked List | Easy | 20 mins |
Maximum Depth of Binary Tree | Easy | 15 mins |
Contains Duplicate | Easy | 15 mins |
Week 7
Problem | Difficulty | Duration |
---|---|---|
Min Stack | Medium | 20 mins |
Maximum Subarray | Medium | 20 mins |
Insert Interval | Medium | 25 mins |
01 Matrix | Medium | 30 mins |
K Closest Points to Origin | Medium | 30 mins |
Longest Substring Without Repeating Characters | Medium | 30 mins |
3Sum | Medium | 30 mins |
Binary Tree Level Order Traversal | Medium | 20 mins |
Clone Graph | Medium | 25 mins |
Evaluate Reverse Polish Notation | Medium | 30 mins |
Week 8
Problem | Difficulty | Duration |
---|---|---|
Course Schedule | Medium | 30 mins |
Implement Trie (Prefix Tree) | Medium | 35 mins |
Coin Change | Medium | 25 mins |
Product of Array Except Self | Medium | 30 mins |
Validate Binary Search Tree | Medium | 20 mins |
Number of Islands | Medium | 25 mins |
Rotting Oranges | Medium | 30 mins |
Search in Rotated Sorted Array | Medium | 30 mins |
Week 9
Problem | Difficulty | Duration |
---|---|---|
Combination Sum | Medium | 30 mins |
Permutations | Medium | 30 mins |
Merge Intervals | Medium | 30 mins |
Lowest Common Ancestor of a Binary Tree | Medium | 25 mins |
Time Based Key-Value Store | Medium | 35 mins |
Accounts Merge | Medium | 30 mins |
Sort Colors | Medium | 25 mins |
Word Break | Medium | 30 mins |
Week 10
Problem | Difficulty | Duration |
---|---|---|
Partition Equal Subset Sum | Medium | 30 mins |
String to Integer (atoi) | Medium | 25 mins |
Spiral Matrix | Medium | 25 mins |
Subsets | Medium | 30 mins |
Binary Tree Right Side View | Medium | 20 mins |
Longest Palindromic Substring | Medium | 25 mins |
Unique Paths | Medium | 20 mins |
Construct Binary Tree from Preorder and Inorder Traversal | Medium | 25 mins |
Container With Most Water | Medium | 35 mins |
Week 11
Problem | Difficulty | Duration |
---|---|---|
Letter Combinations of a Phone Number | Medium | 30 mins |
Word Search | Medium | 30 mins |
Find All Anagrams in a String | Medium | 30 mins |
Minimum Height Trees | Medium | 30 mins |
Task Scheduler | Medium | 35 mins |
LRU Cache | Medium | 30 mins |
Kth Smallest Element in a BST | Medium | 25 mins |
Minimum Window Substring | Hard | 30 mins |
Week 12
Problem | Difficulty | Duration |
---|---|---|
Serialize and Deserialize Binary Tree | Hard | 40 mins |
Trapping Rain Water | Hard | 35 mins |
Find Median from Data Stream | Hard | 30 mins |
Word Ladder | Hard | 45 mins |
Basic Calculator | Hard | 40 mins |
Maximum Profit in Job Scheduling | Hard | 45 mins |
Merge k Sorted Lists | Hard | 30 mins |
Largest Rectangle in Histogram | Hard | 35 mins |
Factor time for your self introduction, final questions and mock coding interviews
Besides studying and practicing for coding interviews, you should also prepare your self introduction, final questions, and try out mock coding interviews.
Prepare self introduction and final questions to ask
I would suggest around 3 hours to craft your self introduction and also prepare some final questions to ask. You may refer to this self introduction guide and final questions to ask guide which should help you complete these steps fairly quickly.
Schedule mock coding interviews
You should start scheduling for mock coding interviews when you are 60% through your coding interview studying and practicing plan. Interview slots are typically provided by interviewers, so you can view them in advance and book them. The platform I have personally used and recommend is interviewing.io. Read more about different mock coding interview platforms here.