google does not use "brainteasers" and in fact has a specific policy against that kind of question. they ask substantive technical questions that often involving coding on the whiteboard.
I applied for a developer job at Google once and eventually had two phone interviews.
I was asked to come up with a sorting algorithm that would run on 4 computers with more data than could fit on any one computer. I was then asked to do a complexity analysis on my algorithm.
The only thing I think that really tested was how long it had been since I took an algorithms course in college.
I had a similar one. Actually interviewing for a management position with no coding involved. The worst part was that a lot of the questions were imprecise and/or I could tell he expected an answer to a different question that "normal people" would look up rather than remember by rote.
One question that annoyed me in particular was "what is stored in an inode?". First problem: Lots of file systems don't have inodes, and those that do store different information in them. Ok, explained that and asked for clarification. He wants the inodes in UFS. I told him I have no idea - I've never had any reason to look into the on-disk structure of UFS. Why would I? BSD is specifically not on my resume, though I've used it now and again. I offered up the description of ext2fs instead, since I happen to roughly remember that, and talked around differences with other filesystems. But he was clearly not happy.
This was one of a series of similar
The recruiter was annoyed to no end, and managed to get the interview result thrown out, but by then I'd gotten so annoyed about the whole process (which had dragged out for weeks) that I just wasn't interested any more.
Sorry, but that's a reasonable question for assessing a particular type of skill. That you seem to think they're looking for you to remember some particular parallel sorting algorithm from college tells me that this probably isn't your strongest skill. That doesn't mean you're a bad programmer.
It's been seven years since I've taken an algorithm course, but I have a generic (assuming nothing about the input data other than it doesn't fit in a single machine's main memory and is uniformly distributed) solution in my head as well as a complexity time for it.
That said, I work on distributed systems for a living and have actually had to do similar things (manipulate data sets larger than a single machine's main memory across a cluster of machines).
On the other hand, that's not a skill 37signals needs. It's insane to think that Google, 37signals, and a random startup could and should use the same interview process.
I used to work at Google. When I interviewed I was rusty on algorithms, so I studied up on them, even delaying my on-site interview to have more time to get ready. Sure enough they asked algorithms questions and I did better on them thanks to my studying. So I think it's also testing whether, given strong evidence on what would be helpful preparation, you choose to do that preparation. (Obligatory Paul Graham essay reference - "If college applicants realized how quick and impersonal most selection processes are, they'd make more effort to sell themselves" [0])
A problem with that is that they assume they're the most attractive option. They might be to some, but I think that pool of people is dwindling. It took five attempts from different Google recruiters before one managed to "sell" Google sufficiently for me to be willing to do a phone interview.
Then I was given interview questions of a type that nobody else would give for a position at the level I interviewed for, and I quickly lost interest again as to me the interview questions advertised a lack of understanding of the skills required for the position, or a fundamental disagreement about how technical management should be carried out.
And pleading from the recruiter was not sufficient to get me to do another interview (after she got the result of the initial interview thrown out because she agreed with my assessment). The last recruiter I dealt with was good, but the impression I got of the interview process put me off for a long time.
It took several months, and in that time they'd still not been able to find anyone else. I've never, ever spent that long on a recruitment process before, and the only reason I bothered was out of curiosity and because I wasn't really looking. If I had been looking, I'd have found and taken another job long before Google would've managed to get their act together.
I make an effort to sell myself for positions I badly want, but Google doesn't seem to be interested in selling itself in the recruitment process whereas most other companies I've interviewed for are, and they certainly isn't even top 10 of list of places I want to work.
But every time I've dealt with Google recruiters, I've had to waste time dragging information out of them that I'd normally expect the recruiter to be eager to present to me.
I'm not going to make an effort if they've not gotten me to really want the job first.
Recruiters I've spoken to all tells me the people they take out of Google are very often disillusioned and thought it would be very different to their actual experience, and that dislodging Google employees have gotten much easier as it's no longer so much the pinnacle of cool places to work in the eyes of a growing number of engineers, so I think that's going to become a bigger and bigger issue for them when hiring.
All fair points. I had one friend who interviewed with about 13 different people at Google before getting an offer, which was totally absurd, and a lot of their friends got a negative impression based on that (soon after they set a cap of about 8 total interviews per candidate). So I can imagine having their interview process do other bad things, like not being forthcoming with information or trying to sell the job.
It's testing how well you can deal with problems that don't fit on a single node -- most problems at Google don't. And if you can't do complexity analysis, you can't scale to very large datasets -- which Google has lots of.
This was a few years ago, but I was given a brain teaser/game where I had to find the differences between two sets of Google doodles. It was supposed to prove I had attention to detail.
If I were applying, I'd still consider this a "brainteaser." It serves the same purpose and is likely equally abstracted from the tasks of the real job.