So, I Interviewed at Google

I interviewed at Google several years ago. It was during my last semester of college. This isn’t going to be a “How To” or “What Not to Do” of going about a Google interview. It’s a personal narrative of my experience. I’m largely writing this for those that are about to interview at Google, have already interviewed at Google, and those curious about what a Google interview is like. A lot of what I have to say might be interesting for those interviewing ”anywhere” for the first time, because there really isn’t anything too special about a Google interview. I interviewed for a software engineering position, so some of this post will relate more to that than to how an interview for a marketing or management position might go. I hope I can offer something interesting for everybody.

I didn’t even want to interview there. Google didn’t match my career goals. There was this guy, Jeremy, that had attended my university. He was working at Google, and he’d visit my university every semester, on a recruiting run. As with most companies, he’d get a bonus if anyone he recruited got hired. So he’d take as many resumes as were handed to him and put them in the “system”. He also asked his favorite professors for their recommendations. These recommendations would get put into the real system and be guaranteed phone interviews. My name was given to him by my ”Numerical Solutions to Differential Equations” professor. So Jeremy emailed me and asked for my resume. I took a long time to respond to him. Mostly because I wasn’t really interested in working at Google. Eventually my professor had words with me and said that I shouldn’t pass up an opportunity like this. So I responded to Jeremy with a weak resume. He told me it was weak. I was still guaranteed an interview since my professor had given the recommendation, but he suggested I improve the quality of my resume so there would be more to talk about during the interview process. I did, with his help.

I consider Google to be my first real interview. I had sort of interviewed for the job I worked during college, but it was manual labor and they hired anyone who seemed willing to work. I had also interviewed for a software engineering position at one of my university’s labs. I hadn’t really taken that interview seriously, and it wasn’t for a professional job, which is why I don’t count that interview as my first.

As far as entry-level jobs go at Google, they don’t really care which office you go to. So when the interview process began for me they asked me to pick my top three choices for location. They’ve got offices all around the US. I wasn’t really too concerned with the choice. Jeremy had told me I probably wouldn’t get hired, so it didn’t matter. I picked Seattle because I thought I’d like to live there. Once I’d made my selection they connected me to the recruiter attached to Seattle, a guy named Brad. Brad gave me a call and told me what to expect during the interview process. It would start with two phone screens, back to back, each an hour long. (I’ve had phone screens as simple as “So, do you know C++?” My response being, “Yes.” Their response being, “Okay, I guess we’ll fly you out here.” I’m exaggerating a little, but usually the phone screen is short.) Then if I passed that, they’d fly me out for an in-person interview.

One thing that most software engineer interviews have in common is the “technical questions”. These are basically programming puzzles where you’re given some problem and you have to write the code to solve it. They usually take about thirty minutes to solve. Here’s an example:

Write a function to reverse a string. So for example if you have the sentence, “The cat is blue” The output should be, “eulb si tac ehT”. Further, write a function to reverse all the words in a string. From the previous example the output would be “blue is cat The”.

Usually you get questions like this in a written test or in-person since it’s pretty hard to write code over the phone line. It’s much easier to write it on a whiteboard. The Google interviewers had me open a Google Doc so that I could type out coded responses to their technical questions. They’d see it in real-time. The first guy called on schedule. He asked a little about my interests in Google. I feigned interest in the company. It wasn’t really where I wanted to work, but I knew I shouldn’t admit that. I mean, I was in college. I was afraid I wasn’t going to get a job at all. I’d work for a company I didn’t want to work for just so I could start my career.

He presented me with a pretty easy question. I answered it immediately. He went on to complicate the problem. I needed some help once he complicated things. Since I needed help I figured the guy thought I was an idiot. Thinking I already failed the first interview made the second interview easy, since I was no longer nervous. I killed on the second interview. I pretty much came up with the best solution possible to his technical question. It wasn’t even a standard computer algorithm or data-structure question. I did so well the guy didn’t really even know what more to say about it, and the call ended early.

A few days later the recruiter, Brad, called and said they’d fly me out. I was sort of surprised, but more than that I was scared. I immediately went into the “what-if-I-get-the-job?” sentimentality. I started looking for apartments in the area. I wondered what my salary would be. I wondered how long I’d have to stay at Google, because I knew Google wasn’t where I wanted to end up. Would I have to stay there for several years or could I bail out in a single year?

Travel arrangements were made. Brad also sent me some recommendations on books to read to help with the interview process. I emailed Jeremy to let him know that I was flying to Seattle. He emailed me back with a story of how he got lost on the way back to the airport, missed his flight, and had to sleep in the airport. I didn’t want that to happen to me. He also told me to email him again after the interview and let him know how things went. His mind wondering if he’d get that recruitment bonus. On a hilarious side note, I want to mention that some of the emails from Google about the arrangements were filtered into the Spam folder by Google’s own Gmail.

Google covers all of your expenses when you interview, as long as you have a receipt. They’ll even reimburse you for the mileage you spend driving to the airport you’re flying from. Souvenirs might be pushing it, but if you find yourself in a Google interview you might as well give it a try. Write it off as a grocery expense. You’re given a budget of like $35.00 a day for groceries.

I flied into Sea-Tac Airport. My first task was to pick up the rental car. I had some trouble doing this. I hadn’t done much air travel, and wasn’t really too familiar with airports. I followed the signs in the airport to get to the rental booths. No one was there. So I picked up the phone at the desk and said, “Where are you?” They said, “Where are you calling from?” And I said, “I dunno, at the desk that says Hertz.” They said there was another booth on the other side of the airport. So I walked down there. On the walk some beggars asked me for money. I didn’t have any money since I was a poor college student. They were mad at me for saying I didn’t have any money and insisted that I take a flier so that I could mail them some money later. I didn’t even know beggars did that. It was strange indeed, but at least they didn’t assault me. A minute later I found the car rental booth and the guy asked me if a Prius was okay. He also asked if I wanted a GPS, but I declined. I’d already printed out the directions and figured I wouldn’t get lost. That was my folly. Google was going to reimburse all expenses anyway, I may as well have gotten the GPS.
I found myself alone, lost, driving in the rain.

I drove out of the airport not really knowing where I was going. I didn’t even look at the directions I’d printed out. I knew that Google’s Seattle office, and the hotel I’d be staying at, was in Kirkland, which is on the east side of Lake Washington. I followed the highway that led out of the airport, hoping it was the right way. After driving for a few minutes I had a pretty good feeling I was going the right way. I felt like I was going east, and I have a pretty good sense of direction. I was pretty sure I was on the correct highway, I405, too. It started raining, hard. After I’d been driving for a while, and not really seeing many signs, I wasn’t sure if I had passed the exit I was supposed to take, but I kept going. When I saw a mileage sign that mentioned Everett, but didn’t have Kirkland on it, I was pretty sure I’d gone too far. I pulled off the freeway with the intention of turning around. I got lost turning around. Seattle has really thin lanes, and I thought I was going to hit a car coming in the opposite direction the whole time. Also, as with anyone that is lost, I found myself driving the wrong way down one way streets and entering the wrong side of the freeway exit lane. I’m surprised I survived. I ended up driving up and down a lot of side roads. When I had trouble finding the highway entrance I thought that if I headed in a generally south direction I could take the side roads all the way back to Kirkland. But roads in the Greater Seattle Area curve all over the place, so a southbound road quickly turned to the east. I wondered if I’d end up at Microsoft. That didn’t seem like a bad deal to me. I didn’t really want a job at Google, but I’d always been a Microsoft fan-boy…

I found myself driving through a residential zone for about an hour. I think I was in Bothell or Woodinville. Eventually I found a gas station and pulled into the parking lot. I asked the attendant if she had maps for sale, she looked at me all crooked-eye and said, “Huh?” I guess everyone was supposed to have a smart phone. I didn’t. She said, “Where are you trying to get to?” I said, “I just want to get on I405.” She pointed to the road in front of the gas station and said, “Take a right on that road, you’ll get to 405″. I did just that. She was right. The entrance was a few blocks up the road. I had just come from there, but I guess I was so scared I didn’t see the signs. I headed south on I405, this time paying better attention to the exit signs. From there I made it to the hotel without difficultly.

I’d looked up the hotel before flying out there. It was the Woodmark Hotel in Kirkland. It was fancier than anything I’d ever been in. I felt intimidated. They had valet service. I wasn’t about to use the valet service, though. You have to tip for that, and I had no idea how much to tip a valet. Plus, you have to keep in mind that I was a college student and not exactly made of money. I mean I think I might have been able to get a reimbursement from Google for tipping the valet, but then I’d have to ask for a receipt for that, and basically it was just easier for me to park myself. So I walked into the hotel, and they offered me a glass of champagne, but I don’t drink so I declined. It really was the fanciest hotel I’d ever been in. I was used to Motel 6 and the like. I arrived at around 4PM and I thought I might as well have dinner. I had a $35.00 budget and decided to milk it for all it was worth. I ordered expensive, and then over-tipped to a nice round $35.00. I don’t think they liked having a loner in their restaurant, though, because they kind of stuck me in the back, around a corner, out of sight.

I had kind of wanted to see some of the sights of Seattle while I was out there. Like Pike Place Market, or the Space Needle, or maybe a museum or something, but I was afraid of getting lost, and I didn’t know how parking in a big city worked. So all I did was walk around the neighborhood of the hotel. The Woodmark Hotel is right by Lake Washington so there are piers and parks. Nothing really too exciting though.

I couldn’t really sleep. And did I mentioned I was a poor college student at the time? I didn’t even have a computer or a tablet or a smart phone or anything. So I couldn’t browse the internet. I tried watching TV, but I was too nervous about my interview. I woke up early, if I even slept at all. I didn’t want to go to the hotel restaurant for breakfast, because of how much of a loner I had felt like the night before, so I went to a gas station and got a bagel and some orange juice. A bus drove past the gas station. It had an advertisement for ”Portal 2” on the side. I thought, ”Valve!, they’re here too!” I also filled up the Prius’ gas tank, and with all the driving around I had done while I was lost I thought it was going to be a lot, but it was only like six bucks. I didn’t really like the Prius, but I couldn’t complain about how economical it was. Not that it mattered since I was getting reimbursed for everything.

One of my concerns had been what to wear to the interview. For software engineering, khaki pants and a polo is pretty standard for an interview. I went with that. In retrospect I would have been fine wearing a t-shirt and jeans. If I interviewed there again, I’d probably wear a bow tie or something. Just for the hilariousness of it.
Google’s Kirkland office.

I didn’t get lost going to Google. It wasn’t very far from the hotel. It was this high security complex, with key cards to get in everywhere, including on the front door. I’d never seen anything like that before. I had to ask someone how to get inside the building. They told me to take the door handle and pull on it. So I did. The receptionist greeted me, and told me to sign in using a nearby computer terminal. I asked, “Why can’t you sign me in? I don’t know how to use computers.” And she was like, “It’s easy, just press the touch screen, your name is already in the system. You just have to select it from the list.” She didn’t seem to understand that I was joking. I responded with, “If my name is already in the system, why do I have to do anything at all?” So I walked over to the kiosk and signed in, and it printed out a name badge for me. I put the name badge on my jacket.

I waited for about half an hour for my recruiter, Brad, to show up. He apologized for being so late, and I was like, “I don’t really care. I’m so scared right now that delaying things for as long as possible is probably for the best.” He laughed, but there was a little hesitation in his laugh. I’m pretty sure he would get a bonus if I got hired too, so it was in his interest for me to get hired, and I was already pessimistic. He showed me around. They had a rock climbing wall in the office. I don’t know why it was there. Nobody was using it. Brad told me nobody used it. Probably it was there so that Google could make themselves look more fun than they really are. There were a lot of things that made Google look fun. Like candy everywhere the eye could see. I didn’t know if it was free or not, so I didn’t take any. It was like a magical land of bliss. The movie “The Internship” captures it pretty well, even though that movie is about the Mountain View office and not Kirkland. As we were walking around I was trying to peek into the offices to see what people were doing. There really weren’t that many people there. It was like 10AM, so I guess a lot of people hadn’t showed up for work yet. I saw a few people coding, and I tried to see if I could recognize the language. Their monitors were too far away.

After the tour it was time to start the interview. The in-person Google interview is basically the same as the phone interview, except you write on a whiteboard instead of a Google Doc. I really hate whiteboard coding. It’s the worst type of coding. When you’re coding on a whiteboard and run out of space, you’re screwed. When you’re coding in a text editor and you run out of space you press ENTER. When you’re coding on a whiteboard and you need to delete some code you have to use an eraser. When you’re coding in a text editor you press DELETE.

A typical interview goes like this: You shoot the breeze with the interviewer for ten to fifteen minutes. They might ask about stuff on your resume, or about your interests in working at Google, or about projects you’ve worked on. You can also ask them whatever you want. Maybe about how they like the area, or how they like Google, or what team they’re on. Then for the next thirty minutes you work out one of those technical questions I mentioned before. After that you’re sent to the next interviewer. I remember five of my interviews, so it’s possible there ”were” only five, but I might be forgetting one or two of them. Basically the whole process was seven hours of HELL! I like to call it the Gamut. Every company has some kind of Gamut, but Google’s was the worst I’ve ever been in, by far. It was in no way fun. I mention that it wasn’t fun because Jeremy had repeatedly told me, “You probably won’t get the job on your first interview, so just try to have fun.” I have a pretty good idea of what is fun, and nothing about what happened that day was fun, and unless you are some kind of masochist I don’t how anyone would find a Google interview fun. Even if you were a a genius, and aced the whole interview, I don’t think you’d call it fun. “Mundane” maybe, but not “fun”.

For my first interview of the day Brad dropped me off in a room with this really hot chick. And I mean unbelievably hot. And I was like, “This chick is a programmer? Dang! I didn’t even know hot programmer chicks existed!” Needles to say I was pretty excited, and I know I sound sexist, but I’m sorry to say that that is just how college guys think, and I want to tell the whole story here, not some politically correct version of it. So while I was checking her out I kept looking to her ring finger to see if she was taken, and I was pretty sure she wasn’t, so I was like, ”Well there’s some potential right there if I get this job!” All the sudden I was way more excited about the job than I ever was before. Maybe my professor was right, I shouldn’t pass up an opportunity if it came knocking. So we shoot the breeze for a bit. She asks me what my interests in Google are. What my interests in software engineering are. And so on. All the standard stuff.
Whiteboard coding.

About fifteen minutes in, it’s time for the technical part of the interview. She told me to grab a marker and approach the whiteboard. And I was like, “Oh boy, I gotta do some kind of coding? I don’t even know about coding. I got a degree in math, not in coding.” She laughs, and I was like, ”Win!”. She actually asked me a coding question related to math. It was about prime numbers. I ripped through the question. She seemed satisfied with my solution. When I look back on that question, I think I blew it, or at least parts of my solution were incorrect. I don’t think she realized I blew it, though. I think she was satisfied with my answer because she didn’t know as much about mathematics as me, and so my solution seemed more sound than it really was. Either that or she was just being nice about it. Google does that on purpose, I think. They start you out with a really nice interviewer and then things get worse from there. My interview seemed to go that way.

My second interview started immediately after that the first one. The hot chick left me in the room and a few minutes later another guy showed up. Nothing about him made me want to work for Google, at least not for the same reasons that the first chick did. He seemed cool enough, though. This guy had actually read my resume and was legitimately interested in some of the things I’d worked on. I took that as a compliment. He definitely had the attitude that there were things he could learn from me. His technical question was more difficult than the first. I made it through it with a little help from him, maybe a little too much help. I didn’t feel badly about that interview because even though I’d made some mistakes the guy seemed to know I wasn’t an idiot based on the other stuff we’d discussed. This was pretty much the only guy that asked about anything on my resume.

Lunch came next. They assigned some guy named Kevin to have lunch with me. I can honestly say that Google’s lunch was the worst lunch I’ve ever had on an interview. Usually the company takes you out to eat. Usually to a nice restaurant. They’ll pretty much open the door to wherever you want to go. Google just gives you the standard buffet that their employees get every day. It’s pretty much crap. Nothing was really very appetizing. The pizza was the best thing they had, and I don’t really like pizza. Kevin ended up going on about how great Google was, and how happy he was with his work. And he kept trying to give me advice, and I was thinking, ”I kind of want to work here, but I’m not really a Google fan-boy like this kid is”. I asked Kevin what IDE he used when writing code, and he mentioned that he usually used a generic text editor. I was kind of disappointed by his response. I love Visual Studio, and I wanted to keep using it if possible.

The biggest piece of advice Kevin gave me was to take a bathroom break between each interview even if I didn’t need one, even if I just washed my hands, because it would be a good opportunity to clear my mind and start the next interview fresh. He then asked me if I wanted a coffee or hot chocolate, and I said I didn’t, but he insisted that I get one. I don’t know why. Maybe he wanted to impress me with the fact that there is basically a Starbucks inside their office. I consented, and to be honest it was actually a good cup of hot chocolate. Better than Starbucks hot chocolate. By a lot. This did come as a surprise as compared with the quality of lunch. I did take one bathroom break that day. I didn’t really see the point in repeatedly going to the bathroom. They had these target stickers in the urinal, and I’m sorry to say this but something about that just seemed a little too immature for me. I don’t take everything seriously, but something about that just seemed so ”First Grade”.

After lunch there were three more interviews that I remember. This one guy I interviewed with had previously been a Microsoft employee and had come to Google for a change of scenery. He seemed okay. He seemed like the stereotypical software engineer. Like you’d see in movies. Super laid back, slothful even, and yes, overweight. I remember I was looking at this guy and thinking, ”This guy makes over $100,000 a year!” (Oh the naivety of being a college student. Thinking that $100,000 was a lot of money.) I blew his technical question. Hands down. No question about it. After he asked the question I found myself scratching my head, and saying, “What’s a computer?” There was sort of an elitest vibe about him. He definitely came off as a guy that thought he was a genius simply because he worked for Google. He had this attitude that since he understood the question, that I should too.

The interview after that was the worst. It was a lady. She wasn’t hot. She wasn’t even close. She was wearing a wedding ring and I was like, ”I guess some gold digging guy married her because she makes over $100,000 a year.” I wasn’t so interested in working at Google anymore. I’d already blown the last interview anyway. I never got through the technical question this lady asked me. Not even with massive amounts of help. As soon as she told me to draw a grid on the whiteboard I knew I was screwed. A grid implied using the graph data-structure, and if you know anything about computer science, then you know that graphs are pretty much the worst of it. I knew for certain that I wouldn’t be getting a job offer when she said, “Let’s try a different question. I’ve never had to switch questions before!” So she switched to a different question, it didn’t involve graphs, but I didn’t do much better with it.

The final interviewer was a kid just out of college. He was maybe 22 years old. He’d interned at Google and had been offered a full-time position. He struck me as an angry kid, a miserable kid. I’d been asking all the interviewers, “What do you do on a daily basis?” I knew that software engineers wrote code, but if an engineer was writing code for eight hours a day, five days a week, there would be no reason to have so many programmers at a company. So I knew that software engineers must be doing something besides writing code. This kid gave about as honest an answer as possible, I quote, “I show up at around 11 or 12, check my email. Go out to lunch for about 2 or 3 hours. Check my email again. Then leave at around 4.” I know it sounds like he was kidding around, but I know he was telling the truth. I actually appreciate his honesty the most. I blew his interview, and he was kind of a butt, but I’ll give it to him that he was honest. When we were done this kid escorted me to the parking lot, it was like 4:30. He was probably upset that my interview had made him stay half an hour later than usual.

I didn’t get lost on the way to the airport! I drove straight there, without a GPS or anything. I was kind of proud of myself.

I was pretty sure I wasn’t getting an offer, though I must admit I was still hopeful. I really only felt terrible about the last two interviews. When I got home I emailed Jeremy and told him my thoughts. He told me to let him know if I got an offer or not. The recruiter, Brad, called like two weeks later. I don’t know why he took so long to call. I’m sure they made the decision within an hour after I left. He said, “We aren’t going to make an offer at this time.” I said, “Okay.” He was hesitant on the phone. I think he expected me to say, “Why not?” I didn’t say that. I hadn’t expected to get an offer. He started answering the unasked question anyway, “The interviewers just thought that…” I cut him off, and said, “That’s fine.”

I’ve heard that each Google interviewer gives a graded report on the candidate, and that a few exceptional reports, even with some negatives, are more likely to get an offer than a full gamut of “good” reports. I’m pretty sure that all of my interviewers gave me a thumbs down.

Here is the part where I’m going to get a little bitter about Google, and rant on a bit:

I thought I was dumb. I thought I was stupid. I resented Google. I felt depressed for a while. I knew I was a competent programmer, and these guys were telling me I wasn’t. I was so bitter I never emailed Jeremy to let him know I didn’t get the job. His bonus be damned. They aren’t really interested in anything you’ve done, only if you can make it through some technical puzzles. I never had difficulty with technical questions outside of Google, though. Probably because I have since read a lot of technical questions and I’m familiar with the most popular ones. That’s how some people get into Google. They memorize a bunch of questions and solutions. It works. Technical questions require a different mindset than day to day programming tasks. If you memorize a lot of them, you’re probably better prepared to face ones you’ve never seen before.

I’ve talked to other software engineers about their experiences interviewing at Google. It’s usually negative. Which makes one question if they ”want” you to feel depressed. I think they do. One of my friends has a theory that Google interviews a lot of candidates with no intention of hiring them, just so that they can say that they only accept 1% of their candidates. It’s to make themselves seem more elite. He might be right about that. They could certainly ask harder questions during the phone screen, or have qualifying tests, and eliminate candidates faster. The same questions are just going to get asked in person anyway. It would save money. Most companies would prefer that a candidate get eliminated earlier rather than later. For Google it’s easy-peasy to pass the phone screen. Maybe it is more valuable for them to have a reputation of hiring only 1% than to eliminate candidates earlier.

Once I had other job offers I didn’t feel dumb anymore. And once I learned more about the software engineering industry I was happy that I hadn’t got an offer at Google. I didn’t really know anything about the software engineering profession, and so the job I was applying for at Google was SET, Software Engineer in Test. (These are also sometimes called SQE, Software Quality Engineering, or SQA, Software Quality Assurance, Engineers.) SET is basically the worst kind of engineering. It’s not even really engineering. It’s just writing some code to test someone else’s code. A SET’s code doesn’t ship to a consumer. Usually all they do is double click some kind of batch file and run a script. I’m pretty sure that my last interviewer was a SET. That’s why he was so dissatisfied with his work. That’s why he only needed to show up for a few hours a day. It doesn’t take that long to start a script, and it will run all night. SET jobs are boring as all hell and require no creativity.

Part of the reason I like software engineering is because I enjoying finding solutions to problems. I enjoy ”engineering” solutions. I wouldn’t have been doing that had I got an offer at Google. I would have been sitting at a desk, double clicking batch scripts, bored out of my mind. At most companies there are more SET and SQE engineers than there are actual software engineers. It makes sense since companies don’t want to ship faulty code. A lot of college graduates end up doing it. It’s not all bad. Even SET’s are paid well, but satisfying work is more important than compensation in my opinion, at least to some degree. Worse than that, is that SET isn’t actually a position you can move out of in the traditional way. Software companies want quality code, so if you excel at SET they are going to want you to stay there and keep doing a good job. You’re basically stuck there. You actually have to do a bad job to get out of it! I think it’s kind of sad how rigorous Google’s interview process is. A candidate has to go through the whole Gamut and if they do get a job, they get one that could basically be done by a monkey. They’ve proven themselves as bright and then they become a SET. A SET!

After my Google interview I found a job I really wanted, it matched my career goals. Google seems to have an elite reputation within the industry, but that’s diminishing every year. I kind of see Google, and the other “top” software companies like them, as ”programmer farms”. They hire a lot of smart engineers and hope that one of them comes up with a good idea. In conclusion, I don’t really know what to say. I use a few Google products, my bitterness towards them doesn’t prevent me from recognizing a quality product. I’m definitely under the impression that three out of five Google programmers think they are smarter than everyone else. Maybe they are. Probably they aren’t. If I interviewed at Google again I probably wouldn’t get hired. I’d know going in that it would be best if I memorized some stuff about trees and graphs, but I wouldn’t bother. Information that I can look up is something I don’t want to memorize for an interview. I did enough of that in college. I prefer just taking my chances.

Thus ends my rant.