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.

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:

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++.

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.

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 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

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.

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!

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

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