My interview experience with Google

(See also part 2 of this article).

A few months ago I received an e-mail from a recruiter at Google asking for an opportunity to talk to me about available development positions. Needless to say, I was pretty excited. I’m fairly happy in my current job, but–it’s GOOGLE. You don’t say no to an interview opportunity at Google.

Like this article? Check out my latest book, Writing High-Performance .NET Code.

I’m writing this account in order to contribute to the meager resources available on the Internet about the Google interview experience. I signed an NDA, so I’m not going to say what the specific questions were, but I think I can give a pretty good idea of my experience. I apologize right now for the length.

I traded a few e-mails with a recruiter in Mountain View. I had a phone conversation with him, wherein he asked me general questions about my skills, desired work locations (giving me a choice of Santa Monica, Mountain View, and Boston). I have no desire to live in California, so I chose Boston. I was then passed to another recruiter, who setup a phone interview with an engineer in Mountain View. There was a false start, when they couldn’t do the interview at the original time, so we postponed.

The phone interview went very quickly. He was very nice and asked about my specific talents, things I enjoy doing, and projects I’d worked on–especially those I listed on my resume. He asked about the ray tracer I wrote in college, since he had an interest in that. He also asked some general questions about the stuff I do for work. Then he got into the technical question. It was an interesting problem, and I asked follow-up questions, talked out loud, wrote things down in front of me (and told him what I was writing and why). I immediately thought of the naive solution–always a good place to start. He was interested in the asymptotic complexity. I knew there were better ways of doing it, so I started thinking of optimizations to the algorithm, trying to come up with ways of caching information, reusing previously-computed values, etc. He gave me some gentle prodding, and I think I understood immediately where he was going. I answered the question fairly well, I though.

And that was it–just a single question. I was surprised. The entire thing lasted less than 30 minutes. I was almost disappointed, and thought–“well, that’s that–I won’t hear back.” I really wasn’t expecting any follow-up.

The next week, I got an e-mail from my recruiter who said I had impressed and was going to get the opportunity for an in-person interview in Boston! They hooked me up to a travel coordinator, as well as the recruiter in Boston.

Very exciting. I had a convenient time to go, so I set that up, took time off from work and went up to Boston, staying in the Cambridge Marriott. Very nice hotel. 40″ flat screen TV in the room ( which I never turned on). All expenses paid for, of course. ๐Ÿ™‚ I did have to pay for hotel and food up front, and save the receipts. (And yes, I promptly received a reimbursement check from them a few weeks after I sent them in.)

I arrived on Monday afternoon, figured out Logan International (a very confusing airport, I thought), and got myself to Cambridge, in the heart of MIT, an hour or so later. I checked in, then went walking. I found the building Google is in on the very next block from the hotel. They have a floor in a building that MIT leases to startups, tech incubators, and the like. There are plenty of news articles about the Google Boston office–just…you know, Google for them.

I walked past the ultimate geek bookstore–

Quantum Books. Discount tech books. COOL. I would definitely have to stop there later. Then I got some cheap, awful Chinese food at the food court

right under the hotel. Why? When I could go out on Google’s dime? I think I was just tired and wanted to get back to the hotel soon and start studying.

I ate dinner in the room, took pictures of the wonderful view of the Boston skyline.

Boston Skyline (Day)

Boston Skyline (night)

Studying

What did I study? I brought two books with me: Robert Sedgewick’s Algorithms in C++, and a C++ reference manual. I went over advanced C++ topics, STL, simple sorting and searching algorithms, properties of graphs, big-O, and anything else that popped into my head.

By far the most valuable thing I did was write out algorithms before-hand. I picked something and wrote it out by hand in a notebook. It was hard going at first, but I knew it was the best thing I could do to prepare. I did selection and insertion sort in both array and list form. I did string reversal, bit reversal, bit counting, and binary search. All by hand, without looking in a book at all. As well you might know those simple algorithms, it’s harder than it sounds.

I went to bed relatively early–9:30, and woke up the next morning at about 6. I went to breakfast in the hotel restaurant, got a rather large meal, and then headed to my room to study more. I wrote more algorithms and redid some I had done the previous night.

Oh, I also wrote down in my notebook (beginning on the plane ride up) questions for Google, as well as answers to questions they could ask me (standard interview fare–projects, favorite project, languages, strengths, passions, getting along with people).

My interview was scheduled for 10 am–I checked out at 9:30 and left with my bag (I had everything in a single bag I could carry–it was very heavy) and sat in a little square for a few minutes. At about 9:50, I went in, took the elevator, and was greeted with:

.

. (ready for it?)

.

The Google

Dr. Seuss land! Yes, that was my first thought. I think the door was green, the reception area was very colorful. The receptionist was very nice and asked me to sign in on a computer, which printed a name badge for me. They had some research papers by Google employees on a wall, so I grabbed a couple (their hard drive failure study, and map/reduce). After a few minutes, my Boston recruiter came out and greeted me, offered me a drink from their free fridge, and took me to a small conference room, furnished, it appears, from Ikea. It was simple, clean, and very nice. There was a white board. I would get to know that whiteboard very well.

My first interviewer came in and we got started. I talked about my projects for a bit, they answered my questions, and then we got to the problem. Each interviewer asked me to solve a single problem (could be some sub-problems involved), and I had to do it on paper or on the board. I wrote C/C++ code. They take note of what you write and ask you further questions, especially if your first solution isn’t optimal.

I tried to take extra care with my code and not let stupid mistakes creep through. I used good variable/function names, made sure my braces matched, and I ran through the algorithm on the board once I had written it.

The first interview was one of the toughest. I was more nervous. I think I made more mistakes–I didn’t see things as quickly as I did later.

I had three interviews before lunch. They then handed me off to someone else who would not be evaluating me, but would just be an escort for lunch. The Google cafeterias in Mountain View are legendary, but the Boston office is far too small to warrant such lavishness. Instead, they have a catered lunch every day. It was wonderful. They also have all the free drinks and candy you could want, available all the time. I spent much of the time asking my escort questions about Google, what he was working on (couldn’t tell me), the area, the office, the commute. We were also joined by the head of the office, who didn’t realize I was an interviewee, and we had a nice conversation as well.

Lunch was an hour, and then I was back in the conference room. I had two more interviews. Then the recruiter came back in at about 3:15 or so and debriefed me–asked me my impressions, how I felt. I reiterated what I had told him on the phone previously, and that morning before we started: that I was trying to take this as easy and nonchalantly as possible, to have fun, and learn, and let it be a good experience. I had a job that I enjoyed, and didn’t NEED this one, but I think I would do well there and enjoy it very much. They came to me, after all.

I think by the end of the day, I was really pulling that off well. Once I got over my nervousness in the first interview, I really did have fun and enjoy it.

General Notes

They didn’t ask me any stupid questions. None of this “what’s your biggest weakness?” garbage. Not even the recruiter asked me anything like that. Nothing silly at all. They also didn’t ask me easy technical questions. They got right into the problems and the code. I had to describe an algorithm for something and write code for it. It was serious, they were all nice–I met people with serious reputations online. I felt like they were respecting me as a fellow programmer–almost. I wasn’t one of them, but they really wanted to see if I could become one of them.

I did receive prompts to get through certain problems, but not overly so. I answered every question they asked. Some I answered better than others, but the ones I didn’t get right away, I had alternate solutions, and I understood where they were going as soon as they started talking about it.

Why I didn’t get the job

Well, companies these days won’t tell you why. I think they fear it opens them up to lawsuits. I think that’s silly. It prevents those of who really do want to learn and improve from knowing what we’re deficient in. Oh well. They told me that they thought I would do well at Google, but that it wasn’t a good fit at the time, and I should apply again in the future. (Of course, I didn’t apply in the first place.)

My suspicions, however, are that I lean too much towards Microsoft technologies. I do a lot of work in .Net. That’s where more and more of my experience is. I do consider myself very good in C++, but I’m doing more and more C# work. I’ve always been a Microsoft Windows developer.

I also am not really interested in web-centric technologies, and I told them so. I’m more interested in client apps on the desktop, and server apps.

Of course, it’s very possible I just didn’t answer the questions to their satisfaction–that I needed more prompting than I should have. Oh well.

It could also be that my GPA wasn’t what they wanted. I goofed off my freshman year of undergraduate work. I really hurt my grades. I came back, though, and got straight A’s for my last few years where I took the hard CS classes. I also got straight A’s in my Master’s program while I was working full time. I don’t think this was the issue, but it’s possible.

Lessons

  1. Having your own web-site is a no-brainer. Do it. Update and maintain it.
  2. Do personal projects. You must be passionate, you must love programming. You must be good at it. Not average. You must aspire to excellence and be working towards that.
  3. Know what you’re talking about it. Don’t show off–just display your knowledge as it applies to what they asked you.
  4. Use an interview with them as a learning opportunity and ensure you have a good experience regardless of the outcome.
  5. Don’t take the interview too seriously. Make sure that not everything rides on the outcome. You must be comfortable, confident. You must try for success in every possible way, but yet be completely prepared to fail–and have that be ok. This is a hard balance to achieve, but I think it can really make you have a healthy outlook and have a good time while still showing your best self.
  6. If you don’t get an offer, realize that even being selected for an on-site interview by Google puts you above the ranks of the average-good programmers. Google gets 1,500 resumes a day. You’re already in the < 1% percentile.
  7. Practice writing code by hand in a notebook. This helped more than I can express. Do stuff that’s hard that you don’t know how to do immediately. Time yourself. Make the problem more challenging. If you can’t stretch yourself, they will and you’ll probably break. They did not ask me to do any of the specific questions I had practiced–but the experience writing out and the THINKING is what helped.
  8. Be able to explain your background (90% technical / 10% personal) in a few words. At some point you’ll be asked.
  9. Have a lot of questions for people. You’re interviewing them too. Make sure they’re good questions. Asking about salary is not a good question before you’ve been made an offer.
  10. I let the interview build my own self-confidence. I have no doubt that I could walk into an interview anywhere else and it would be laughably easy.
  11. Don’t ignore obvious, simple solutions. Sometimes a table lookup is better than an O(n) algorithm.
  12. Bring a good, FUN book for the plane ride back. On the way, I focused on the interview, but on the way home I wanted to do anything but, so I had my current novel (Dickens’ Bleak House–very good book, by the way).

If you do all of those steps, it actually doesn’t really matter if you apply to Google or any other great/famous company–you’ll probably get the job you want for the pay you want anyway. Somebody, sooner or later, will come across you and give you the opportunity.

Great programmers will rarely, if ever, need to look for jobs.

I hope this long, rambling essay is helpful to some. I make no claim that my experience is typical or that I’m being completely objective. In other words, YMMV.

Read part 2 of this article


Check out my latest book, the essential, in-depth guide to performance for all .NET developers:

Writing High-Performance.NET Code, 2nd Edition by Ben Watson. Available for pre-order:

103 thoughts on “My interview experience with Google

  1. Pingback: My Job Interview at Google - good coders code, great reuse

  2. Pingback: Google Job Interview Process | Webatlantis

  3. Sam

    Great for those who like to work for famous companies like Google or who want higher pay as the work for companies.

    Our tastes and desires are quite parallel

  4. Angie Perez

    It is a great read. I think another poster said the same thing, but I couldn’t he’ll but notice that you seemed disappointed at the end not knowing what area you were deficient in. Maybe it wasn’t about deficiency in so much as they may not know what they are looking for or you could really be one year away from recapturing their attention. If they get 6000 applications a day or more, you are way ahead of the competition.

    I agree with your sentiments. Not knowing the why can be one of those things that will make you wonder. But it sounds like you weren’t even looking to make the change, which could gave been read in your body language.

    Just a thought.

  5. OT

    Great post. Thanks for sharing. While reading your post, my heart started pounding as if I am going to the interview.

  6. Pingback: Today I read « My Google Walk

  7. alex

    thanks for the post, really interesting, and i’m not even a programmer! i am from boston though, and you’re description of logan is not very surprising…

  8. Pingback: Google Interview Questions: Interview by google…Do you need job in google? « Indian Developer

  9. Pingback: 10 More Ways To Get An Article On DZone

  10. Guy with a Google Interview

    I have a phone interview tomorrow, and now I am terrified and completely convinced that they will never hire me. ๐Ÿ™

  11. Cree

    How did Google notify you of the rejection? I interviewed at Mountain View about a month ago and haven’t heard back. I called to follow up a week ago, and the recruiter said the decision was on hold and that they’d be making a decision in the next two days… She said she’d call me (even scheduled a time for it) but never called. I’m wondering if I should stop hoping to get the job at this point, but I haven’t gotten a formal rejection.

  12. Ben Post author

    Hi Cree, I received a phone call (left a message) and a follow-up e-mail explaining that I had not been offered a job. I believe it was about 2-3 weeks after my interview and only after I had sent an e-mail to my recruiter. Good luck.

  13. Angelita

    Wow, I have to admit I had lots of fun reading your blog.. I was researching a bit on onsite interviews as I have my own on Friday, and I came accross your page… Really enjoyed and the tips have been really helpful! Thank you for taking the time to write it!!!

  14. YourPal

    Folks,
    ….with all the wizards at google, I am yet to see a real invention from google.
    Be happy in what you do, solve customer problems, file patents, learn to innovate …. that you can do in any US company.

  15. Sammy L

    Great write-up. I had an almost identical experience recently with Google so I guess things haven’t changed too much in the years between then and now.

    I also have a job that I am comfortable with, but if Google comes knocking then you answer the door. Don’t know how I did yet, but like you said– even if I get the rejection call, it’s good enough knowing that I made it to the on-site interview.

    Thanks for writing this up and keeping the positive perspective.

  16. Tonny Hall

    What a wonderful essay! You had nice experience regardless of the outcome… Anyway, in my opinion, you did it well! Just absolutely perfect! You had undergone such experience others may only could dream about. You’re really deserving of getting a very good job. I’m moving now to the second part of your essay. It was so interesting to read the first part, and it didn’t prolong while reading indeed. Thanks a lot for your comprehensive article… thoughts and tips. Good luck!

  17. L.N.Priyanka

    I took a role of yours while reading your post.. Its like climbing an Everest mount for a Graduated Fresher Looking for a job like me.
    Your post let me to enjoy the positive vibrations where i am very much afraid to attend even interview..
    Thanks for such a wonderful post and working in Google is dream for me and i don’t know how far i reach their interview requirements but i do my level best..
    Am well familiar with design and analysis of algorithms but my fear make me not to put a step forward to do things a little better in interview..

    I feel glad if your words make me to stand forth in interviews and in job

  18. sashan

    Thanks for this. I also failed my Google interview but don’t feel so bad about it after reading this.

  19. Rahul

    Hi All,

    In next few weeks I’m expecting an telephonic interview for Google Test Engineer position. I don’t know anyone working over there. Can someone please share your experience for same position. And also please give some idea what I need to prepare for.

    I don’t want to loose this opportunity as it is one of my dream company. Please please help…

    Thanks,
    Rahul

  20. goovla

    Very interesting and detailed post. I’m also waiting on phone inteview results and hope for insight inteview. It’s all about learning experience and wouldn’t feel too bad if I don’t get the job… Failure = one step closer to success! ๐Ÿ˜‰

  21. Karthik

    Hey feeling gr8 after reading that fact of <1% resumes are shortlisted…i couldn't go beyond the phone interview..but feeling gr8 that atleast i was shortlisted..

  22. Pingback: Job di Google.Interview. - DrLaptop

  23. sriram

    Wow! very nice article. I really loved reading your article. Thanks a lot for your valuable suggestions.

  24. Pingback: Top 5 Recommended Programming Book to Read « Tech and Project

  25. Nima

    Ben,

    I like how rational and mature you looked at the whole process. And your article is very well written. I also did my phone interviews, which I think went well, and am waiting for their response. It has taken a week so far and it worries me why they do not give any response.
    I am just curious, how long did it take for you to hear back from them after the phone interviews?
    (would be great if you can email me)

    Good luck man

  26. Neha

    “Be able to explain your background (90% technical / 10% personal) in a few words. At some point youโ€™ll be asked.”
    This comes as a relief. I’m in a very stuck up position right now. I will be giving a Google interview some days from now. Worse, I am not a programmer. I have been selected for the BOLD intern program and unlike its U.S version, the India office is selecting candidates for technical roles. ๐Ÿ™
    I am clueless nowโ€”whether or not to learn algorithms and stuff in these 7 days. I’m a CSE student, right. But that’s not where my interest lies, even not what I want to do. Heck, I applied thinking that it would be the non-technical roles like the BOLD program of the U.S offices. If you happen to read my comment (or anyone who can help, for that matter), I’ll be very grateful to get a solution/advice/reply. I am already half-determined to tell the interviewer, “I come with non-technical experiences and abilities and applied to this program for the same reason. Take it or leave it!” Okay, not the last line. ๐Ÿ˜›

    Gosh, I should be reading algorithms right now!

  27. Sumit Arora

    You need to follow a very organized and disciplined approach to prepare for the Software Engineering Job at Facebook/Google/Amazon/Microsoft etc.

    Actually all these companies e.g. MS, Google, Amazon, Facebook, Apple follow an approach on which that measure the thought process of a candidate.

    And they use different means to evaluate that, but yes most of them uses Algorithms/Data Structures/Open-ended questions(If you have applied for a software engineering job) as one of the approach to evaluate the talent.( As those are the base to develop the technologies).

    To be accustomed with algos/data structure/coding , you must have understood/practiced the minimum e.g. :

    (Step-1): You should have practical understanding of the Algorithms (e.g. When to use BackTracking, When to Use Divide and Conquer, Why double hashing required?, Where brute force concept can be applied?) (100 Hours).

    (Step-2): You should have practical understanding of Data Structures e.g. (Practical use cases related to :when to use circular buffer , or when to use adjacently list or the combination of both or something else to solve the problem ).
    (100 Hours)

    (Step-3) : You must practice several coding problems to implement the things which learn from Step-1 , and Step-2 (you may do the following choose any coding language for the choice of yours (C, C++ or Java or Python or PHP or any one else ).
    (100 Hours)

    (Step-4): Solving the problem doesn’t mean just to solve it, but to understand the best way to solve it e.g. The given technical problem can use various ways to come to solution, and you might want to use the optimal one. (How you connect the given solution with the computing/memory resources e.g. Memory/Processing Power)
    (100 Hours)

    Most Important One.

    However other than programming you might need to understand the main concept for the interview is to keep the interview active and this requires some action from your side, such as the following:

    You need to talk.

    You need to explain.

    You need to discuss.

    You need to express your views.

    You need to understand clearly the questions given to you.

    You need to understand the interviewerโ€™s expression and mindset to un- derstand those questions.

    You might need to ask appropriate questions to understand the question or any other discussion item. (100 Hours)

    And also :

    Prepare : “Please tell me about your self” , “Your skills related positive/negative further interest” , Basics for the most needed computer science concepts or anything as you presented on your “CV/Resume”.
    (100 Hours)

    Above is just a sample plan, you may customize the way you want(e.g. 100 hours to 10 hours or something else) – Click to Amazon, to find the best books you might need.

    (Here Google doesn’t mean the Google, it means any company which is very creative to introduce the computer science related products ).

  28. Sara

    Hi,

    It was a pleasure reading your blog post on the interview process. I am wondering then if I really should ask for an interview in C++ or Java instead of C# (as I initially had planned!) to avoid the Microsoft .NET technologies bias? I have been programming for my company predominantly in C# but my data structures and algorithm knowledge are in C++.

  29. Ben Post author

    Google and Microsoft will likely let you interview in whatever language you feel comfortable. I’ve never cared too much in any interviews I’ve done, as long as the algorithm is clear. I wouldn’t worry about bias too much. There is plenty of movement between Microsoft and Google both ways.

Leave a Reply

Your email address will not be published. Required fields are marked *