Not so long ago, I
wrote about how to prepare for interviews in large companies. Then I promised
JTOne to write about how I applied the tips from the article in practice and what came of it. And so, as they say, less than a year ... :)
Disclaimer: Everything written is based on my personal experience and all the conclusions I made are subjective and may differ from the conclusions of other people.
Instead of intro
')
Last summer I was on a four-month internship at Google in Switzerland. And this summer I will have a three-month internship at the Googleplex in California. Since I have a lot of information, I decided to divide my story into two parts. In this part I will describe how I got an internship, how the interviews took place and how long the process took in time. And in the next one - what actually happened during the internship itself, what I liked there, what I did not like, and what I think about everything. Anyone interested in - welcome to habrakat.
How it all began
Actually, Google regularly publishes on the page with open positions for those who want to get a google work, and positions for interns. The list of requirements for potential interns is quite sane - you need to be able to program, preferably on something like C ++ or Java (they also write that you need to have extensive experience - but, omitting the details, I can say that you don’t have to be senior and knowledge at the level of the C ++ course of a normal university, it is enough) to imagine who is Unix (before the first internship, by the way, I imagined it very conditionally), to understand algorithms and data structures, to be a student (or graduate student) and to be younger than 32 years old. It is also important to know English well, since all the interviews and the internship itself are in English.
In general, the requirements (in some approximation :) I was completely satisfied, so I asked a good friend who was already working at Google to refer me to a summer internship - that is, to send my resume through the local Google intranet instead of sending it through the official website .
For those who are not familiar with the referencing system in large companies, this is actually something like a recommendation from an employee of the company. The usual procedure, which is based on the idea "Classy people who work for us, certainly know other classy people who can advise us." This does not give any concessions to the interviews and in general, no concessions in principle, but significantly increases the chances of getting the same interview. That, in the case of large companies like Google, is very important.
However, many of the interns on the same summer internship sent their resume in the usual way through the site - so this is also quite an option.
What happened next
And then I was written by the personnel manager (who is a recruiter, she’s a recruiter), who was responsible for recruiting students for an internship - a standard, but at the same time, pleasant letter about how pleased they were that I decided to have them boldly and She would like to know more about me and therefore she would love to call me.
We agreed on the time of the call and during the conversation (about 15 minutes) we talked about what Google is of interest to me and what I would like to do there. Then she told how the interview process goes and when I will know the result. In fact, it was a “interview for sanity” - a check on whether I speak English and whether I can formulate thoughts in a coherent way. Also during this conversation I was brought up to date - they told me how many interviews there would be, what kind of interview they would be and when the result would be.
Interview
The process itself consists of two or three technical interviews that take place by telephone. There may be something like googledocs, which is available to both the candidate and the interviewer (I wrote the decision code there) - but the document was far from always (sometimes the interviewer just forgot to create it), and about half of my interviews went so that I just said something like “Here we will create an STL map and we will write characters in the first field, and in the second one. And in the end, let's see what happened there. ” And that was enough.
The interviews themselves are fairly simple (or I was lucky with the questions :), especially if I confess (or think how to solve) 200-300 typical tasks for different things with graphs, lines, arrays and trees. Unfortunately, I can’t talk about specific questions that were asked to me - but basically they were the tasks of “finding something” in arrays or strings, generating all possible arrays or strings with some property (backtracking), “ find something "in a graph or tree. It is very desirable to offer several options (for example, slow brute force, quicker “but let's first sort” and the fastest “but you can still hash”). It is also very important to be able to estimate the time complexity of the algorithm. And then write a beautiful solution code in googledocs.
In addition, I was asked simple questions about the programming language in which I wrote (at the level of "how the interface differs from the abstract class"), questions about testing something (with an answer like "try the correct input, incorrect input, null, short input, long input "), questions on operating systems and hardware (From the memorable - the interviewer noticed that I once worked at Intel, but did not pay attention to the position of" Marketing Manager "- and how I was shocked about "CPU and machine architecture This is the code ”. Which, fortunately, is my second specialization at the university :).
The interview itself takes place in a fairly free form - the interviewer is primarily interested in how the candidate thinks, and not what he knows. Therefore, the (correct) answer “I don’t know the exact answer, but according to the logic of things should be like this” may end up being even better than the right answer, which the candidate knows from the beginning. By the way, some interviewers have an interview plan, and some come up with one task like “How would you do a Google search?” And just talk all the 45-50 minutes with a candidate on this topic (to check the horizon, you can hear the cherished “distributed computing "- each interviewer is interested to find out something different about the candidate, the sample interview does not exist). Naturally, not expecting the candidate to spell out in detail the fact that all Googlers came up with 10 years :).
After the interview, the interviewer writes in a relatively free form his impression of the candidate + what questions he asked and what the candidate answered, and sends his feedback to the recruiter. It seems that he still puts the mark from 1 to 40, where 40 is “it cannot be better”. It is worth noting that this assessment is rather subjective, at the level “the candidate (un) liked - (did not) made an impression - (did not) hooked - (did not) pleasantly surprised”.
Therefore, the interview as such - it is not so much about “answered all the questions correctly” (although this is also important) as about the perception of the candidate as a whole. It is also very important to be able to listen, if something is not clear, then ask again politely and, even if you are 110% right, do not quarrel with the interviewer, but remain calm and try to find a compromise of opinions. After all, in the end, the interviewer answers one single question - “I would like to work with this person for 3-4 months on the same team?” And without an answer “Most likely yes”, he is unlikely to give a good assessment.
It should also be noted that the interviewer may not be lucky. Since the interviews are conducted by ordinary Google programmers and not everyone can love this business, it may turn out that someone simply does not want to refuse the recruiter to discuss the candidate for the 10th time under unconvincing excuse. And his irritation may affect the interview and the assessment of the candidate. Or it may happen that it is fundamentally important for someone so that the candidate could write / insert an element in a red-ebony in the middle of the night in 5 minutes and if he cannot do it (for example, I cannot - I need to think at least) then all, "they do not take such astronauts." Or he has the first interview in his life and he doesn’t know how to evaluate a candidate at all, but automatically compares him with himself (and not with other candidates). Personally, I was always lucky, but I heard a couple of stories about very surreal interviews from my friends, who also had a telephone interview.
After the interview
Interviews can be on the same day - immediately one after another (as it was in the US). But first they can have one, and then, if the candidate has a good feedback on the first, after about a week, the second (it was in Europe). In any case, somewhere in a week I received an email in which it was written “You are very cool and we move on to the next step” (or, alternatively, it could have written “You are very cool, but now we don’t have suitable position ").
The next step is, in fact, the search for the team in which the intern will be trained. Usually interns indicate what they would like to do (at the level of backend / frontend / low level + hardware) and in what languages ​​they want to program. All of this is taken into account as wishes, but is not a guarantee of anything - for example, I indicated the desired Java language, and on the internship I wrote in JavaScript, added HTML pages (oh, debugging styles under IE 6, I will never forget you!) And painted design options in Photoshop. My mistake was that I was so happy from the very fact that I was taken on an internship that I didn’t specify whether I would really be doing what I indicated in my wishes. I have drawn conclusions from my mistakes, and my second internship will precisely match my wishes.
The team is based on the wishes and possibilities of the future intern. That is, if he says “I want to dissect the Linux kernel” in my wishes, and in the experience there is only writing web applications in PHP, then, most likely, he will not prepare anyone in the end. And will write frontend :).
When a team is found, another interview takes place - usually directly with the future mentor or someone else directly from the potential team. This interview is no longer so technical (at least it was with me), but more informative. The interviewer tells what the team does, what the intern will work on, in what language it will be necessary to write code, which is generally expected as a result of the internship. In fact, the task of this interview is to make sure that the team wants this particular intern (most likely they decided this even before the interview - based on the resume and previous reviews). And that the intern wants to work in this team (here, probably, the main task of the interviewer is to convince the intern about this).
Finishing touches
The last step is to make the proposal itself: from when to when the internship will take place, in which office, what the salary will be (I’ll note that it is always enough to cover all the expenses for the internship, including relocation), how many hours a week you will have to work (usually This is a full rate) and other details. After the recruiter prepares an internship offer, some high-level manager has to assure him (I think this is just a formality - usually the manager has no reason to refuse the candidate) and another candidate receives a long-awaited letter “Congratulations! ... ". The whole process takes - from the moment of the first contact to the moment of the congratulatory letter - about two months.
UPD: And for those who are interested, but too lazy to look for, on a tip
mraleph www.google.com/jobs/students/ and
www.google.com/jobs/students/emea/
If someone has questions about which I have not written, I will answer with pleasure :).
Ps.
Part 2