
My Google Interview - cletus
http://www.cforcoding.com/2010/07/my-google-interview.html
======
etherael
I had an interview for a systems administrative position way back when that
was my primary gig, admittedly this was in the twilight after ten years of
experience and I had already mostly gotten sick of systems administration and
was deeply into coding so maybe I was just too jaded, but the single question
I recall that they asked me I actually found so stupid it was insulting;

What's the default bytes per block in random linux distribution x version y
when using filesystem z?

My response;

I'd google it.

Perhaps this is unique to the Australian branch of Google or something but I
get the impression that they're much more into the whole meaningless rote
memorisation of facts than is often let on.

I had a contact from another Google HR person a couple months back in Estonia,
this time for a development position. I can't say I wasn't tempted but this
time I turned them down flat.

~~~
Caligula
I think if I was in your situation and got that type of question I would have
said 'id bing it'

~~~
cletus
Joel Spolsky gave a Google Tech Talk about Stackoverflow. At one point someone
asked him about something he said. He had to look it up. He opened up IE and
did a search on live.com (pre-bing). It got a good laugh.

~~~
joubert
Plus, doesn't stacckoverflow run on the microsoft stack?

~~~
subbu
Yes it is: [http://blog.stackoverflow.com/2008/09/what-was-stack-
overflo...](http://blog.stackoverflow.com/2008/09/what-was-stack-overflow-
built-with/)

------
endlessvoid94
The lack of feedback is crippling. I interviewed at a similar company and I
thought the interview went GREAT. I'm usually a great judge of whether or not
someone likes me, I pay attention that kind of thing, I got all the answers to
their satisfaction while explaining, in detail and concisely, my thought
process.

Didn't get the job. I didn't make one mistake and I thought they liked me. I
have zero clues as to why. I'm not really upset about it, it was just a very
frustrating experience.

All the more reason to do your own thing :-)

~~~
nihilocrat
This is pretty much why I hate the idea of applying for a job. Supposing I get
the interview, based on my past experience there's at least a 80% chance I
won't get the job. I never got feedback for any of my "no hires" so I just
have to assume they will all turn out that way.

The lack of feedback makes me just assume every interview is a crapshoot and
there's nothing I can do to try and improve.

~~~
russell
As a consultant, I got to do lots of interviews. I found that questions and
programming problems go in fads or cycles. I often get the same programming
problem at more than one company. After an interview, I go over the problems
to see if I can tighten up the code, or to see what the nut is. If I am weak
or unsure about one of my answers, I immediately go over the literature to
understand the domain. The same question is sure to come up again. A couple of
years ago it was the new java concurrency. This yea, not a single question
about Java concurrency. But I did get FizzBuzz. :-)

------
danbmil99
TL; DR: Google's recruitment process is opaque and arguably leads to many
false negatives. True 3 years ago and apparently still true.

I suspect they would argue the impact of false positives (hired but don't work
out) greatly outweighs the loss of false negatives (potentially great
employees that can't pass through the filter). This may be true for the one
company everyone and their dog wants to work for, but I wouldn't apply this
kind of process to my startup.

It also feels like it might result in a surfeit of homogeneity. Genetic
diversity is important; if everyone is a clone, all it takes is one pathogen
to wipe out the population.

~~~
btmorex
In my opinion, the biggest problem with the google-style interview (other
companies do the same thing) is that you can practice and get better at it. In
fact, you can probably improve how well you do so much that even a mediocre
developer can come out looking very good.

So why is that bad? Well, for one thing, the questions asked usually aren't
directly to being good at your job. Consider the classic "How can you detect
loops in a singly-linked list without modifying nodes / keeping accounting
information around?" Very, very few people are going to come up with the
correct answer to that question without having seen it before especially in a
high pressure interview environment. Yet people ask it all the time in
interviews. Why? You're just selecting for people who have had to interview a
lot (got rejected a lot).

A newer style of interview that I quite like is to ask someone to write a
moderate chunk of code with a laptop, access to the internet, and a few hours.
At least you're measuring something that's directly related to software
development.

~~~
_Lemon_
> In my opinion, the biggest problem with the google-style interview (other
> companies do the same thing) is that you can practice and get better at it.
> In fact, you can probably improve how well you do so much that even a
> mediocre developer can come out looking very good.

While this is true, isn't quite unlikely? Why not just invest the time into
becoming a /good/ developer.

>"How can you detect loops in a singly-linked list without modifying nodes /
keeping accounting information around?"

What do you mean by "accounting" information?

In the real-world I'd probably just brute-force it and keep around a set of
elements already gone over. However I couldn't imagine ever having a need for
that as I'd (and hopefully anyone I was working with) stick to the standard
push_back functions available or that I created. So it shouldn't come about...

I feel I've missed something here, so care to elaborate on the answer?

~~~
btilly
_> "How can you detect loops in a singly-linked list without modifying nodes /
keeping accounting information around?"

What do you mean by "accounting" information?_

The usual way to state this problem is, "How can you detect loops in a singly-
linked list without modifying nodes and using O(1) data."

The answer is that you start with 2 pointers to the beginning of the list.
Then follow the pattern of advancing the first twice, and the second one once.
You have your answer when the first reaches the end, or the first and second
point at the same spot.

There are a lot of problems with a trick like that. And it is true that if
you've seen the problem before, you're going to be at an advantage. So
practice a few of them to get use to the form. But there are _enough_ such
problems out there that it is significantly easier to become a good developer
than to learn a broad enough selection of them to have a good chance of
getting through a set of interviews off of memory.

------
cousin_it
I seem to always fail spoken interviews, but easily pass ones where I get to
write code. As a particularly hilarious example, this spring I completely
failed a phone-screen on the subject of 3D graphics, then sometime later I
released a 3D terrain engine that is apparently the best of its kind in Flash
as of today (<http://news.ycombinator.com/item?id=1500338>). And I can't say I
know much more about the subject now! I just tend to learn stuff
"situationally" and immediately forget it when the problem is solved. That
applies to concepts too, but it's like 100x worse for APIs: my work nowadays
is mostly ActionScript and JavaScript, but I can't even fill a polygon in AS
without having the reference open.

~~~
cyunker
I'm the same way. If I'm not currently working in the specific area I'm given
a question in, it can take me a few minutes to access that information in my
head. And therefore, I look like I don't know the answer.

I recently was in an interview for an iPhone dev job. I was prepared to talk
about Objective-C/Apple SDK since I was working with that. However, they
started digging into projects I had done at my last job (in Java). I
struggled. I just hadn't thought about that work for a few years, and probably
came off like I was embellishing my resume. After the interview, once I caught
my breath and thought about it, all the details started coming back. Needless
to say I was kicking myself for not being able to recall it sooner.

Just the way my mind works....

------
gruseom
Clearly, many of us agree that this process is broken; not specifically at
Google, but broken more or less everywhere. So fine, what would you do
differently? I hate everything about job interviews, on both sides of the
transaction: I don't want to ever job-interview or be job-interviewed again.
So let's hear some radical ideas about how else to approach the problem. The
crazier the better.

~~~
csl
I think ITA's job _screening_ process is quite nice: Post an interesting
puzzle and ask anyone to submit answers. Spend as much time on it as you wish.

Their puzzle archive:
[http://www.itasoftware.com/careers/puzzle_archive.html?catid...](http://www.itasoftware.com/careers/puzzle_archive.html?catid=39)

~~~
nostrademons
Google used to do that - if you remember their "Great people needed" campaign
from 2002-2005, they did fun stuff like putting coding problems on billboards
that solved to the phone number you had to call to submit to apply, or the
"Google Labs Aptitude Test" that was basically a parody of standardized
testing.

I think the reason they don't anymore is that they're a household name. They
get tons of applications without any clever tricks. In some ways, I think this
is too bad, because it attracts applicants who (in JWZ's words) "want to work
for a successful company instead of working to make a company successful." But
there's really no way to turn back the clock and make Google hip & unknown
anymore.

~~~
hugh3
My personal favourite questions from that quiz were:

* How many ways are there of painting the sides of a cube using four different colors?

* Which colors would you choose?

------
gcheong
If I have an interview scheduled to go through lunch hours and the company
does not offer me lunch, that makes a very bad impression on me. To me it's
part professional courtesy as well as an indication of how well things are
planned. Also, if you are able to lunch with the team, it lets you get to know
each other in a less stressful situation.

~~~
nostrademons
That seemed very weird to me. When I interviewed, it was customary to have a
Googler who was _not_ an interviewer take you to lunch at one of the cafes. If
you were a referral, it's usually your referrer; if you know someone at
Google, they try to match you up with that person. It's your chance to ask
questions of an employee in an informal setting, where they won't be making a
report back to the hiring committee. And I know they still do it, because I
was the lunch interview for a friend of mine that just applied a month or so
ago.

The only thing I can think of is maybe they couldn't find interviewers for the
normal time slots, and so they had to schedule one at lunch as well. Qualified
interviewers are often a scarce resource at Google, mostly because of people
like me who never sign up for it, and they try to avoid assigning more than
two interviews/week/person to avoid burnout and let them still get actual work
done. It may've been a choice between "schedule one during lunch" or "wait
another week until a different interviewer is free".

------
tmsh
The key, I think, to hacking most interviews is to take into account the fact
that most interviewers overoptimize for their own contribution to the process;
i.e., you want to put yourself on a path where the interviewers have some sort
of insight into why you're valuable.

This can be the traditional: wow, this person has mastered all these fields
very well. But it can equally be: wow, this person did extraordinary things
with this thing that I've heard good things about; or, wow: I could totally
use a person like that on my team -- I think culturally this type of person is
valuable; etc.

Basically, you want to figure out the selection of likely thoughts the
interviewer will have about you -- choose the set of most optimal, most
distance-traversing in their mind (some of which ideally differentiate you for
your peers), and give them some excuse to figure those out.

It's, sadly, not completely unrelated to PUA, as our minds are trained to seek
and, with cognitive dissonance, to esteem the general direction of what we've
verified before.

Fwiw, same pattern as setting traps in poker. Though hopefully you're not
being duplicitous, but rather smoothing out an already error-laden,
discontinuous situation.

------
brown9-2
_But everyone knew C++. I’ve read about this before. This combined with my own
experience now leads me to believe that C++ isn’t optional for any Google
applicant. Not because you need to use it to work there. I have no direct
experience of this. But because of “interviewer lottery”. Some at Google (it
seems) do nothing but C++. You might be interviewed by one of these people._

Not true one bit. I don't know a lick of C++ and never encountered it in my
interviews there.

In fact, the questions I was asked there could have been easily answered in
any language, as they were language-neutral and heavily on the side of pure
algorithms.

Your experience may have been thrown off by having C++ on your resume,
assuming you do.

~~~
jacoblyles
I had an on-campus interview where they were processing a lot of people
quickly. C++ was non-optional. Of course, I have little C++ experience. I
would suggest anyone seeking a job at google know C++.

~~~
drcobg
Google doesn't do interviews the way you describe. Why are you making shit up?

------
csomar
I don't know Cletus, I just noticed his profile somehow in StackOverFlow.
However, as a brilliant StackOverFlow member with over 100K of points and 3K
answers, I really wonder if he is not above the average developer.

Only experienced developers can contribute and answer question in
Stackoverflow. Questions are generally hard and random.

So if Google hires only from the top 10% (say in Australia); isn't this a
critical fail in the hiring process? (considering cletus with ranking 4 in
sof, I can safely say he's among the top 1% or 0.5%)

~~~
jackowayed
I don't think you can "safely say" that he's among the top 1% of developers
based purely on his StackOverflow profile, regardless of how impressive it is.

The only way you can really "safely say" that someone is within the top 1%
(That's a pretty elite group. That's like saying "I can safely say he'll get
into Harvard.") is if you've seen a significant amount of their actual code
(working with them, OSS, etc) and been consistently amazed.

~~~
cletus
The "top 1%" is such a great phenomenon. I remember in the 2000 election the
top 1% of earners were daemonized by then VP Gore. In a survey some 20% of
people thought they were in the top 1% and another 19% aspired to be.

And that's with something easily quantifiable. How exactly do you quantify the
percentile of a programmer?

FWIW I make no such claim about being the top 1% nor do I claim SO ranking
translates to the nebulous concept of a programmer's ranking. If anything, SO
reputation is a function of time more than anything else. It's also an
indicator of persistence but only a positive indicator (meaning lack of a SO
ranking obviously doesn't mean a lack of persistence).

~~~
waqf
> the top 1% of earners were daemonized by then VP Gore

He set them to run in the background and wake up periodically?

------
enneff
"But the process does seem to be a lottery to some extent."

They go to great lengths to ensure this is not the case. If the feedback from
five different interviewers led to a 'no hire' decision, the chances are good
that it was the right decision. Of course, no system is perfect. They tend to
err on the side of exclusivity; it's much cheaper to decline a suitable
candidate than it is to hire someone who won't work out in the long term.

~~~
cletus
> They go to great lengths to ensure this is not the case.

That may well be the case and I can't dispute the conclusion because I am
unaware of the position. Were they looking for a hardcore C++ programmer?
That's not me.

This goes to my observation that feedback is important. I've applied for
positions that were slim chances before but I knew they were slim going in so
I could set my expectations accordingly.

As for the lottery part, 2/5 didn't know my primary language. That seems open
to interpretation.

~~~
danbmil99
They won't give you feedback for the same reason they don't disclose their
search algorithms: information about their process can be used to game the
process.

I see the same behavior with VC's -- no usable feedback. It's like in poker --
there's no game-theoretic advantage to show your cards if everyone else folds.

~~~
barrkel
It's also arrogant not to even let someone know what the specific position
involves. It's a solid reason not to interview with Google if you're not going
in there on the basis of contacts.

~~~
btilly
The reason for that is that at the time of the interview there are usually
many different positions you could wind up being slotted into.

In many cases this is still true at the time of the hire.

In a few cases this is still true at the time the person starts on the job.

------
codexon
Interesting how they are scouting stackoverflow profiles for potential hires.
I suppose it takes more than 10k reputation (talking about my own profile of
course).

The part about being denied because he was Microsoft-centric and yet Jon Skeet
was accepted was quite amusing.

~~~
bnoordhuis
I was approached by Google recently for an SRE position. I'm not sure where
they found my contact information but I don't have accounts with any of the
major geek sites - or much of an internet presence at all, really.

The recruiter was a tad vague about it but if I were to venture a guess, I'd
say Google scans the high-profile OSS projects and associated mailing lists.
That's about the only place they could have found me.

------
kno
When rejection occurs after an interview, I generally try to my best to
identify what I did wrong and prepare to the next interview.

My advice don’t feel disappointed if you don’t get the OK there are many
reasons why someone get rejected, most of them not necessary skill based; so
JUST MOVE ON.

------
heresy
We're currently going through a hiring cycle, and while admittedly, there's a
lot of people applying, I get annoyed by some of our guys doing interviews
removing people from consideration for things that simply do not matter.

I would likely have failed our own interview processes, yet I was one of the
guys let know I was indispensable and not to worry about my job security by
upper management when we were going through layoffs in the middle of the
financial crisis, going so far as to offer me a raise in the middle of it.

The post-interview review of candidates needs to be:

(1) Are they smart?

(2) Do they practice self-improvement? A given if (1).

(3) Can we work with them?

But not many people have the balls to take a chance on someone from the left
field, so they'll settle for the mediocre plodder who has learned how to game
the interview process.

------
yason
Why don't companies just hire people after a quick discussion at 50% salary
for the maximum of four months and see how they do.

If, after four months, the people turn out to be "smart and get things done"
and the company wants to keep them, they'd get the missing 50% from the first
four months as a one-time bonus and 100% salary afterwards.

It costs something but it also costs a lot of time and money for both parties
to engage into this mutual guesswork game called job interviewing. It might
even cost everyone less as I bet many candidatepeople would have to be fired
after only a few weeks or days.

~~~
kaens
_Why don't companies just hire people after a quick discussion at 50% salary
for the maximum of four months and see how they do._

Having an incompetent (or malicious even) developer on your team for four
months is likely to cost your company much more than 50% of their salary for
four months.

~~~
yason
My point was that this is what happens in the practice: you just won't know
until you know, so why not make it that way upfront and not spend lots of
effort trying to select the best candidate when you could, based on a much
more loose criteria, select the best dozen and see who's really good.

I wasn't envisioning a sweatshop: if the company tried to extract everything
out of cheap hires for four months, the company itself would lose. And there
are these leeching companies anyway, working within conventional hiring
practices as well. I had a good company in mind, one that really needs good
programmers and not cheap minions.

An incompetent or malicious developer wouldn't really last four months, not
probably four days. The projected four months was the final threshold after
which most programmers can tell whether the candidate is really worth hiring.

Having new semi-hires around might certainly add up to the team overhead but
on the other hand, that's what happens with conventional hires, too. Lots of
teaching, tutoring, and support and things might still get crossed in the
first few months. Plus the whole process of interviewing and that some hires
quit or get fired within months.

So, to reply to your comment: having a batch of new hires, some incompetent
and some possibly stellar, and few weeks to sort out the final candidates and
few months to seal the deal, might not cost as much as you're afraid. Even a
single new hire (carefully selected by HR, phone interviews, face-to-face
interviews, and all) can eat up surprisingly lot of the team's time. Further,
like hires in general, you don't want to be doing this _all the time_ , just
once a year or when you really, really need more programmers.

~~~
starkfist
The issue with this approach is that it doesn't weed out the mediocre. This is
why big companies fire people by re-organization. You run into legal problems
if you are firing people who are competent, but not excellent. So you round
them up into another business unit and then drop the whole unit. I assume you
would run into the same legal issues with the proposed 4 month trial period.
If the person does a solid, but not great job and you let them go, you are
opening yourself up to being sued.

------
bosch
I agree with the fact that not getting any feedback (good or bad) hurts people
in the long run. Having feedback and either improving in those areas or
adjusting how you approach them would help people and if you don't know their
an issue how can you improve them?

I've sent previous interviewing managers questions asking what I can improve
when I didn't get a job this year, and none of them returned my e-mail. Very
frustrating, especially if you're someone who would like to improve themself!

------
bosch
Playing Devil's Advocate:

Has anyone ever thought they randomly fail someone who might pass just to keep
all future applicants on their toes?

~~~
rbanffy
That would assume communication between job applicants. In general, job searh
is conducted in secret. When I wa interviewing, nobody but my family and
closest friends knew I was doing. I wouldn't appreciate if a candidate kept
talking about our hiring processes. Even because they change, vary according
to the position and are explained early in the process to the candidate by the
HR folks who conduct the first steps.

I have nothing to say about Google's process, with the exception being that I
was interviewed by a guy whose research paper I read, something that didn't
really surprise me.

------
known
Interview != Quiz

------
mkramlich
Part of the problem that bit him, I think, is that the traditional
interviewing/hiring process is fundamentally flawed and handicapped.

Superficial elements have way too large of an impact. it filters out things
that should not be filtered out. and way too big of a judgement is made too
early, and on too little information, and with too little confidence in the
correctness of that judgment. resumes are demanded and then either not read or
not remembered. small comments can be magnified in the mind of the listener
and used to conclude things that cannot possibly be concluded. ridiculous
questions are asked. and lastly, there's very often too much of an attitude
that the company/interviewer is in the superior/owner position and the
applicant in the subservient/inferior/slave situation (perhaps carried over
from blue collar industry) when in reality it should probably be considered an
exchange of equals.

~~~
gruseom
_the company/interviewer is in the superior/owner position and the applicant
in the subservient/inferior/slave situation (perhaps carried over from blue
collar industry)_

Agree 100%. It's a kinder-gentler master-slave dynamic. That's part of why
it's so fucked. So what's the alternative? Let's figure something out.

