People always asked us what I should do to prepare for an interview within several weeks. This post is not teaching you any sort of shortcuts or tricks that let you get offers without efforts, instead we want to help you only focus on things that have huge impact on your preparation, thus compress your preparation time within a month. In addition we’ll recommend only one or two resources in each section since there’s no need for you to check a 300 page book or tens of websites.
Pareto principle teaches us that 80% of the effects come from 20% of the efforts, in other words majority of people’s preparation work only have trivial effects on their interview performance. The key to be efficient in preparation is not getting any super secret resources, instead is by eliminating useless effort and be more focused on those 20% work.
After interviewing a lot of Gainlo interviewers, it’s quite clear that certain preparation patterns/hacks do exist and they can definitely be compressed into weeks. In fact, many of them got their job offers only within 3 weeks preparation. Let’s see how those guys including me are using this model and how you can do the same.
Day 0: Make concrete timeline and stick to it
Given a month preparation time, it’s very important to make full use of every single day. A common pattern of failure is that people either don’t know what to do or have no time in the end. They don’t have a detailed plan and they’ve no idea of the workload for each task.
So the first thing to do before your preparation is always making a detailed plan. You should be clear about how many hours per day you’ll spend on preparation, how many stages are there, how long is each one and so on so forth. What we highly recommend is to have some fixed period of time everyday that is only used for interview preparation.
I know it’s gonna be hard. For student, you may have lots of course work to do. And for employees, you just can’t do it during work hour. But you should always figure out some time EVERYDAY. No time is no excuse.
You might have no idea how to make the plan yet. No worries. We will provide a recommended one and you can always tweak based on your case and generally we recommend people spend at least 2-3 hour a day.
Stage 1: Basic knowledge review (7-10 days)
We assume you already have a computer science background (like CS 3rd year students, new grads or current employees). At this stage, we wanna make sure that you have a very solid technical background, which is the most important thing when preparing an interview.
Remember you definitely don’t need to read a book like “Introduction to algorithms” in this stage, otherwise it’ll take you more than several months. So what’s most recommended is reviewing the textbook you used at school. Since you should be quite familiar with it, it won’t take you much time to review it again. Here are things you should spend most of your time on:
- Concepts of each data structures. You shouldn’t be confused about stack and queue.
- Pros and cons of each data structure and when to use each of them. For example, you should be clear when to use tree instead of linked list.
- Understand basic algorithms like BFS, DFS, sorting algorithms. It’s better you can code them without hesitation. It’s said that only 10% of programmers can code binary search without bug.
- Pros and cons of each algorithm and when to use each of them.
- Be extremely proficient in time/space complexity analysis. It’s almost for sure they will be covered in an interview.
Things you may omit (I’m not saying they are useless, it just can be more efficient to prepare for an interview):
- Proof time complexity in maths. But you should be able to explain clearly.
- Don’t go too deep for specific data structure and algorithms. I’ll provide a list of common/important items below.
- The Technical Interview Cheat Sheet – Contains a list of very important data structures/algorithms, and things you should be very familiar with.
- Big-O cheat sheet – Very straightforward big-o list of common algorithms
Stage 2: General technical interview questions (~7 days)
There are a lot of “classic” interview questions that are very inspiring and you definitely need to go over them before your job interview. These questions are very basic and common, many real interview questions are designed on top of them. That’s why once you prepare well with them, you’ll feel like every interview question is quite familiar to you although it’s your first time to solve it.
There are few things you should keep in mind. First of all, it’s always better to write down the solution on whiteboard or at least on paper for each question. We’ve seen so many cases where the candidate talked about his approach clearly but failed to write down the solution with no bug. Once you try to write down few questions, you’ll know why I insist on this.
Secondly, whenever you notice that certain type of questions you can’t handle well, please stop for a little while. Do some research on this topic, it might be you are not quite clear about the concepts, then you should go back to stage 1 to check your book. Or you may be just not familiar with this part, you can Google more questions on this topic to practice.
- Cracking the Coding Interview – In this stage you don’t really need to read much of its text. Instead you can mainly focus on its questions.
- Leetcode – Please do not code each question and let it judge for you! Why? It just takes a huge amount of time. What we suggest is to write down answers on whiteboard or paper, and compare with the solution (you can easily find via Google). Also it’s unlikely and unnecessary to finish all of them, practicing with those most popular ones is good enough.
Step 3: Company-targeted preparation (~7 days)
We all know different company has different styles and focuses. Assume you will have your interview 2 weeks later for company X, and here are things you can do to make your preparation process much easier.
First of all, try to find your friends, connections who are working there. We also covered this topic in another blog post. Go over your Facebook/Twitter/Linkedin/G+ friends and try your best to get connected with X company employees or ex-employees. If you are applying for a big company, this shouldn’t be hard. Then ask as much information as possible about its interview process, what kind of questions were asked, what are their focuses etc.. These information will be valuable for you to adjust your preparation in the last few days.
Second, search for interview questions from this company and crack them as many as possible. You will gain so much from this process. Not only will you be familiar with what kinds of questions were asked in the past, but you’ll be more confident and well-prepared for the upcoming interview.
- Glassdoor – Most likely you won’t even be able to finish all questions on it.
Step 4: Practice and practice (4-7 days)
Here are few tips and hacks that are recommended:
- Use a timer to track your speed. For a general Google/Facebook interview, you should be able to finish 2 questions within 45 mins. So you can conduct interview sessions by yourself and see if you can finish on time.
- Talk while thinking. It’s important to keep communicating with your interviewer while solving a problem and most people prepared interview in silence. It’s a good time for you to practice this now.
- Mock interview. People tend to be nervous when someone is looking over his shoulder. That’s one of the reason why many people failed with questions that they can easily solve at home. Also communication skill is a very important factor to be evaluated. You can conduct mock interview with your friends or Gainlo.
Good approaches can save you tons of time and at the same time make you more likely to be hired. You don’t really need to prepare with competitive programming like TopCoder or delve into a lot maths to prove Big-O. Preparation can be simple.
So what do you think of these approaches?