6 Month Preparation Plan for Software Engineering Interviews
3 min read

6 Month Preparation Plan for Software Engineering Interviews

  1. First things first. Commit to it. Realize that you will spend the next 6 months on this.
  2. Give yourself time. Give yourself 6 months if possible. You are probably preparing with a job or school, so it will take time.
  3. If you want a guided bootcamp, check out Interview Camp

Here is a concise plan. Now, the pace will vary from person-to-person. I am assuming you are preparing alongside a full-time job or study.

Also, this plan doesn’t cover System Design. That should be done separately, and usually takes a lot less time than Algo prep.

1. (Month #1) Master important data structures

Learn at least the following for each data structure: Implementation, Insertion, Deletion, Lookup.

Get a book in your language of choice, or rely on online articles.

Here is a list of data structures to master:

  • Arrays and Lists
  • 2D Arrays
  • Strings
  • Linked List
  • Stack
  • Queue
  • Hash Table & Hash Set
  • Heap
  • Graphs
  • Binary Tree
  • Binary Search Tree
  • Trie

2. (Month #1) Master a few classic algorithms:

You should know how to implement them in < 10 minutes if you practice them a few times.

  • Binary Search
  • Breadth First Search
  • Depth First Search
  • Merge Sort
  • Quick Sort
  • Selection Algorithm

3. (Month #1) Prepare for Recursion and Backtracking

Used very often. Do the following problems to get a good base:

Recursive Practice Problems with Solutions - GeeksforGeeks

Congratulations! You’ve mastered the basics. Now for the good part.

4. (Month #2 & #3) Get Cracking the Coding Interview(CTCI).

It gives you a good baseline.

Most questions are on the easier side (for Google and Facebook). But it’s good to know them before proceeding to harder questions.

Note: You don’t need to implement all the questions. Follow this strategy:

  • For each chapter, implement the first 2 questions. This gives you practice with that data structure.
  • Then, go down the list of questions and try to solve them. Try visualizing the code in your head. Can you figure out the structure?
  • If yes, move to the next question to save time.
  • If no, try implementing the code.

Congratulations! You’re now good at many simple and some advanced problems. Time to do realistic stuff.

5. (Month #4 and #5) Get Elements of Programming Interviews

This is the best collection of realistic problems for Google/Facebook interviews.

They have versions in C++, Java, and Python.

Go through the book just like you went through CTCI above.

Congratulations! You have now mastered several Medium/Hard problems.

6. (Month #6) In the remaining time, look at questions on Leetcode.

The more questions you practice, the better you get at new questions.

Here are some other things to do along the way:

Learn your Language: Know how to manipulate each data structure, write classes and objects, string operations, etc.

Get a Pencil and Paper: Ditch the computer. Writing with a pencil is closer to the actual interview. Of course, for phone interviews, you can practice on a computer.

Get a Whiteboard: Want to get closer to the real deal? Get a whiteboard at home.

Here’s an odd tip - get a fine-tip marker: Fine-tip markers save a lot of space during the interview. Conference room markers are often thick and unusable.

Keep a Schedule: Always follow a schedule. It need not have a timeline - but it should have a curated list of questions and/or topics.

Know your Big Os: Don’t bluff time and space complexities if you’re not sure. Analyze them for every problem you practice.

Find a study buddy: This one can be a game changer. A majority of candidates study alone. Finding someone to discuss problems with is very motivating. Go to interview meetups or checkout Interview Camp’s online community.

Do mock interviews: 2-3 mock interviews will help weed out obvious issues in your approach. The goal here is to catch red flags and get comfortable with the actual interview.

Use good variable names: Your code should be readable, and variable names are a big part of it.

Use Helper Functions when needed: To save time, utilize helper functions. This lets you focus on the core logic of your application. Implement the actual helper functions later if needed.

Network - get referrals: Internal referrals is the most sure-shot way of getting interviews. Look through your network and find contacts in the company. A lot of times, Meetup speakers work at a company you might be targeting. This can be a connection hack.

Ask your recruiter about the process: Processes can vary by company. Make sure you ask recruiters follow-up questions. A very common one is - “Will there be a domain-specific interview?”

All the best for your interviews!

Original answer on Quora: How can I get a job at Facebook or Google in 6 months?