This week I had a technical interview at Google and, although I failed, I want to share my experience in this article.
HR from Google came to me myself. I am 25 years old, Junior Android developer, I have my own simple business card site, 3 published quite primitive applications in the market, a live githab profile and 2k reputation on StackOverflow. How exactly I found I do not know. 1 time I myself applied to the vacancy for them, for a long time - maybe it affected. In addition, I often program for fun - I gossip a lot on the topic and maybe my search queries make a good impression of me. It remains only to guess.
The first interview with HR was very easy to pass. We walked through my resume, she pointed to my strengths, and I just had to give a word. She liked that I love open-source development, Android, and that I have mathematical thinking. She also asked me a couple of simple questions about the sorting algorithms and their big-O, asked to explicitly indicate the link to my GitHub in CV. She also told about the selection process.
Selection consists of several interviews. My next stage is a technical Phone-screen interview. It goes through a hangout. I was informed that in case of hiring I would be able to choose a country (only EMEA) and a city where I could work, and therefore a project. Google first recruits staff, and then distributes. They also said that I could prepare for a technical interview for as long as I wanted, but they recommend 2 weeks. I asked for 6 weeks. The subject chooses the date and time himself. Google is ready to adapt to you.
')
For the preparation of HR, she advised to read the book
Cracking the Coding Interview Steve Yegge's Blogspot . And also practice on
https://codeforces.com/ . In addition, I was asked to sign up for 1 hour online training for candidates - how to answer the questions of those interviews correctly. It has a programmer from Google and about 7 candidates. At this training one problem is considered, everyone thinks who wants to ask questions or propose solutions. Then the coach offers a template for how to respond to the task. We have been given to understand that it is normal and even good if you first give a naive (not effective) solution. You report problems with your solution, name the Run-time (Big-O) algorithm and suggest improvements. But in fact at the interview you will not have time to code a few decisions - only one. So discuss the primitive ones out loud, and start the final coding.
In a correspondence with HR, I asked about the salary, whether it depends on the country I choose. They didn’t give me any sums, but they said that I’m not disappointed that the company is in the top of wages for all countries. Here in
this post the topic of salaries is revealed more fully, and generally a good blog from a Google employee.
There were 2 questions on the technical interview. One is quite simple about working with String. By complexity - 1 course uni. The second question is more complicated (I suggested Binary search, etc.) - subjectively 3 year uni course. The questions on the acumen and knowledge of the university program are generally quite simple, which surprised me. During the response, it is important to immediately write the code (in Google doc). The code must be compiled. Pseudocode will not work.
It seemed to me that I answered well, although I did not pass the interview. They said that there is not enough knowledge in the algorithms.
Here are the conclusions I made:
- It is good to read a book before the interview that HR advises (I only read the first 20 pages).
- It's good to take a couple of courses on Coursera on “Algorithms and Data Structures” - this also gives technical English.
- You need to register for the training as early as possible, your knowledge is not evaluated on it, but you will get more time for proper preparation.
- The most important topics are Big-O notation, algorithms, graphs, big data. This is not a complete list.
If you are passing a phone-screen interview, the next step is 5 interviews at Google’s office on day 1 with a lunch break.
The selection is very tough. Let's count. If you are well prepared for each interview and have chances at each interview 80% out of 100, which is very cool, then according to probability theory, after 6 technical interviews, your chances are 0.8 ^ 6 = 0.26. In short, you rather will not take than take. But still it is worth trying.
The next attempt to interview can be only after 1 year. These are the limitations.
Update 2018: This year I was again interviewed by Google and again they first wrote to me. Again flunked on the technical. They gave 1 task for working with text, such as the MapReduce algorithm, parsing strings, working with String, merging data according to a given rule. It was difficult to answer and was stress. Itself would solve this problem only in the IDE and then for 2 days. I realized that the best way to prepare is
https://codeforces.com/ . Solving tasks like Google is a separate skill that has nothing to do with your office practice. Codeforces will give this skill.