- First things first. Commit to it. Realize that you will spend the next 6 months on this.
- Give yourself time. Give yourself 6 months if possible. You are probably preparing with a job or school, so it will take time.
- 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
- Linked List
- Hash Table & Hash Set
- Binary Tree
- Binary Search Tree
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:
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?