Google

  www.google.com
Work in HR? Unlock Free Profile

Google Software Engineering Interview Questions & Reviews

Updated Aug 15, 2014
All Interviews Received Offers

Getting an Interview  

35%
23%
15%

Interview Experience  

47%
34%
18%

Interview Difficulty  

Average Difficulty
883 candidate interviews Back to all interview questions
Relevance Date Difficulty
in
97 people found this helpful

Accepted Offer

Positive Experience

Difficult Interview

Software Engineer Interview

Software Engineer
Mountain View, CA

I applied through an employee referral and the process took 4 weeks - interviewed at Google in April 2014.

Interview Details – Direct onsite because I interviewed in the past and did well that time. From the time I sent my resume to interview day: 2 weeks. From interview day to offer over the phone: 2 weeks.

The syllabus for the interviews is very clear and simple:
1) Dynamic Programming
2) Super recursion (permutation, combination,...2^n, m^n, n!...etc. type of program. (NP hard, NP programs)
3) Probability related programs
4) Graphs: BFS/DFS are usually enough
5) All basic data structures from Arrays/Lists to circular queues, BSTs, Hash tables, B-Trees, and Red-Black trees, and all basic algorithms like sorting, binary search, median,...
6) Problem solving ability at a level similar to TopCoder Division 1, 250 points. If you can consistently solve these, then you are almost sure to get in with 2-weeks brush up.
7) Review all old interview questions in Glassdoor to get a feel. If you can solve 95% of them at home (including coding them up quickly and testing them out in a debugger + editor setup), you are in good shape.
8) Practice coding--write often and write a lot. If you can think of a solution, you should be able to code it easily...without much thought.
9) Very good to have for design interview: distributed systems knowledge and practical experience.
10) Good understanding of basic discrete math, computer architecture, basic math.
11) Coursera courses and assignments give a lot of what you need to know.
12) Note that all the above except the first 2 are useful in "real life" programming too!

Interview 1:
Graph related question and super recursion

Interview 2:
Design discussion involving a distributed system with writes/reads going on at different sites in parallel.

Interview 3:
Array and Tree related questions

Interview 4:
Designing a simple class to do something. Not hard, but not easy either. You need to know basic data structures very well to consider different designs and trade-offs.

Interview 5:
Dynamic programming,
Computer architecture and low level perf. enhancement question which requires knowledge of Trees, binary search, etc.

At the end, I wasn't tired and rather enjoyed the discussions. I think the key was long term preparation and time spent doing topcoder for several years (on and off as I enjoy solving the problems).

Conclusion: "It's not the best who win the race; it's the best prepared who win it."

Negotiation Details – You can and should negotiate politely. You are in a stronger position if you have another offer, but even otherwise, you should ask for more of every type of payment!


3 people found this helpful

No Offer

Negative Experience

Difficult Interview

Software Engineer Interview

Software Engineer
Mountain View, CA

I applied online and the process took 8+ weeks - interviewed at Google in July 2014.

Interview Details – Day 0 — I apply to seven different Software Engineer positions in the Bay Area simultaneously via their website.
Day 0 — 38 minutes later, I receive an email from a Recruiter (call him R1), who's also an Engineering Manager (?). He asks when we can talk over the phone about "matching me up with the right opportunities at Google." I send a timestamp back.
Day 2 — Phone call with R1, about ten minutes. He asks to tell him about myself, what my background is, what I'm interested in, why I want to work for Google, etc. He ends by telling me we'll set up a phone interview, which I intentionally schedule for a couple weeks later. (R1 asks me to choose a programming language for the interview, and mentions that he'll be sending me a syllabus to prepare.) Recruiting Coordinator 1 (RC1) emails me the details of the phone interview, which we confirm.
Day 9 — Still no syllabus. I email R1. He sends me a verbatim excerpt from the Steve Yegge blog post you've already read.
Day 15 — Phone interview day. 25 minutes into the schedule time slot, no call. I email RC1. Auto-reply: that account no longer exists. Great. I wait a bit longer. I give R1 a call; no answer, leave a voicemail. He replies within the hour, says he's sorry, asks for availability to reschedule. I reply.
Day 23 — Phone interview finally rescheduled for day 28, by new Recruiting Coordinator (RC2).
Day 28 — Phone interview, take two. Interviewer (a Software Engineer) asks me a little about myself, then moves on to the questions (I won't go into details, due to the NDA). About twenty minutes of basic Q&A about my language of choice (nothing remotely advanced). Then he asks me to describe (just out loud) the 'find' method of a common data structure. Then he modifies the problem definition slightly, and asks me how I would change the 'find' method. This seems fairly straightforward to me. He asks me to implement it in Java in a shared Google Doc. I do. I step through it with some examples. That's about it. I hang up: I think I nailed it.
Day 36 — I email RC2 to check for any feedback. She defers to R1, who within minutes invites me on site to interview. I send my availabilities. I receive confirmation of my interview from RC2. I confirm, and send back two filled out forms (application + NDA; travel form).
Day 37 — I make my travel arrangements through their travel agency. They pay for my flight, lodging for the night before and night after, rental car for the duration, transportation to the airport, and food for the duration. (I easily add two more days at my own expense.)
Day 37 — R1 emails me to tell me he's leaving Google. R1 introduces R2 (not an engineer, this one).
Day 38 — R2 emails introductions and asks when we can talk by phone.
Day 42 — Introductory email from RC3, with two documents which are, again, verbatim excerpts of Steve Yegge's famous blog article.
Day 43 — Phone call with R2, describes the on-site interview; nothing I didn't already know, except (fairly useless) one-line bios of my four interviewers. Eventually I start wondering why I'm seeing and hearing "Google/YouTube" when it used to be "Google," so I ask. I find out I'm apparently applying for YouTube now and no one bothered to tell me. R2 also tells me she won't be able to make it to greet me on the day of my interviews, so R3 (also not an engineer) will be replacing her.
Day 54 — On-site interviews. I show up to the wrong lobby, having assumed there was only one. (Pro-tip: check your email from the Recruiting Coordinator for the exact building and address.) Luckily, I was early enough to make it to the right building on time. Interview, interview, lunch, interview, interview. No breaks at all between interviews. Interviewers either give you a blank expression with no feedback as you talk or else hold your hand all the way to the solution. No middle ground. Half the interviewers didn't seem to want to be there. Thought I did kind of okayish in three, badly in one. Very hard to tell over all, but I was pretty sure I wasn't getting an offer.
Day 57 — Within three minutes of each other, emails from both R2 and R3, asking to talk over the phone. I sort out the disorganization, get a call from R3, and am informed I will not be moving on. The only feedback I can get is that my "coding" is lacking, which doesn't make much sense to me.
Day 58 — On to other companies.
(Day 73 — Still no reimbursement of expenses...)

Interview Question – (Signed NDA)   Answer Question


25 people found this helpful

Accepted Offer

Positive Experience

Difficult Interview

Software Engineer Interview

Software Engineer
Mountain View, CA

I applied through a recruiter and the process took 4 months - interviewed at Google in March 2014.

Interview Details – I was not looking to switch jobs, but I was contacted out of the blue by a recruiter on LinkedIn. I was happy with my job that I held with the same company since college graduation (10 years). However, I decided to give Google a shot. If anything it would probably teach me something about myself.

The recruiter set up a phone interview for roughly 1 month later. I apparently did well as the recruiter contacted me about 2 hours after the interview to say I passed. I was forwarded off to a recruiter in Mountain View that set up an on-site interview for about 1.5 months later. I'm sure the time frames here could have been quicker, but for each step I wanted time to study.

During the on-site interview, I met with 5 different engineers (4 where feedback was taken and 1 lunch interview). Each interview lasted between 45 minutes and 1 hour. I interviewed with members from 2 specific teams, the potential ones I would be joining if offered a position. Despite the fact the lunch interview was not supposed to count, I was told that the lunch interviewer was instrumental in getting me hired.

It took quite a long time after the on-site interview until I received an offer. It took 2 weeks to collect interview feedback and 1 week to get the go-ahead to put me through the hiring committee. It took 2 weeks to go through the hiring committee and an additional week to go through the executive committee. At that point I had an offer, but it took another day or two to negotiate the details. I initially wanted to decline the offer since I was leery of moving my family, but the recruiter gave me the weekend to think about it.

I verbally accepted after the weekend. It took another two days to choose a relocation package and 1 more day to receive a formal offer letter which I electronically signed.

I hope I made the right choice! I am worried that I took a step or two down in responsibility, but the compensation was a little bit better than what I was making even cost-of-living adjusted. If anything I'll have an interesting experience to talk about and Google on my resume.

Interview Question – However, I received 2 different dynamic programming problems which I didn't expect and I found to be quite difficult. 3 of the interviewers had me do whiteboard work but only 1 of them actually had me do any coding, which was a basic singly linked list type problem.   Answer Question

Negotiation Details – I negotiated an additional $8K in base salary and an additional $5K signing bonus. Google would not budge on the RSU, though.


1 person found this helpful

No Offer

Neutral Experience

Difficult Interview

Software Engineering Interview

Software Engineering

I applied online and the process took 1 week - interviewed at Google.

Interview Details – First step was to submit an application through Google's online system, which included a resume and (optional) cover letter. I was contacted by a recruiter within 3 days (including the weekend) and set up an interview for 2 weeks from that date. It was two back to back technical phone interviews. The interviewers let you choose what language you wish to demonstrate your knowledge in. I chose Java for both.

My first interviewer was great. He introduced himself and throughout the interview, was very proactive on trying to guide me through a difficult part of the problem or hinted if he wanted more to the solution. I had to constantly verbalize my thought process, as it was a phone interview, so he mainly responded to that.

My second interviewer was not so great. He was 10 minutes late and seemed like he didn't want to help at all. Even after his "explanation" of the problem, including a confusion-inducing analogy, I was still a bit uncertain about the problem, so I just went with what I thought was right. It ended up being mostly correct until he literally started to yell at me over the phone for the last line, which was parsing an object to an int, then back to an object when there was another method that did what I was trying to do already (which he didn't explain, so I didn't know what it was, go figure). He seemed to not be paying attention at all, as there were multiple times where I asked a question, only to be answered with silence.

After that, I received a follow up email from the recruiter, stating I would know the results in a week or so. I ended up not getting the position (most likely due to that second interviewer), but am not deterred from applying again. I will admit my Java was definitely not up to par, considering that wasn't the dominant language I programmed in for the past half year and only really "studied" for two weeks before the interview.


9 people found this helpful

Declined Offer

Positive Experience

Easy Interview

Software Engineer Interview

Software Engineer
Mountain View, CA

I applied through a recruiter and the process took 6+ weeks - interviewed at Google in May 2014.

Interview Details – Timeline:
* Reached out to recruiter: day 0
* Call with recruiter: day 2
* In-person interview: day 15
* Calls with managers: days 28 - 32
* Three offer revisions: days 33 - 43

In-Person Interview:
A pretty standard affair with 5 45-minute inreviews and a lunch after the first 2. Most of the people seemed genuinly interested in the interview (save 1 person who seemed annoyed at having to do such a menial task) and were a lot of fun to talk to. I can't go into too much detail on the questions themselves (covered by NDA), but it's standard fare and if you know your stuff, you won't have any trouble.

How to Prepare:
Just brush up on your algorithm design (iterative/recursive algs, big-o, etc). It might be helpful to just read up on some really clever algorithms from your academic days since the thought processes for those can have a lot in common with algorithms you might be asked to design.

Culture:
The people who interviewed me seemed intelligent and very happy to be working at Google. One surprising factor for me was that every single person answered "what's you favorite part of working at Google?" the same way: "the people".

Reason for Declining – I had a better offer from a competing company that was also a better culture fit for me. I took it.


1 person found this helpful

No Offer

Positive Experience

Difficult Interview

Software Engineer Interview

Software Engineer
New York, NY

I applied through a recruiter and the process took 4+ weeks - interviewed at Google in April 2014.

Interview Details – Each of the questions were designed such that you will never get the perfect answer, especially on the first try. The problems were specifically made to stump you, and so you can continuously improve your design and show that you're curious to learn and improve.

Interview Question – They asked about servers and how networks functioned and I have no background with that topic.   Answer Question


1 person found this helpful

No Offer

Positive Experience

Difficult Interview

Software Engineer Interview

Software Engineer
Mountain View, CA

I applied through an employee referral and the process took 2 months - interviewed at Google in July 2014.

Interview Details – 45 minute phone interview: program a computational geometry problem, the phone interviewer did not ask anything else at all.

onsite:

preparation:
I prepared for two weeks. I had been asked to brush up on my algorithms. So I basically took, the online versions of Prof: Tim Roughgarden's Algorithms class @ Stanford and parts of Prof. Erik Demain's class on Advanced data structures. @ mit. Also geeksforgeeks.org also helped me. Even if you don't get into google, I would say that taking these classes are very good for your future technical skills.

5 people interviewed me, 45 minutes each. None of the 5 interviewers asked me any algorithm heavy questions. There was no topcoder style questions either. Most of the questions were related to my domain area viz: computer vision and machine learning. Since I had just switched into these areas, I was not an expert and my answers were often patchy. One of the interviewers asked me a question on large scale system design.

I am just waiting for the results.

Interview Question – An open ended question on large scale system design, for this you need to be an internet programmer, knowing about issues related to data replication, data availability, large scale scaling etc. I was very patchy on all of these areas.   Answer Question


2 people found this helpful

No Offer

Positive Experience

Average Interview

Software Engineer Interview

Software Engineer
Los Angeles, CA

I applied online and the process took 3 weeks - interviewed at Google in July 2014.

Interview Details – Applied online and received an email within a few days by a Google recruiter. A technical screening interview was organized for the following week. A Google engineer called me and started by introducing himself and Google, then went quickly into the programming question. I managed to solve the problem using recursion within about 40 minutes with only a few hints.
After 1 week, I received an email for onsite interviews which was organized for the second week after.
The first onsite interview went well. I actually recognized the interviewer from my previous university. The programming task involved class declarations and pointers. I believe I did ok with this question but ran out of time to really give a solid solution. In my second interview, the interviewer gave me a few hints since I was not making progress and I eventually solved it. Then it was lunch with another engineer. My third interview was the worst. He asked me the same question as the 1st interviewer, and I said I had already been asked that question. He then asked a different question that I did not fully understand which direction he wanted to go and in the end it was an SQL command question. I made a mistake in the third question he asked: I started coding before I had fully considered the entire question.
The 4th interview was a presentation of my work. This went smoothly and the interview was very cordial. The 5th interview went well although I ran out of time. 2 seemingly simple coding questions. Even though it was past time, this interviewer kept talking about the groups within Google so I thought I did well with this guy.
Overall I managed to solve all the questions but with hints. I believe I did well with 3 interviews, 1 ok, and 1 bad.

Interview Question – How would you design a system to do such and such? I thought the interviewer wanted me to talk about functions and data storage but in the end he seemed he wanted specific SQL statements which I was not too familiar with.   Answer Question


5 people found this helpful

No Offer

Neutral Experience

Average Interview

Software Engineer Interview

Software Engineer
Mountain View, CA

I interviewed at Google in May 2014.

Interview Details – Recruiter contacted me via email or linkedin, can't remember exactly. Asking if I would be interested in Google. I have a long resume and somewhat specialized set of skills in embedded systems so I said ok I will give it a go, but that I am not quite sure how my skills would be useful at Google. They waived the phone screen and moved me directly to an onsite interview. They send you a list of things to go over to prepare for the interview that looks like something out of college computer science course. I was really busy at my current job so I had little time to go over it, but it was fun revisiting the basic algorithms and data structures.

Onsite was 3x45 miutes 1on1 interviews, lunch and 2 more 45 mins sessions. All back to back, no breaks other than lunch.

1st session: Interviewer introduced himself gave me time to introduce myself for the 1st 10 mins. Then asked 2 questions. 1st was arrays didnt require to writ code, 2nd was dynamic programming asked to wrote code. I did well on both so we had 10 more mins to spare where I asked him questions.

2nd session: Introduction took a really long time, interviewer talked at great length about himself and his work. Asked me if I am interviewing for real or just there to get some interview experience, because apparently thats what he did initially himself. When we got to the question there was only about 15 mins left. Tree related question, that in my opinion wasn't really presented very well. Code was required. I started solving it but he was basically walking me through every step. Not sure if he just wanted to pass me or realized that he already spent too much time talking. Got the correct solution, but I felt like I was being lead to it.

3rd session: Embedded systems engineer, asked me a lot about my actual resume. In the end asked me a pretty basic question embedded system specific, asked to write code. Was really easy for me, did really well. Probably the most enjoyable session.

Lunch: The weirdest part of the day. Interviewer only got notified the night before, didnt look like wanted to be there. Didn't even know where the closest cafeteria was. Ended up walking for about 15 mins around the campus. Dropped the tray when getting food and spilled lunch over clothes, got really upset. Then suggested we sit outside because its quieter there. But the day was hot and it was really uncomfortable, I was glad to get back inside.

4th session: Usual introductions. General distributed systems question. Went pretty well in my opinion, but then I am not a distributed systems specialist, so cant really judge.

5th session: The worst one ofthe day. Usual introductions. 2 Questions. 1st question supposed to be a warmup, really simple bit manipulation, but for some reason my brain just went into a feeze, not sure if it was the stress or the sun from the lunch. Anyway I worked manually through some samples and did come up with an algorithm and a correct solution. In fact the interviewer corrected something in my solution, but when I started running it through a test case it turned out my initial code was in fact correct, so we reverted it. Because 1st question took so much time, we only had about 10 mins for the 2nd one which was supposed to be the main question. So we didn't really finish it.

Recruiter called me a week later saying that they decided not to go forward with my candidacy at this time. I am not really too bothered since I am pretty happy at my current job and this was more of a learning experience, but I admit that if they did make me a good offer, I would've seriously considered it.

While driving home I did come up with a really good solution to that unfinished question from the 5th session. And then also found every single question that I got asked in my interview on programming websites. So looks like if I wasn't so busy and just spent more time preparing, the interview would've gone much smoother. I thought just experience would be enough to pull me through.

Other than the lunch person and the 2nd session interviewer, everybody else was very pleasant and enjoyable to talk to.

Interview Question – All were unexpected. I didnt prepare for any, but was able to work through most of them. None really difficult under normal circumstances.   Answer Question


No Offer

Neutral Experience

Average Interview

Software Engineer Interview

Software Engineer

Interviewed at Google

Interview Details – Google is remarkably quick at getting back to applicants when applying through directly on Google's employment opportunities page. I received an email two days after submitting my resume and was asked to schedule two back to back 45 minute interviews the following week. Each interview was technical in nature and I was asked to solve two coding questions by typing code into a shared Google document with my interviewer. After asking questions and coding my solutions, the interviewer and I went over my solution and discussed aspects of it such as the running time, security and readability of the code. I did not get past the first round but was pleased by the swiftness of the process.

Interview Question – Prove P = NP   View Answer

Worked for Google? Contribute to the Community!

The difficulty rating is the average interview difficulty rating across all interview candidates.

The interview experience is the percentage of all interview candidates that said their interview experience was positive, neutral, or negative.

Your response will be removed from the review – this cannot be undone.