Google Internship - Part 1

    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 advice from the article in practice and what came of it. And so, as they say, not even a year has passed ... :)

    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 joining

    Last summer, I was on a four-month internship at Google in Switzerland. And this summer I have a three-month internship at 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 on an internship, how the interview went, and how long the process took in time. And in the next - what, in fact, was during the internship, what I liked there, what I didn’t like, and generally that I think about all this. To all those interested, 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 job, and positions for interns. The list of requirements for potential interns is quite sane - you need to be able to program, preferably in something like C ++ or Java (they also write that you need to have extensive experience - but, omitting the details, I can say that it is not necessary to be a senior and knowledge at the C ++ course level, a normal university is quite enough), imagine who Unix is ​​(before the first internship, by the way, I imagined this very conditionally), well versed in algorithms and data structures, be a student (or graduate student) and be younger than 32 years. It is also important to have a decent knowledge of English, as all interviews and the internship itself are in English.

    In general, I was quite satisfied with the requirements (in a certain approximation :), so I asked a good friend who already worked at Google to refer me to a summer internship - that is, send my resume via the local Google intranet instead of sending it through the official website .

    For those who are not familiar with the refereeing system in large companies - in fact, this is something like a recommendation from a company employee. The usual procedure, which is based on the thought "Cool people who work for us, probably know other cool people who can advise us." This does not give any concessions to the interview and in general no concessions in principle, but significantly increases the chances of this interview getting. Which, in the case of large companies like Google, is very important.

    However, many of the interns at the same summer internship sent their resumes in the usual way through the site - so this one is also quite an option.

    What happened next

    And then I wrote to the personnel manager (who is recruiter, she is also a recruiter), who was just in charge of recruiting students for an internship - a standard, but at the same time nice letter about how glad they were that I decided with them to have an internship and that 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 interested in and what I would like to do there. Then she told me how the interview process goes and when about I will know the result. In fact, it was a “sanity interview” - a test to see if I speak English and can formulate thoughts in a coherent way. Also during this conversation I was brought up to date - they told me how many interviews will be, what kind of interview they will be and when there will be a result.


    The process itself consists of two or three technical interviews that take place over the telephone. There may be something like googledocs that 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 write symbols in the first field, and in the second number. And in the end we’ll see what happened there. ” And that was enough.

    The interviews themselves are quite uncomplicated (or I was lucky with questions :), especially if you solve (or think about how to solve) 200-300 typical tasks for it in any case with graphs, lines, arrays and trees. Unfortunately, I can’t talk about specific questions that I was asked - but basically they were tasks to “find something” in arrays or strings, to generate all possible arrays or strings with some kind of property (backtracking), “ find something ”in a graph or tree. It is very desirable to offer several options (for example, slow sorting, faster “but let's sort it first” and the fastest “but you can still hash”). It is also very important to be able to evaluate the time complexity of the algorithm. And then another write beautiful solution code in googledocs.

    In addition, I was asked simple questions about the programming language I wrote (at the level of “how the interface differs from an abstract class”), questions about testing something (with the answer like “try the correct input, incorrect input, null, short input, long entry "), questions on the subject of operating systems and hardware (From a memorable one - the interviewer noticed that I once worked at Intel, but did not pay attention to the position of" Marketing Manager "- and how I should have been shocked by the topic "Architecture of the processor and machine th 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 this way and that” may turn out to be even better than the right answer that the candidate knows from the very beginning. By the way, some interviewers have an interview plan, and some come up with one task like “How would you do Google search?” And just talk for 45-50 minutes with a candidate on this topic (to check your horizons, maybe hear the cherished “distributed computing "- each interviewer is interested in learning something about the candidate, there is no typical interview). Naturally, not expecting the candidate to state in detail what all googlers have been inventing for 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 gives a rating from 1 to 40, where 40 is “it does not get better”. It is worth noting that this assessment is quite subjective, at the level of “candidate (not) liked - (not) made an impression - (not) hooked - (not) pleasantly surprised”.

    Therefore, the interview as such - it is not so much about “answered correctly to all questions” (although this is also important), but about the perception of the candidate as a whole. Here it is also very important to be able to listen to, if something is not clear, then politely ask again and, even if you are 110% right, do not swear with the interviewer, but keep calm and try to find a compromise of opinions. After all, in the end, the interviewer answers himself to one single question - “Would I like to work with this person for 3-4 months in one team?” And without an answer “Most likely yes”, he is unlikely to give a good mark.

    It should also be noted that with 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 interview a candidate for the 10th time with an unconvincing excuse. And his irritation may affect the interview and the assessment of the candidate. Or it may happen that it’s crucial for someone that a candidate can write an insert / delete element in a red-black tree in the middle of the night in 5 minutes and if he cannot do it (for example, I can’t - I need to at least think) that’s all, “they don’t take such astronauts”. Or he has the first interview in his life and he does not know how to evaluate a candidate at all, but automatically compares him with himself (and not with other candidates). Personally, I was always lucky

    After the interview,

    Interviews can be on the same day - one after another (this was the case in the USA). Or maybe one thing at first, and then, if the candidate has a good review on the first, somewhere in a week the second (as it was in Europe). In any case, about a week later I received an email saying “You are very cool and we are moving on to the next step” (as an option, instead it could say “You are very cool, but now we don’t have it for you 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 backend / frontend / low level + hardware level) and in which languages ​​they want to program. All this is taken into account as wishes, but it is not a guarantee of anything - for example, I indicated the desired Java language, and in my internship I wrote in JavaScript, typeset HTML pages (oh, debugging styles for IE 6, I will never forget you!) And painted design options in Photoshop. My mistake was that I was so happy from the fact that I was accepted for an internship that I did not specify whether I would really do what I indicated in the wishes. I made conclusions from my mistakes, and my second internship will already exactly match my wishes.

    The team is based on the wishes and capabilities of the future intern. That is, if in his wishes it says “I want to dissect the Linux kernel”, and in the experience there is only writing web applications in PHP, then, most likely, he will not dissect anyone in the end. And he will write frontend :).

    When the team is found, another interview takes place - usually directly with the future mentor or someone else directly from the potential team. This interview is not so technical (at least it was with me), but more informative. The interviewer tells what the team is doing, what the intern will work on, in what language it will be necessary to write the code, which is generally expected as a result of the internship. In fact, the purpose of this interview is to make sure that the team wants this particular intern (most likely they decided this before the interview - based on the resume and previous reviews). And that the intern wants to work precisely in this team (here, probably, the interviewer's main task is to convince the intern of this).

    Finishing touches

    The last step is to draw up the proposal itself: from when to when the internship will take place, in which office, what will be the salary (I note that it is always enough to cover all the costs of the internship, including moving), how many hours a week will need to work (usually this is full bid) and other details. After the recruiter draws up an internship offer, he must be assured by some senior manager (I think this is just a formality - usually the manager has no reason to refuse the candidate) and somewhere else in a week or two the candidate receives the 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, by the tip of and

    If someone has questions that I haven’t written about, I will answer with pleasure :).

    PS. Part 2

    Also popular now: