In this post I will share my thoughts about interview preparation process for Software Engineer position. It might be useful for those who are planning to interview with Google, Facebook, Jane Street, Amazon, and other companies which employ tough algorithmic problems to select candidates. I will start with the review of my background, then briefly describe my preparation process, and, finally, provide a posteriori preparation advices.
I started programming at the age of 15 (I was in a special high school for programmers), then I was studying Mathematics and, after that, worked for 4 years as SE. Finally, I was doing PhD in Computational Physics. So at the beginning of my preparation process, I already forgot algorithms classes from my high school but I knew quite well several programming languages.
I started my preparation more than a year before having interviews to the target companies. At the first step, I read the whole Cormen (March’16-September’16). I solved most of the exercises and implemented all the algorithms except those which are irrelevant for the interview like FFT. To practice, I solved around 250 problems from the book “Elements of programming interview”. I typically read one chapter per week and solved 1-2 problems per day. In addition, I was solving problems from Leetcode (June’16-July17). At the beginning, I was solving a few easy per week. During the second step, I was reading topcoder algorithms tutorials and solving some problems listed there. At that time, I was solving 1-2 problems from leetcode a day, sometimes participating in the contests. During the third preparation step, I solved around 100 problems on leetcode for 3 weeks (it was right before Google telephone interview). The final preparation step (preparation for Google onside) was solving contest per day (topcoder, hackerrank, hackerearth), plus 2 problem per day on whiteboard.