Ex-Google hiring committee member about job interviewing
extroverteddeveloper.com
extroverteddeveloper.com
I have prepared well for the interviews every time. I understand the algorithms, the data structures, and can program them on my own time no problem. But the second I'm in an interview setting, I lock up and can't think. I stumble across stupid thoughts (How many bits are in a byte? Oh yea, 8. But what about the 0th bit? What to do?!) and just work myself into a corner. All the while trying to seek approval from the interviewer. After about 2 minutes, I become a wreck and am hopeless.
I also don't consider myself non-social, and deal with coworkers very well. I still don't understand what it is about the technical interview setting that makes me act like this.
I'm no rockstar, but I can honestly claim to be pretty comfortable in technical interviews. I chalk that comfort up to two main things.
1) A mentality that says something like...
"I'm good, I'm solid. Fuck this guy."
The point isn't the specific words, or expressing this outwardly, it's about getting into a mental state of calm confidence, pushing out the anxiety and concerning yourself only with the moment.
2) Talking with and being challenged by smart people on a regular basis. Ideally people who are smarter and/or more knowledgeable than yourself. I expect being the big fish in a small pond generally works against this.
Actually, that seems to be a good mentality to build confidence in general. I've heard (I haven't managed it yet) that the secret to getting girls is to think of offering them the chance to be with you - you aren't trying to "get" the girl, but rather offering your companionship and emotional investment to a suitable girl who's willing to take it. The secret to networking is to offer favors to people in need of them. The secret to negotiation is to offer something of value to the other side and ask for something that they value less in return.
If writing a binary search tree thingamabob isn't relevant to the job they have 10 years experience in, why is the answer to that question so important at the goog?
Why not ask questions that are relevant to the experience the candidate does have ...
EDIT: Sorry, I really should have avoided making a comment at all. Google's hiring practices have been debated here a billion times and I can't really add anything that hasn't been said before.
Google wants people who have a strong understand of CS fundamentals (which includes knowing core data structures). Google also wants people who are good coders (which includes being able to translate an idea into code).
A good coder who knows CS fundamentals should be able to do that. Thus, not knowing how to implement a binary search tree is revealing.
And, really, the question is rarely "implement a binary search tree." It may, however, be to implement a binary search tree which support a getMedian() operation.
While I'm lucky to be way from the corporate world for the last few years, I'm still very interested in practises such as hiring and interviewing.
But my perception of Google interviews is that it's very picky about some areas but leaves huge gaps.
Let me guess, the false positives are the ones that know big-o for all sorting algos but can't implement them.
Or create a "Car" class inheriting from Wheel, Engine and Door
The vast majority of candidate packets I see are well rounded in the interview space (IE don't just test theoretical aspects, but practical stuff as well).
There are occasional ones where one or more interviews is unhelpful or useless.
It would be very odd to see an interview where someone started out by asking about algorithm complexity, rather than "how do i sort this", "code it", "great, how fast does that run", "can it be made faster" or something similar.
I have never seen anything close to the last one.
Most false positives i've seen are culture fit or motivation issues, not technical capability ones.
"Most false positives i've seen are culture fit or motivation issues, not technical capability ones."
Interesting. Well, "everybody wants" to work at Google, but usually the way companies work is opaque to the outside (but then again, it's supposed to be like that usually)
Even though the interview is certainly intended to remove people that may not be a great fit (because of the time it takes, for a start) maybe something could be done in that respect
I've seen it all and some technical people really aren't a fit to certain cultures. Not to mention some work environments are the opposite of Google and bringing people from those environments may be a challenge.
But seriously, interviews are very very subjective and interviewers have very wide latitude to ask anything they want. Individual interviewers pick the questions they'll ask, and everyone has their favorites. I have a friend that has a phone interview question that I probably couldn't answer correctly with an hour and a whiteboard: I just don't get it. So if I got a few more interviewers like that when I applied, I would not be working for Google, even though I'm theoretically "smart enough to work at Google".
Furthermore, you may be really smart, but that may not come out in the interview. If your interviewer asks you "what's two plus two" and you answer "four" and the rest of the interview consists of you making a latte, the interviewer may write "My candidate knocked the question out of the park. I asked him what two plus two was and he got the answer instantly. And then he made me a cup of coffee! Must hire!" When the hiring committee reads this, though, they might not reach the same conclusion: "It's great that he got an easy question and can make coffee, but is that really what we want?" In that case, you didn't mess up the interview at all: Google did.
So anyway, one should not be disheartened if they "fail" a Google interview. Hiring is a fine art and we are constantly learning. Please re-apply if you are interested in the work we do, and always give feedback to your recruiter. It's OK to call your recruiter after the interview and say "I was being hired to work on TCP optimization and they asked me questions about Java dependency injection frameworks, even though I said I've never used Java."
Apparently there's a period before you can apply again (can't remember how long this is, 1 year maybe) but then again feeling like every contact you make goes to /dev/null is not nice.
Thankfully I know better today about what's it like to work at Google and probably won't be applying again (not that I find it bad, but it is not what I want).
From my experience the average quality of engineer at Google is very high. I think it simply indicates a different hiring bar.
From my experience the average google interview requires you to be so deeep into the algo/datastructure space, you should be able to code up the KMP algo off the top of your head. You have to be a topcoder with atleast 1200 rep or equivalent algo & coding skills. Coding speed also matters. You should be able to scribble Floyd warshall.
Why this way? Well that's where google did most of their recruiting from back in the day. Anyone who says they got hired without this are either lying or got lucky in the interview process. Same goes for the new wave of startups in the bay area..facebook/palantir/quora etc.
I was very much into the OS, compiler space in school and that was what I was interested in. Got an offer from msft, amzn but not google. So kids, read up on CLRS & the algorith design manual, solve every problem there & also create your account today on topcoder if you'd like that job at el goog. Any other book that says otherwise is equivalent to Linux programming for dummies or Complete C++ in 21 days.
In other words, if you want to find a good job you need to be good.
The Microsoft representatives have told me to use a short one page resume. The Google representatives instead told me the exact opposite and said for me to put down everything relevant to the position regardless of length.
I now have two resumes, a short one for on the floor career fairs and a multi-page that I submit online.
[Edit grammar]
but seriously, why do i need to remember information about languages or algorithms i don't use daily? my memory is limited and i prefer it to be filled with the most useful information at the time.
This is tangental, but I find this an interesting topic - your memory not limited, at least not the way most people think it is. To be accurate - a body of experiments has failed to turn any evidence for old knowledge preventing formation of new knowledge, or new knowledge pushing out the old.
What prevents formation of new knowledge is time - you could learn A or B, but not both at the same time. What makes us forget piece A is not the piece B committed after A, but absence of repetition of A. If you repeat A every so often, you will remember it equally well regardless of whether you also repeat B or not during the same period.
I get my information from this book, which in turn has references to all of the underling studies: http://www.amazon.com/The-Shallows-Internet-Doing-Brains/dp/...
when fading to the background i envision a bubble forming around certain topics allowing one to use and reference them unconsciously at a macro level, but leaving the micro information hidden.
an example would be when i worked in games and did a ton of 3d math to animate and move objects around the world. at the time i was a gameplay programmer these ideas where at the tip of my fingers. i didn't have to think twice about matix multiplications, dot products, vector projections.
currently i work on ios/android development. i don't use 3d math much when deving any more. if you were to quiz me, i may not be able to implement or use those ideas very easily. a few weeks working with the same topics would bring them back to the forefront.
i learned all the sorting algorithms in college. i could probably implement a couple, but most of them i don't recall immediately or at all since i rarely care about the efficiency of the data i sort these days. i know of their existence, but to a degree that is all. if i were in a position where sorting was important, i would make sure to educate myself to appropriately.
i google almost everything. there are rarely days when i don't google something for work. learning is infinitely fun. i think being able to research a problem and find a solution is as valuable if not more as already knowing the solution.
There are of course multiple drawbacks, but at least this method could help alleviate the problem of false negatives.
Good employees just won't do contract to hire. WHy give up a good job at MSFT or Goldman Sachs where you earn $150,000/year to do contract for hire for a couple of weeks with the chance you'll be out of a job?
The upside is you have a job that pays about the same at a company with about the same "brand name" value, ie working at all 3 is about equivalent.
The down side is you loose your job.
Sadly, it didn't prepare me for the questions about unix filesystem data structures. But I don't think I can blame CLRS for that :)