Tags: , , , , | Posted by Admin on 11/24/2008 9:44 AM | Comments (20)
A little more than two weeks ago I had an on-site interview at Google in Mountain View, California! The job interview with Google was an interesting experience and I want to tell you about it. (I got the green light from Google to publish this article).

The position I was interviewing for was a Google SRE. SRE stands for Site Reliability Engineering. Site reliability engineers (SREs) are both software engineers and systems administrators, responsible for Google’s production services from end-to-end.

There were eight separate interviews total. The first three were over the phone (phone interviews) and the remaining five were on-site. The first interview was with the recruiter and was not very technical but the other seven were very technical.

All interviews went very well but I just got to know that I did not get hired! Oh well… I personally think that I did really well. I answered all the questions but it seems they were not satisfied! The recruiter told me that I did not have enough experience to work in a mission critical team and that I should get more experience and try again.

Here is how it all happened.

Shortly after I published the “Code Reuse in Google Chrome” post I was contacted by a recruiter at Google. The email said:

I recruit top notch Software Engineering talent at Google. I recently came across your name as a possible world class Engineer and am intrigued to know more about you. I promise to exchange some detailed info about us as well.

Interested to hear more? Want to be an impact player at Google? Then please respond with a current (English) copy of your resume and I’ll be happy to call you and discuss.

At first I thought I would be applying for a software developer position, but after we went through my skillset, the recruiter concluded that I would better fit as an SRE. I agreed with him. This seemed like a perfect position for me. I love systems administration as much as I love programming.

First Interview (phone)

The first interview was on the 10th of September with the recruiter. He explained the Google recruitment process to me and we went through my skill set. I had to rank myself from 0 - 10 in a bunch of areas such as C programming, C++ programming, Python programming, networking, algorithms and data structures, distributed systems, Linux systems administration, and others.

As I said, based on my answers we concluded that SRE was the best position for me. An SRE basically has to know everything: algorithms, data structures, programming, networking, distributed systems, scalable architecture, troubleshooting. It’s a great hacker position!

After these questions he asked me where I would like to work - Google office in Ireland, Zurich, Mountain View or Australia. I said Mountain View as it’s the Googleplex! He explained that if the interviews went OK, I’d have to get an H-1B visa that allows non-US citizens to work in the US.

The second half of the interview had some basic technical questions, just to make sure I knew something. The questions were about Linux systems administration, algorithms, computer architecture and C programming. I can’t go into any details because I signed a non-disclosure agreement and my recruiter kindly asked me not to post the questions!

I made some factual mistakes but he was satisfied and we scheduled the next phone interview. He warned me that it will be very technical and I should do really good preps. I asked him to give me a plenty of time for the preparation and we scheduled the next interview on 22nd of September.

He also told me that each phone interview is going to be 45 minutes to 1 hour long.

I started preparing like crazy. I found three presentations on what SRE is all about:

Then I found all the other blog posts about interviews and interview questions at Google:

I printed and read four Google research papers:

I also went through several books:

As I did not know if I might get specific programming language questions, I went through a few tens of receipts in C++ Cookbook, Python Cookbook, and Perl Cookbook.

Second Interview (phone)

The second phone interview was with an engineer from Google. He worked on the Ads team which is responsible for running AdSense, AdWords and other advertisement stuff.

The interview was very technical and started with an algorithmic problem which was too large to fit in computer memory. I had to tell him precisely how I would get around this problem and what data structures and algorithms I would use. He also asked me to think out loudly. The interview continued with questions about data structures, DNS, TCP protocol, a security vulnerability associated with TCP, networking in general, and Google itself. Sorry, but I can’t disclose anything in more details.

After the interview the engineer had to write feedback on me. It was positive and I could move on with the interviews.

Third Interview (phone)

I gave myself more time to prepare and the third interview was on the 1st of October. It was with an engineer from the Google traffic team.

In this interview I had a very simple programming question and I had to do coding over phone. I was free to choose the language and I chose Perl as it is my most favorite programming language. It was impossible to dictate Perl syntax over phone “for my dollar sign element open paren at data close paren open curly brace … close curly brace” so I submitted my Perl program over the email.

Then the same problem was taken to the next level, what if the data we are working on is gigabytes in size, terabytes in size. How would my program/solution change?

Finally I had a question about DNS again, then HTTP protocol, routing, and TCP data transfer.

The feedback was positive and I could prepare for the on-site interviews. In my conversation with my recruiter I got to know that there will be five on-site interviews, each exactly 45 minutes long. One on my previous work experience, one on algorithms and data structures, one on troubleshooting and networking, and two on software development with focus on C and C++.

My recruiter suggested that I read a few more documents:

I flew out to USA on 24th of October at 1pm from Latvia and arrived in California at 8pm. The flight was actually 14 hours but it was nice that I flew in the same direction as the time flows. This saved me 7 hours. The on-site interview was scheduled on 27th of October so I had a good rest before the interview. It was also nice that Google paid for my trip, hotel, cab and food. I had zero expenses!

Fourth Interview (on-site)

The fourth interview was finally at Googleplex! At 10am I met my recruiter and we had a 15 minute discussion about the interviews. He told me I would have two interviews now, then one of Google engineers would take me to lunch to one of Google’s restaurants and then I would have three other interviews.

At 10:15am the first on-site interview began. It was about my previous job experience. I have had a lot of job experience in the past and I decided to tell about a physical security notification system that I coded in C on Linux a few years ago. The system would receive messages through the serial port and send out emails and SMS’es.

In the last minutes of the interview he asked me some basic Unix filesystem questions.

In all the on-site interviews I was writing and drawing on two big whiteboards. Fun!

Fifth Interview (on-site)

The fifth interview began at 11am. It was a coding session and began with a trick question and not a real coding problem. I was asked to implement the solution in C. The solution was a mathematical expression that was a one-line return statement. No big coding there. Then I was asked to write an implementation of a very well known data structure. While coding I made a mistake and forgot to initialize part of a data structure that I had malloc()’ed! The program would have segfault’ed in real life and I would have noticed the error, but Google engineers are very serious about it! If you have an interview don’t ever make any mistakes!

After this interview I was taken to lunch by the engineer who interviewed me on the second (phone) interview. She told me she was working at Google for two years and was very happy about it. We went to Asian food restaurant (located in Googleplex) and I had all kinds of delicious foods. All free!

Then she showed me around Googleplex. It was all amazing. Free drinks and candy everywhere, some arcade machines, a beach volleyball outside, and many other surprising things.

Sixth Interview (on-site)

The sixth interview began at 12:45pm. It was a troubleshooting and networking interview. The interviewer drew a network diagram on the whiteboard and had imagined a problem in there. I had to ask a bunch of specific networking questions to locate the problem. He was satisfied and in the last few minutes of the interview he asked me some specific networking device questions.

Seventh Interview (on-site)

The seventh interview began at 1:30pm. It was a coding session. I was asked to implement a simple string manipulation subroutine in either C or C++. I chose C. Unfortunately I made an off-by-one mistake there - the most common programming mistake in the history of mankind. The whole interview focused on this one problem.

Eighth Interview (on-site)

The last, eight, interview began at 2:15pm. It was algorithms and data structures interview. The problem presented here was similar to the problem in the 2nd interview. Not only was it a problem too large to fit in computer memory but it also was distributed. So I had to do all kinds of trickery to solve it. The interview was very free-style and we talked back and forth about the problem. I arrived at the correct solution near the end of the interview and he said that not many candidates get that far in the solution. I was happy.

After the interview the engineer escorted me out to the lobby and I took a cab back to my hotel. That’s it! :)

FIN

Overall the Google interviews were pure fun for me. The interview questions were technical but not very challenging or difficult.

Thanks for the opportunity Google! :)

Original story

Comments (20) -

Norman on 11/22/2008 1:49 PM I’m actually a Google engineer…

It sounds like you did all the right things to get in and did pretty well in the interviews, because you got all the way through to the end.

I would like to point out that we know very well that our interview process leaves some good people “on the table”; the reason is that a bad engineer can be extremely destructive to the development process. I’d say that about half the candidates I interview that I’m sure are going to get in, don’t.

Your written English is excellent; I work with tons of people whose English isn’t native; don’t worry about that.

In order to get in, you can’t have made a lot of mistakes, and at least two people have to be very enthusiastic. If I knew anything at all about your interview in specific :-D I wouldn’t say anything but my guess is you got right to the end to the committee and on the balance they said, “Slightly too many goofs, slightly too little enthusiasm from interviewers, next time.”

I’m very glad that you had a good time otherwise, and would like to thank you for applying and all your hard work (and would note to you that we allow people to apply again after a year, hint hint…)
Morgan on 11/22/2008 4:07 PM aah am sure life has something better for you Smile all the best !
Monroe on 11/22/2008 6:25 PM Hi Peteris,

I’m so sorry to hear that. But don’t bother yourself. You are in the way and more vacant positions are waiting for you. Just concentrate and never give up Smile
Kimball on 11/22/2008 8:43 PM Thanks for writing about it, I often heard about the grueling process but never from someone with first-hand experience! Well, it certainly sounds fun and interesting and hope you get in next time.
Jeremiah on 11/22/2008 11:01 PM Thanks for sharing your experience. I think what you take away from this will be very valuable down the road. Hopefully this did not discourage you at all - keep moving ahead.
Edgar on 11/23/2008 1:19 AM Not to be an ass, but I suspect you didn’t get the job due to the reasons which they stated. Chief amongst, lack of experience.

Technical abilities aside, experience would have told you that you had one phone screen (not an interview), two phone interviews, and one on-site interview with five different people.

I have no doubt that you’re smart as they come, but experience does count at most places.
Earl on 11/23/2008 3:37 AM Your story reflects well on both Google and yourself. It is a scary story for me to read, because I would get nowhere near as far as you did in the series of interviews. It’s a shame, because I believe that I have solved AI but Google would never hire such a misfit as myself. Good luck!
Dwayne on 11/23/2008 5:55 AM Sounds like great fun!

One question though, after reading a lot of Google interview posts around the Internet I understand that they focus a lot more on the theoretical side of things, with algorithms and data structures being the main course, whilst at places like Microsoft they focus more on practical coding and software engineering prowess. Do you think that, if Microsoft were to come calling for you, you would be a more ideal fit there? After all, Google aren’t the only big company around and with news of your Google interview I’m sure that another company wanting to snap you up wouldn’t be too far away.
Drew on 11/23/2008 8:13 AM You should have got an “experience” moustache : www.folklore.org/StoryView.py
David on 11/23/2008 10:31 AM That’s awesome, thanks for sharing. I have a friend who interviewed for Google too. He wasn’t hired but it was quite similar to your story. They paid for all his expenses too!
Chandler on 11/23/2008 12:49 PM Sounds like you had a fun experience!

Anyway, there are lots of options and a mega corp is just one of them Smile
Bond on 11/23/2008 3:07 PM Tom, I don’t know. Perhaps my answers were not detailed enough.
Benjamin on 11/23/2008 5:25 PM Sounds like an interesting experience, though I’m curious why you did not end up getting hired. Any clue?
Barrett on 11/23/2008 7:43 PM Good post. Best of luck to you next time.
aggie on 11/23/2008 10:01 PM with your drive and talent, you can be the next google. don’t bother with soul-less corporations.
take care
Adam on 11/24/2008 12:19 AM Thanks for the comments, everyone! Well, better luck next time Smile

Valdis, you must be right! I was too good! Talking about my spoken English, it’s is certainly fine as well. That was not an issue during the interview.
David on 11/24/2008 2:37 AM Sveiks!

I think you were too good for Google. ;)

As for the cause, your written English is certainly fine, but how is your spoken English? Did that present a problem during the interview?
Stallone on 11/24/2008 4:55 AM I would have refused the position as Site Reliability Engineer. Being Software engineering and System Administration (even if topnotch) very different things and I find the latter not quite interesting. I wouldn’t do it for a load of money - not even for google - but obviously this is just my opinion.

Often Google recruiters pull the trick of proposing people for unexpected stuff - and often driven by a burning desire to join Google people go along.

I am not saying it’s your case - but I had an experience with a close friend (who had relevant experience as a developer) and Google recruiters were trying to steer towards a role called smt like “Content Validation Monkey”. At start he was excited (as the interviews were pretty interesting and technical) - but then around the third interview he made clear he wasn’t interested in such a position and they told him he wasn’t suitable for the position.
Mike on 11/24/2008 7:13 AM Peter: I am a regular reader of your awesome blog. You rock! It’s sad that you didn’t get into GOOG this time. I am sure you’ll succeed in the future. All the best Smile
Paul on 11/24/2008 9:31 AM sounds cool. gratz anyway Smile
Comments are closed