Posted by Admin on 12/2/2006 12:42 PM | Comments (33)
I've gone through a Google interview recently and here's my experience.  Some details are changed to protect the innocents. :)

Some background info.  I am a fairly senior developer with lots of experience in many different technical areas.  I was thinking of changing job lately and thought what the heck, let me try Google to see what's the big deal about their interview process.  It's kind of a challenge and self-assessment.

So I submitted my resume to their website and waited.  And waited for a long while before someone from HR contacted me (I almost gave up hope).  The HR person was pleasant and wanted to arrange a technical phone interview with me.  He said it would be conducted by a team-lead who would ask tough questions.

The development team-lead called and we chatted for about 45 minutes.  The questions were all technical but somewhat lightweight.  The focus of the question was quite narrow.  I was surprised a "team-lead" in Google has such a narrow set of knowledge.  May be he deliberately kept the questions easy.  I don't know.

Anyway I guessed I made a good impression because the HR person called back and said the phone interview went very well.  He wanted me to come for an on-site interview talking to couple developers and again said they would ask  tough questions.

So I went to the on-site interview and met 5 developers, and tried out the Google lunch there. :)  The food was free and was pretty good.

Each session was about 45 minutes are they were very on time.  The format of the interview was pretty much the same for all developers except one.  They asked something special you have done before but I got the feeling that they really didn't care much about it.  It's more of a scene opener.  Next they asked two or three lightweight technical questions.  Then they asked the Puzzle question.  Some asked two puzzle questions, some asked one, some would ask me to write C code on the board to implement the puzzle.  The only exception was a guy who asked the why-is-manhole-round type of question and we pretty much spent the whole 45 minutes talking about it.  The last 5 minutes usually were for me to ask them questions.

Again the technical questions are somewhat lightweight.  The coding questions are antique (I'll come back on that later).  The puzzles are just the standard puzzles that you could have found on the Web.  I've aced all the technical questions and done well on most of the puzzles.  There were one or two puzzles that I stumbled on, which I have seen on the Web before but don't remember the solutions.  (Hey, the puzzles are just a passing interest, not my main job).

Here's my thought on the whole process.  The interview and questions seem to aim at evaluating recent graduates, not for senior level developors.  They are really not accessing technical knowledges or skills.  It's more like an IQ test.  The technical focus is very narrow and shallow; there's no breath and depth to it.

The puzzles are a waste of time.  I can understand one or two puzzles from one or two people, but NOT EVERY SINGLE ONE OF THEM.  It shows Google is getting monocultural.  The puzzles doesn't show anything toward doing the job.  The puzzles are well known and their solutions are all over the Internet.  I have extensive experience in many different areas and all of them are listed on the resume, yet none of the interviewer asks questions related to any of them.  Either they have no clue on the technical details on those areas or they didn't read the resume.

The coding exercises they asked me to do were all related to C pointer manipulation.  After I was done I mentioned that I've not have the need to do pointer manipulation for a long time - I used class/STL/ATL/template in C++, or Java/Ruby/Lisp/C# which have no pointer.  It's like, hello, come to the 21st century.  Pointer manipulation is so 80s.

Throughout the interview, they didn't ask one question related to:

- Advance RDBMS concepts and usages (one guy asked a very simple SQL question)
- Data model and modeling issues
- Data relationship modeling
- RDBMS internal design and implementation
- Transaction (DB, file-base, local, or distribed)
- Reliability and recovery
- Data contention and resolution
- Locks and deadlocks.
- Multiple thread issues, synchronization, lock, event, monitor, etc.
- How synchronization primitives related to and build on each other.
- Distributed synchronization
- Any kind of distributed system
- Any parallel processing
- Any networking system
- Any network protocol
- Anything about the Internet, design and structure, routing, etc.
- Socket programming
- Any security method and system
- OS theory and practices
- OS kernel or DB kernel
- Filesystem theory and implementation
- Device driver design and development.
- Any alogrithms, complexity, NP/P.
- Language specifics (ASM/C/C++/Java/C#/Lisp/Ruby/etc)
- Object Oriented Programming (WTF? OO is out of style now?)
- Compiler and language design and implementation
- Grammar and regular expression
- DFA/NFA/LL/LR/Predictive Parsing/ASTree/Semantic Checking/Type Resolution/Inference/CodeGen/Optimization/ErrorRecovery
- UI design or framework
- HTML/Javascript/Swing/AWT/MFC/WTL/VB
- AI/Rule Inference/Neural Net/Fuzzy Logic/Agent/Knowledge Representation/Etc
- Any search theory and issues
- Windows platform development, Win32API/COM/DCOM/ATL/ActiveX/C#/ASP.Net/ActiveDir/etc

They asked none of these important CS related topics.  80% of the time are spent on the puzzles.  Hello.  Puzzles are the pastime stuff you do during lunch or taking a ride in a bus.  They can't help you do your job.

That's a saying which goes like: you know the person by the kind of questions he asks.  Well it certainly shows the depth and breath of knowledge Google people have.  I got the distinct feeling that they asked the puzzles because they don't know enough about other topics to evaluate a candidate.

Now that I got the job offer.  What the heck should I do?

Comments (33) -

Marcus on 11/28/2006 2:06 PM I'm working for Google now. Puzzle interviews suck and are banned. I hate them myself, if you're so inclined, give feedback to the HR person once you decide on your job offer, interviewers should not be asking those types of questions.

Yes, if you're interested in $$$, join a startup or go back in time to Google 3 years ago. You won't make a killing now. But it is still a very VERY interesting place to work. I have 10 years of experience in the field, and have worked for both large and small companies, and am still shocked every day at how motivated and smart my co-workers are. Google has scaled very well in terms of culture from a small company to a large one. If you want to be a cog in the wheel and do dependable but 'boring' work, there are jobs in here for that. Likewise, if you want to start new things, and work on pretty cool stuff with smart people, there are plenty of projects for that too. The thing I get the most out of Google is that it's up to you to shape your career. There are career paths for those to move into mgmt, and others to move up the technical ladder (the technical ladder goes higher than mgmt ladder). There are boring projects, and exciting ones, some with pointy haired bosses, but most w/ engineers in charge. It's up to you.
Kimball on 11/28/2006 4:24 PM I think there's value in specific technical questions for experienced candidates (that claim specific technical knowledge on their resume). They test for

a) Resume lies.

b) Narrow experience. Some people can spend years in a very narrow technical niche an not know anything else. Maybe I'm unfair but I always count this as a point against for lack of curiosity.

I'm not talking about 'what are the arguments to wglCreateContext()?" questions here but more along the lines of:

- People with C++ and Java experience should be able to talk intelligently about the various tradeoffs between the two languages (I don't care which they prefer).

- People with multithreaded code experience should be able to spot simple deadlocks and race conditions in sample code.

- C programmers should be able to spot memory leaks, buffer overruns and the use of uninitialized pointers in sample code.

- Everyone should be able to explain what's wrong with this code:

class Car : public Engine {};

- Swing programmers should know that you can't manipulate controls off the AWT event thread.

- 3D Graphics programmers should know what the difference between a dot product and a cross product is.

and so on...
Foster on 11/28/2006 6:42 PM not_my_usual_handle

what puzzle problem do you use that reveals all that? so many are just ah-ha or no idea/
Marcus on 11/29/2006 5:42 PM The good thing about asking reasonably generic puzzle/programming/algorithm interview questions is that you (hopefully) aren't biasing the interview too much towards people with extremely specific technical knowledge.  These should be questions that a competent engineer, or smart grad, can at least take a reasonable stab at.

Some puzzle problems can be a bit hit and miss but you can still learn alot about a person by how they approach a problem and how they react if they don't arrive at a solution right away.  Do they panic?  Can they at least make some sound deductions about the problem? It can be very revealing to see if they are able to take clues and utilize them.

The problem with technical questions that go into great depth in a specialized technical area is that they typically have a huge bias towards people who have recent experience in that area.  Of course, this may be useful if you're hiring people specifically to work in that area but not so useful if you are just trying to establish whether someone is a good engineer.  And I imagine that if Google were trying to hire someone with an expertise in say network protocols or operating system kernels, they'd probably go for a recognised world expert.

It sounds like maybe the OP's interviewers collectively went a little overboard with the puzzles.  This could simply have been the vagaries of a random sample.  When I interviewed at Google I was asked, along with a range of basic algorithmic questions, questions on threading/synchronization, a distributed algorithm, system design, and optimisation.

I like Sam O'Daniel's comment the best.
Kelvin on 11/29/2006 8:00 PM >I can't believe so many Joel fans in here aren't being more harsh on Google's lame puzzle questions.

Isn't Joel ad advocate of puzzle questions? For the record, I've always been against them...at least when literally applied (like "1 point for getting the 'right' answer, -1 for the wrong answer).

>They don't test programmer knowledge or problem solving skills.

So someone is going to study on the internet to know every answer to every variation of every puzzle? Right.

And someone who did know the answer would probably say "Ah, yeah I saw this one on {X}. I think they said the answer was {Y}, but I think..."

An interview is a conversation where impressions are built. It isn't a multiple choice test.
Jonathan on 11/29/2006 10:18 PM >You can learn alot about someone's skill by how they interview.

True, but not in the way you mean.

>I think more highly of a shop that completely grills me then one that asks silly questions or lets me pass based on my resume.

I have exactly the opposite impression: The less skilled someone, and by extrapolation the shop, is, the more likely that they're going to think their pet deep focus is universally relevant.

The more desperate they're going to be to try to show that they know their stuff by asking generally irrelevant, spend-5-second-looking-in-the-MSDN-Library type questions.

The most insecure, marginalized technology workers are the ones who desperately want to show their stuff by going on about esoteric, largely irrelevant discussions.

This all comes around to the classic "what is your biggest weakness?" type questions. There are those bordering-on-Aspergers type individuals who have a serious problem with this question, because they have so many literal problems with it. Yet often these questions are probing something entirely unlike what it seems to ask.

There is often a method to seeming madness.

BTW: I could determine if someone was a good developer, in my opinion, without ever asking a single technology question.
Jack on 11/30/2006 12:36 AM I can't believe so many Joel fans in here aren't being more harsh on Google's lame puzzle questions.  Puzzles test nothing.  Nothing.  They test whether you have looked at some puzzle site on the internet.  They don't test programmer knowledge or problem solving skills.  They don't test whether you can "get something done."

My current company has a strict, "no puzzle questions" policy because of all the above.

I interviewed at google for the same reasons, curiousity, etc. and left with the same bad taste in my mouth.
Edan on 11/30/2006 2:54 AM @Dennis: The OP basically said it was a long interview process and they asked the same types of questions over and over again.

That is stupid. No problem with a few puzzle type questions, but if you have all day, you really should dig into more technical issues also.

You can learn alot about someone's skill by how they interview. I think more highly of a shop that completely grills me then one that asks silly questions or lets me pass based on my resume.

The OP also said these puzzles are on the web. So how are they finding smart people if they can read the puzzle?

The time to get into Google was 5 years ago. IF you spent the last 5 years coding at Google you would be rich today. The big question about going to google should be 'is there upward mobility?'

Can you move up at google or are engineers, engineers and you get your cost of living raise and that is it. Even though there are alot of smart engineers at google most engineers want to stay engineers. Google appears to still be growing. Companies that are growing have more upward mobility.

That is the #1 thing I would look for...
Conan on 11/30/2006 5:12 AM >I was surprised a "team-lead" in Google has such a narrow set of knowledge

What an odd observation. You have no idea what the team lead's skillsets are.

The rest of your post seems to document your expectation that Google should be hiring technicians rather than "smart people who get thing done" (to use a Joelism).

Perhaps Google isn't looking for technicians? Maybe they don't care that you have an in-depth knowledge of {X}, but instead want to know that they're bringing in clever, intelligent people who'll be able to adapt and overcome?

Seriously, shops that focus on intensive technology specific questions are often misguided (at least when they're hiring full time, strategic team members. Such technician recruitment is appropriate for "code monkeys" and short-term consultants to bang out a piece), endlessly staffing up for yesterday's problems.
David on 11/30/2006 7:30 AM Google is a great place to work if you are a cute 24 year old woman who went to Stanford and majored in psychology. You don't have to program, you get all the Google perks, you get paid well, tuition reimbursement for night classes to prepare for law school in 3 years, there is a free bus to the city so you can live up there and date cooler city guys who don't work at Google, etc.

As a programmer, it's entered into the boring zone where even the guy who invented python is working on projects like the internal source control system. You have to sit in a cube with three other dudes, deal with other dudes who fall into three categories: total greasy glasses bleeding zit autistics, stanford jocks, and dumb-ass VP millionaire dudes who wrote "dodge ball" or "blogger"  when they were drunk and now are running the "mobile services" department. None of the women there will speak to you, aside to tell you to do stuff (they are your manager) because they are all banging cooler artist/musician/surfer/stock trader guys who live up in the city.

Good luck, though. Follow your dreams.
Antony on 11/30/2006 9:48 AM BTW, before you decide to take the job, do some research on the housing situation. If they're paying less than $120k, it may not be worth it.
Mike on 11/30/2006 12:06 PM Google always was monocultural. I remember when they were still in downtown Palo Alto and only hiring CS grads from Stanford. That's about as monocultural as one can get. One interesting thing I noticed is even they are getting bit by the Java School bug. Last time I looked, they were still looking to hire people to teach C++.

It seems to me they were always trying to hire the best CS grads from the best schools, but not necessarily the best programmers, and certainly not senior programmers. That’s changing, which is a good thing, IMO.
Paul on 11/30/2006 2:24 PM Not trying to be a smartass here, but "they" always tell you (us) that interviewing is for both parties, the company to see if they want you, and for you to see if you want to work at that company. Did you not think to ask them why they were asking you all these puzzle questions? Or ask someone how they planned on utilizing your skills, since they weren't asking you about them in the interview?

Is it too late to call the manager you'd be working with and bring up your concerns? Especially now that you've been offered the job, contact them and say "The interview didn't seem to really cover the job itself or how my skills might be used there at Google. Before I make a decision, can we discuss that part of my employment there?"

Of course, advice like this is "do as I say, not as I do", because I'd likely not think to do it myself, and would likely chicken out if it were brought up to me to do. Smile
Morgan on 11/30/2006 4:42 PM > FWIW, this does not match my experience.

Every group will be different and every interview within the group will be different depending on who is in it that day. I don't think there's such a thing as a standard interview at a company.
Lombard on 11/30/2006 7:00 PM how long does it take for google to repond to a submitted resume?
Kelvin on 11/30/2006 9:18 PM These people aren't interesting?

http://en.wikipedia.org/wiki/Category:Google_employees

All but a few still work there BTW.
Austin on 11/30/2006 11:36 PM "Now that I got the job offer.  What the heck should I do?"

The amount of time alloted to your questions is troubling.

Tell HR that you are unsure at this point (say that you didn't get a good feel for the company and particular position from the interview) and would like the opportunity to speak with the team lead on the phone again.  Be firm on this point -- the HR recruiter at this point is trying to close a candidate, and won't be happy bringing tech staff back in the hiring loop.

Ask the team lead about the topics you mention in the OP in the guise of learning more about the work environment.  For example, "Describe the lifecycle of a bugfix to production code."  If the answers don't match your expectations, you need to consider if you are a fit to that organization.  Ask for specifics -- not "Do you use source control," but, "Explain your branch management strategy."

Now that they have expressed an interest, make them sell the position.  Doing so also usually creates extra leverage on compensation.
Antony on 12/1/2006 1:54 AM FWIW, this does not match my experience.
I was asked questions about algorithm complexity, multithreading, locks - mostly related to what they could find in my résumé. And I was under the impression that my interviewers knew what they were talking about.
Granted, that was more than one year ago.
Marcus on 12/1/2006 4:12 AM > 2) You're likely to find some interesting people there, and it's usually fun to work with interesting people.

I don't think this is true anymore. The interesting people already left or are leaving soon.
Jacob on 12/1/2006 6:30 AM >> Now that I got the job offer.  What the heck should I do? <<

I would accept the job, for 2 reasons:

1) Having Google on your CV is a BIG plus, wherever you go next. For example, if I saw Google on a candidate's CV, it's an automatic in-person interview.
2) You're likely to find some interesting people there, and it's usually fun to work with interesting people.
Enoch on 12/1/2006 8:48 AM Contractor:

"@OP: How much money did they offer you?"

Not better than other offers.


hoser:

"They only asked me algorithms - all of them. Heap sort, merge sort, qsort, B+ tree optimization and some optimized random deck of cards thing. Gads."

That confirms the overall trend in the type of questions.  It just shows how little the people in Google know and how lack of experience they are.  You ask what you know or comfortable with.
Driscoll on 12/1/2006 11:06 AM "Personally I like to have a job that I can plug at least 50-60 hours of work a week into, and enjoy interesting challenges"

Lemme guess: no wife & kids yet?
Barrett on 12/1/2006 1:24 PM Thanks for relating your experience. Google now sounds like just about every game studio/consumer shrinkwrap/we-think-we're-cool software house out there!
Lloyd on 12/1/2006 3:42 PM "What this means is that working there is EASY. "

How many good developers actually want work that is 'EASY' though? It sounds nice to have a cushy job. The reality is that it is dead boring.

Personally I like to have a job that I can plug at least 50-60 hours of work a week into, and enjoy interesting challenges. It's far more satisfying than milking some position where one gets paid to sit around doing little or nothing.
Farrell on 12/1/2006 6:00 PM I think this is the debate, almost like conservatives and liberals.  Some hire those smart graduates that are expert chess player and can do all kinds of puzzles in their heads write millions of lines of haskell code.  Some want those with more practical skills that can build enterprise systems

I think they are two complete separate campaafas and probably most companies will benefit from both types.

My question for google; you hired the python developer Guido and the Firefox guy and did some other buyouts.  These guys are working on practical things.  I wonder if they had to go through all the puzzles?  I bet they didnt?
Bartholomew on 12/1/2006 8:18 PM They only asked me algorithms - all of them. Heap sort, merge sort, qsort, B+ tree optimization and some optimized random deck of cards thing. Gads.
Adam on 12/1/2006 10:36 PM "If you're senior, really senior, not just as in title, "... you're not posting on JoS.
Jeremiah on 12/2/2006 12:54 AM the "mono-culture" thing is bad...its like living/.working in an institution; except you have to pretend your continually drinking the kool-aid all the time. If you're senior, really senior, not just as in title, this will be a struggle.
Dillon on 12/2/2006 3:12 AM "About the 20% doing your own stuff. I wonder how many people spend that 20% surfing the internet? Are you required to show that you produce during your 20% time?"

I understood their point was to spend the 20% doing something you were interested in, the possibility being that it might one day benefit the company.  Of course they have you report on what you're doing; the purpose isn't to let you spend 20% of your time goofing off.
Claude on 12/2/2006 5:30 AM How much money did they offer you?

You missed out on the get rich period of working for google. The google stock is very high. I would recommend excersing and selling half of at as soon as you can to diversify it.

BTW, it sounds like you really know what you are doing. Senior Level rates are once again in the $90-100/hour range. You should look into that. However, you have to tell contractors you want that much in order to actually get it offered.

About the 20% doing your own stuff. I wonder how many people spend that 20% surfing the internet? Are you required to show that you produce during your 20% time?

To the person who works for google... Are you saying that google is now a 40 hour/week job or are there more demands on you?
Chandler on 12/2/2006 7:48 AM If I was hiring new grads, I'd like to see some of the the code they've written (for school or not) that they are most proud of. I'd like to see if they can communicate well to me what their code does, look at the techniques they've used, see if that've used good use of object orientation, see if they've done some clever optimisation, threads and so on.


I think, like developers, artists can be brilliant, but there's only so much training you can do and people peak out at how good a developer or artist they are.

Puzzles and pointers may be a good indicator of aptitude; likewise you can tell someone can paint by the way he holds a paintbrush.

People seem to hire for software engineer/developers without looking at big pieces of work they've done.

Would you hire an artist without seeing their best works?
Blaine on 12/2/2006 10:06 AM Very useful and interesting post.  I have a second phone screen with Google coming up, so I might get some of those types of questions.

I haven't actually been there on-site yet.  I think the individual interviewer comes up with questions to ask, so it depends on who you talk to.  The guy I talked with asked me a series of analysis questions related to data structures, searching and sorting.

"the only other game out there is working on your own stuff or being employee number 2 at some hot startup, so if you aren't gonna do those things, it might be a nice, easy paid vacation for a while."

For the reasons you cited I think it might be my dream job.  Besides the fact that they do some pretty cool things, I am looking in the long-term for a somewhat stable company, diverse workforce, excellent pay and benefits, and the resources of a large company.

If the OP's point is that the company is getting somewhat "dumbed down" due to its growth, it doesn't bother me.  Any big company will have that problem.
Drew on 12/2/2006 12:24 PM A number of my friends work there. If it pays much more than your current position and working there wouldn't interfere with your lifestyle too much, you may want to consider it.

Why? Because right now Google is actually a GREAT place to work for experienced engineers, because it is in the transition process from being a good company to a lame company.

What this means is that working there is EASY. The people I know who work there put in 40 hours max, and get paid about $110K, plus google stock that is actually worth something, and all the lame google benefits, if you are into that sort of thing. also, the whole 20% time thing, so they aren't really even working 40 hours a week.

the only other game out there is working on your own stuff or being employee number 2 at some hot startup, so if you aren't gonna do those things, it might be a nice, easy paid vacation for a while.

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading