You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tech-interview-handbook/contents/coding-interview-study-plan.md

117 lines
8.1 KiB

---
id: coding-interview-study-plan
title: Coding interview study plan - what to study and practice based on time left
description: Study topics and practice questions based on time left to prepare for Software Engineer coding interviews
keywords:
[
coding interview study plan,
what to study for coding interviews,
how to prepare for coding interviews,
what practice questions to do for coding interviews,
how to prepare for coding interviews in 3 months,
]
sidebar_label: Coding interview study and practice plan
---
import QuestionList from './\_components/QuestionList';
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).
<!--
Do check out these links for:
What to study and practice if you have 1 month left to coding interviews
What to study and practice if you have 1 week left to coding interviews
-->
## 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:
1. **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.
1. **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.
1. **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 must-do practice questions.
Don't forget to apply behaviors from [coding interview best practices](./coding-interview-best-practices.md) and methods from [coding interview techniques](./coding-interview-techniques.md) early on while you practice!
#### Week 1
| Topic | Priority | Time required |
| ---------------------------------------- | -------- | ------------- |
| [Array](./algorithms/array.md) | High | 2 hours |
| [String](./algorithms/string.md) | High | 3 hours |
| [Hash Table](./algorithms/hash-table.md) | Mid | 3 hours |
| [Recursion](./algorithms/recursion.md) | Mid | 3 hours |
#### Week 2
| Topic | Priority | Time required |
| --- | --- | --- |
| [Sorting and searching](./algorithms/sorting-searching.md) | High | 3 hours |
| [Matrix](./algorithms/matrix.md) | High | 1 hour |
| [Linked List](./algorithms/linked-list.md) | Mid | 3 hours |
| [Queue](./algorithms/queue.md) | Mid | 2 hours |
| [Stack](./algorithms/stack.md) | Mid | 2 hours |
#### Week 3
| Topic | Priority | Time required |
| ------------------------------ | -------- | ------------- |
| [Tree](./algorithms/tree.md) | High | 4 hours |
| [Graph](./algorithms/graph.md) | High | 4 hours |
| [Heap](./algorithms/heap.md) | Mid | 3 hours |
| [Trie](./algorithms/trie.md) | Mid | 3 hours |
#### Week 4
| Topic | Priority | Time required |
| --- | --- | --- |
| [Interval](./algorithms/interval.md) | Mid | 2 hours |
| [Dynamic programming](./algorithms/dynamic-programming.md) | Low | 4 hours |
| [Binary](./algorithms/binary.md) | Low | 2 hours |
| [Math](./algorithms/math.md) | Low | 1 hour |
| [Geometry](./algorithms/geometry.md) | 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**](https://www.techinterviewhandbook.org/grind75/) (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.
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](./coding-interview-best-practices.md) and methods from [coding interview techniques](./coding-interview-techniques.md) early on while you practice!
<QuestionList />
## 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](./self-introduction.md) and [final questions to ask guide](./final-questions.md) 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](https://iio.sh/r/DMCa). Read more about [different mock coding interview platforms here](./mock-interviews.md).