Study Game Plan

Source: The One Year Plan For Cracking Coding Interviews

It can take a year to become proficient in coding interviews for getting internships at top tech companies, but it is possible with practice and a good gameplan.

Here’s the plan:

  • Month 1: Big O Notation, Arrays, and Strings

  • Month 2: Linked Lists

  • Month 3: Stacks and Queues

  • Month 4: Trees, Binary Search Trees, AVL Trees

  • Month 5: Hashmap, Dictionary, HashSet

  • Month 5: Graphs

  • Month 6: Recursion, Dynamic Programming, Backtracking

  • Month 7: Sorting and Searching

  • Month 8: Reading(about system design, scalability, PM questions, OS, threads, locks, security basics, garbage collection, etc. basically expanding your knowledge in whatever field required, depending on your target role)

  • Month 9, 10, 11, 12: A mix of medium and hard questions in your preferred website. Practice by participating in contests, focusing on topics that you are weak at, mock interviews, etc.

Notes:

  • Here’s how I approach every topic in each month — Let’s say you are in month 4, and focusing on trees. You need to first understand what trees are, different types of trees, and be able to define class Node and Tree. You then need to be able to perform basic operations like adding, finding, and deleting an element, pre-order, in-order, post-order, and level-by-level traversal. Lastly, you practice different tree questions available on Hackerrank, Leetcode, or a website of your choice. You should target the easy questions first, and once you are comfortable, move on to medium and hard.

  • The last 4 months are for solving a mix of different questions, via contests or otherwise, which is necessary because when you are practicing tree questions, you know you have to use a tree. But if you are given a random question, how will you know a tree would be the best approach? Also, always look for the most optimal solution in forums after solving it yourself.

  • You have an entire month, and if you manage to dedicate 40–70 hours a week, you’ll be able to master trees in such a way that if a tree question is thrown at you in an interview, you’ll be able to mostly solve it since you trained your mind to think that way with intense practice. If you are a student, dedicating this much time is definitely doable, even with side projects, homework, etc. Your grades might take a hit (my As became Bs in that one semester(month 9,10, 11, 12) when I was dedicating over 8 hours a day to competitive coding) but it was worth it.

  • You should also try to build projects or do research on the side while preparing.

  • Some people learn better by participating in contests in CodeForces, CodeChef, etc. while others prefer practicing questions. Again, there is no benefit of one over the other, do what you personally prefer.

  • I do not believe in practicing particular topics for a particular company, some websites claim to have a set of questions dedicated to a particular company, eg: cracking the Google interview. I think the goal should be to be a better developer overall, focusing on just a few topics that Google tends to test candidates on may not be the best way to follow.

  • Interviewers also judge you based on your LinkedIn, Resume, past experiences, courses taken, Github, degrees and certifications, projects, research papers, etc. Practicing competitive coding does not guarantee a job, but it does guarantee you’ll be able to crack technical interview rounds most of the time, and you’ll also be a better developer overall, which might help you when you build projects.

  • Lastly, don’t stop. It may seem easy at first when you are motivated, but that fuel dies in a month or so. Keep your goal in mind, of course, it’s going to be hard, but the only ones who make it are those who stick to the plan. You can edit the plan if you need to, but once done, stick to it, even on your lazy days, even when you have a college fest or a party to attend, even when you are sleepy. Like I said, the ones who succeed are the ones who *stick to the plan*.

Last updated