Interning at Google — the whole story

Viviana Sutedjo
9 min readDec 16, 2019
Google swag — the interns get this as surprise after accepting the offer:)

Part 1 — Getting the internship

I recently accepted my returning Software Engineering (SWE) internship offer from Google for the next summer after successfully finishing my first Google internship at the Zurich offices. Many people have asked me many questions about basically everything; the application process, working at Google, and also some very random questions from strangers on the street who recognized the Google logo on my intern backpack. As much as I like talking about my unforgettable experience as an intern, I kind of repeat the same things over and over again every time, so I thought it might be helpful to some fellow students to write down that story here. Feel free to ping me (Linkedin) if you have any more questions!

I’ll split this article into multiple chapters (see: my profile) so that people interested in one particular part can skip the others. Keep in mind that the information below is just my personal experience & applies to Zurich/EMEA region; some of it might not necessarily be the same in other regions. I hope this article might help fellow students to relax and enjoy the journey a little more!

First step: The online application

The first big step — applying to Google — can be quite nerve-wracking. After all, it is a quite competitive application process! But you don’t have to be afraid at all — the application process is simple and you have nothing to loose, right?
The application period is around October — November takes place on the online portal (https://careers.google.com/jobs/) where you provide your basic contact information and your CV and an optional cover letter. Keep in mind that many applications reach the Google recruiters and thus, less time is spent on each resume, so your resume should highlight your best accomplishments in a way that the reader can get to these information quickly. I found it helpful to have friends read my resume in under a minute and tell me which information they saw first and which stuck in their minds.

If you know any Googler (even interns) that knows your work, kindly ask them if they can refer you before you apply — this greatly increases your chances of being seen by a recruiter. Keep in mind that this only works for 30 days and 3 applications and it has to be submitted before you apply!

After submitting the application, a recruiter should reach out to you after a few weeks and — in the best case — ask you to fill a Google form (“questionnaire”) with your coding skills and preferences. These will be taken into consideration when the recruiter sets up your two interviews. Congratulations, you made the first stage!

Oh oh … the interview

Here we are — the mysterious Google interviews. I remember being unbelivably nervous in the days leading up to the interview day (I think mainly because I knew so little about what was going to happen), but I want to stress that the interviews themselves were very friendly and actually a lot of fun (yes, that sounds nerdy, I know…)!

In EMEA, you have two back-to-back 45 minute long interviews, with 15 minutes or so in between. Make sure to tell your flatmates/family/dog to not disturb you during this time and test your connection, microphone and camera beforehand. I also made sure to have a glass of water nearby if I needed it. The interviews take place via Google Hangouts (of course;)) and you share your code on a shared Google Docs document that is provided by the interviewer. The interviews are held with Google engineers from different offices and they should follow a somewhat similar scheme:

The first five or so minutes are spent introducing each other, you might also be asked about a specific thing in your CV, so make sure you know what to say about the things you mention there. Relax and show that you are happy to talk to them:)

Then, they give you a technical question, usually it is a classical coding question (sort an array in some way or find a substring). For this, I have a suggestion on what you can do:

  • First, make sure you understand the task correctly. Feel free to repeat the question in your own words, maybe walk through a brief example and the expected output.
  • Ask questions! Is the input restricted (certain length, only latin characters, is it always non-null…)? Which exceptions do you have to take care of (Out of bounds…)? Also ask about priorities, so if we should rather take care of a smaller computing time or scalability or memory…? Think of some test inputs that test the boundaries (null input? empty String?) and ask what is the expected output for those.
  • Once you are sure you understand the whole task, present the first solution that comes to mind. Most often, that is the straight forward bruteforce solution. It is great if you explain why that solution, while it works, would not be the one you choose. Also, make sure to provide expected runtimes and tradeoffs to every solution that you consider, this proves that you know what the benefits and downsides to them are.
  • Iterate on getting a better algorithm until the interviewer is also happy with your idea. Then, start coding it in the Doc. Interviewers don’t care about specific names of libraries and built-in or common functions that much, as long as you can reasonably explain why you are using those and what you expect them to do. Most probably, you are also allowed to define helper functions without coding all of them in detail. In this step, it is particulariy important that you always explain out loud what you are currently doing and thinking, because it is quite awkward when you are stuck silently and the interviewer has no chance of helping you. Usually, the interviewers are very kind and are happy to point you to the right direction if needed — don’t be afraid to tell them if you need a hint.
  • Once you have your coded solution, make sure to run through the code with an example input to show that it works. Sometimes, you find a bug during this process, so this step shows the interviewer that you are also thinking about testing your code afterwards.
  • If you both are happy with the solution, usually the interviewer asks you a follow-up question that often builds up on the first question, and requires you to alter your code. The steps are basically the same as in the first question.
  • If there is time left in the end, you can use that time to try to explain different approaches on how you would further improve your solution(s) if you had more time.

I get asked what I did for preparation often. Honestly, I am not a good example, I just started practising about a week before the interview…

I strongly suggest to review your Data structures and Algorithms lecture in university, so you should know basic algorithms to sort and search arrays, graphs, manipulate Strings etc… Make sure you know how to calculate runtimes, and know your tradeoffs (memory space vs. runtime vs. readability etc). Code some things on paper / Google Docs and practise speaking while thinking/coding with your friends (or a mirror if you are lonely ;) ). As for preparation material, I strongly suggest (like everyone else) “Cracking the Coding Interview”, which is probably part of your university’s library — not because their questions are representative, I found mine were harder than what is in the book, but because their answers are really good in terms of what could be expected from you. They explain their reasoning quite well and it is also a good book to recall the aforementioned basics. I personally did not have the time to further practise tasks, but many fellow interns have pracised on sites like leetcode.

One more thing, I spoke to many candidates that were nervous because their interviews “didn’t go well”. Don’t worry too much after the interview — one, you can’t change it, and two, usually you did a lot better than you think!

It’s a match! — Host matching

You should get an email about the outcome of the interview about 2–4 weeks after. If you didn’t hear back for a long time, feel free to ping your recruiter. Congratulations! You already passed the hardest part. Now one last step needs to be taken: the host matching.

You will be asked to further specify your information in the questionnaire, mainly the preferred office locations, Google teams, technologies, starting months and duration. I can wholeheartedly recommend choosing Zurich as one of your offices — it’s a great city in the summer and the offices are huge and expanding, which means it is a great intern community, too (I will do another post on the internship itself later). I would generally say that choosing the summer months for the internship (between June — September) are the best months for internships, because most interns will be there during that time. There will be many intern-specific outings by Google and also an intern summit. As for the duration, most interns took the default 13 weeks internship. You can also expand your internship when you already started if your team agrees.

Up until this point, your application is not bound to a specific team, technology, or location .The host matching stage is the stage where your information is put into the internal intern “marketplace”. Internship hosts can filter those and they usually choose around 2–5 potential candidates to interview. If you are selected by a team, your recruiter will schedule a 30–60 minute interview with the host.

Relax! The interview will be more like a conversation, where the host and you introduce yourselves to each other. The host will then present their project, and this is your chance to ask more questions about the project, or the internship in general. Some tips for this:

  • If you want, you can prepare some questions beforehand. For example, you know the team that your host is in — look up what the team does, and ask questions about the product and the team.
  • Show that you are interested in your part — for example, ask what the impact of your work will be, which technologies you would have to know, why that project matters.
  • I cannot stress enough that this is a conversation. The host will feel better about choosing you if they have a feeling that you two will get along, so don’t be too nervous as this will be noticed by the host. Just be yourself.
  • If you have specific preferences regarding starting/ending time, taking a break for exams, or other special circumstances, this is a very good opportunity to talk about these with the host.

After the interview, both you and the host will be asked to give the recruiter a yes or a no on the match. If both say yes, the recruiter will follow up with some more details and your contract, and you have your internship:)

Please be honest about your decision on the project. Yes, Google might be a great opportunity and the team might sound great, but if the project itself will not make you happy, then there is no point in spending 13+ weeks with this topic. After all, the internship should make YOU grow as a developer and person.

Most interns I know had multiple interviews before they eventually got a match. Don’t worry too much if the first interview doesn’t work out, many interns got matched even late in February. If you are in the pool early enough, you can be quite specific about teams and technologies in the questionnaire. However, the later it gets (>December), the more open you should be about the project. Especially for first time interns, it might be a good idea to be open to projects, as some teams might have very unexpected projects that will be cool for you!

In very bad cases, you might not get matched at all in the end. In this case, I heard (but maybe this is case-by-case) that the candidate can be put into the pool in the next year’s intern season without further interviews. This does not mean that Google just forgets about you — it maybe just didn’t work out this year. Please don’t feel discouraged, you are still one of the lucky candidates that made it all the way to the host matching;)

And now…we wait

After accepting the internship offer, there are many months of excitement and also uncertainty on what to look into and what to do before starting the internship. Google thankfully has a very comprehensive site with onboarding information (when to be where for the first day, what to bring etc.), and also a nice portal that gives you some tips on apartment renting. It also offers you the opportunity to pay your apartment rent before you get your first salary (since you get your salary after the first working month), and you pay them back once you have your salary with no interest, so don’t worry about not being able to afford your first rent.

I started looking for apartments about a month before the internship, which in Zurich is enough, especially in the summer months, where many student apartments sublet rooms because they go on vacation.

I unnecessarily started panicking about things like health insurance, banking accounts and SIM cards — only to find out that Google gives you a quite intensive onboarding process in the first week about these topics and also a day off to open your bank account etc. So all that’s left to say is relax and enjoy the excitement before the internship! Congratulations once again for getting this amazing chance:)

--

--

Viviana Sutedjo

I like to ramble about Flutter, computer science and medicine. Or anything, really.