> It's surprising to me how many candidates explain these algorithms' performance as if the hash table was a magic black box that instantly works. Here they've lost the tree for the forest! They know what hash table is, at least at a high level, but forget that it has specific implications.
A lot of advice I've read about interviewing suggests that a candidate should leave answers open and provide room for the interviewer to poll for more info. I'm curious to know if the author goes out of their way to poll about the specifics of the hash table implementation?
In fact, one of my favorite interviews in recent memory was a hash table discussion not unlike the one the author is hoping for. I was happy to find an interviewer whose questions balanced theory with practice and was happy to drive to a solution with them. However, I wouldn't have offered up this analysis without first understanding that this is where the interviewer wanted to drive the discussion. Every good programmer knows that premature optimization is the devil.
The author may instead be trying to raise the point that its up to the discretion of the interviewee to see that the hash table implementation is the critical performance detail. e.g. gotta do open addressing here b/c our hashing function has weird edge cases where it collides all the time and chained hash would bring us closer towards a log(n) traversal on that edge case.
However, in my limited interviewing experience, interview problems such as this are often designed to be open-ended conversation rollers moreso than where implementation specifics like this are able to jump out easily.
In the question I was referring to, I don't care if they can implement a hash table. I just want them to recognize that when they compare using a hash table to other alternatives, that looking up items in a hash table has a performance cost.
I agree it would be sort of silly to ask an open ended question and then hold it against a candidate when they don't talk about something as if they're supposed to read your mind.
The whole "forest = knowing how a hastable works" is interesting! I'm trying to ascertain if the author's forest is a tree. I think there's good and evil in that statement.
Good being that its groovy if you love what you do are curious. Evil in that he could be optimizing the wrong thing.
Does every great software engineer have the inner workings of every data structure committed to memory? (I don't)
I've heard the Singapore civil service, renown for recruiting smart people, have what they call the 'helicopter test'. Specifically they are looking for people who are just as able to converse intelligently flying 1000 feet above a topic as they are skimming the surface and getting into the details, and will specifically test candidates on both perspectives and their ability to fly between the two. Seems well aligned with what you are looking for.
"You’re looking for people who are 1) smart and 2) get things done"
Number 2 is a lot harder to determine than number 1 in my experience. You can determine if someone is a good programmer by having good programmers ask them increasingly challenging programming questions. The hard part is figuring out if they are an effective and productive employee.
the author seems to be in the business of creating fairly simple internet apps, so I'm not sure why his interviews would ever need to deal with the implementation of hash tables...
I agree with the value you place in intelligence and like how you qualify your essay as a discussion, but in perspective, your methods are simply imprecise and as you said, anecdotal.
You humorously contrast your essay to a "randomized clinical trial," but to be matter-of-fact, these trials exist: IQ tests or their politically acceptable stand-in, the SAT.
I guess what I'm asking is this: what's stopping you from requesting something like the SAT even if it's only for curiosity's sake?
It's a weird balance that people are looking for confidence and intelligence at the same time.
Some intelligent people are humble about the subjects they lack expertise in. Doesn't looking for confidence carries a risk of finding people who sound better than they are?
I interview for maturity, discipline, and honesty. My codebase is made to be maintainable by most programmer. I dont include any magic and make sure that it is understandable. But I don't interview for intelligence. Because intelligence without the three factors I look for does not mean a thing.
This is confusion of intelligence and knowledge. I don't know how a hash function works...but that is a reflection of my experience, not my intelligence. I did not study to be a computer scientist...but I sure as hell can optimize your supply chain.
I don't understand what you mean. The author said "Despite his confidence, he couldn't even explain what GDP is, which was essential to his explanation." which seems like a perfectly reasonable complaint. If you are trying to describe a concept to me that I don't know about, I might ask you to explain to me a much more basic idea that you are referring to. If they can't explain the basics then all of the explanation of the original subject matter is wasted.
I wasn't asking the guy an exact formula for GDP, but at least some definition of what it was trying to measure. Aaronc's point below is exactly my concern.
As per appeal to authority, I didn't think I was asseting anything controversial. I doubt you are saying it's better to hire dumb people or just ignore intelligence, so I am confused what you're arguing with here.
[+] [-] mvanveen|13 years ago|reply
A lot of advice I've read about interviewing suggests that a candidate should leave answers open and provide room for the interviewer to poll for more info. I'm curious to know if the author goes out of their way to poll about the specifics of the hash table implementation?
In fact, one of my favorite interviews in recent memory was a hash table discussion not unlike the one the author is hoping for. I was happy to find an interviewer whose questions balanced theory with practice and was happy to drive to a solution with them. However, I wouldn't have offered up this analysis without first understanding that this is where the interviewer wanted to drive the discussion. Every good programmer knows that premature optimization is the devil.
The author may instead be trying to raise the point that its up to the discretion of the interviewee to see that the hash table implementation is the critical performance detail. e.g. gotta do open addressing here b/c our hashing function has weird edge cases where it collides all the time and chained hash would bring us closer towards a log(n) traversal on that edge case.
However, in my limited interviewing experience, interview problems such as this are often designed to be open-ended conversation rollers moreso than where implementation specifics like this are able to jump out easily.
[+] [-] kevin_morrill|13 years ago|reply
I agree it would be sort of silly to ask an open ended question and then hold it against a candidate when they don't talk about something as if they're supposed to read your mind.
[+] [-] junkilo|13 years ago|reply
Good being that its groovy if you love what you do are curious. Evil in that he could be optimizing the wrong thing.
Does every great software engineer have the inner workings of every data structure committed to memory? (I don't)
[+] [-] Kerrick|13 years ago|reply
[+] [-] changdizzle|13 years ago|reply
[+] [-] unknown|13 years ago|reply
[deleted]
[+] [-] technotony|13 years ago|reply
[+] [-] 98709870987|13 years ago|reply
[+] [-] justin|13 years ago|reply
Number 2 is a lot harder to determine than number 1 in my experience. You can determine if someone is a good programmer by having good programmers ask them increasingly challenging programming questions. The hard part is figuring out if they are an effective and productive employee.
[+] [-] bromang|13 years ago|reply
[+] [-] fellytone84|13 years ago|reply
You humorously contrast your essay to a "randomized clinical trial," but to be matter-of-fact, these trials exist: IQ tests or their politically acceptable stand-in, the SAT.
I guess what I'm asking is this: what's stopping you from requesting something like the SAT even if it's only for curiosity's sake?
[+] [-] khitchdee|13 years ago|reply
If asked a question completely outside their domain of expertise, they wouldn't bail on it but instead start trying to find an answer.
[+] [-] thisone|13 years ago|reply
You know, the person who knows nothing about a topic, but will talk for hours on it?
There should never be shame in admitting "I don't know" and then following it up with, "but if faced with that I would..."
[+] [-] entangld|13 years ago|reply
Some intelligent people are humble about the subjects they lack expertise in. Doesn't looking for confidence carries a risk of finding people who sound better than they are?
[+] [-] orangethirty|13 years ago|reply
[+] [-] saosebastiao|13 years ago|reply
[+] [-] martinced|13 years ago|reply
And of course his "appeal to authority" consists in citing an article from the totally and utterly overrated Spolsky...
Dismissed.
[+] [-] aaronc|13 years ago|reply
[+] [-] kevin_morrill|13 years ago|reply
As per appeal to authority, I didn't think I was asseting anything controversial. I doubt you are saying it's better to hire dumb people or just ignore intelligence, so I am confused what you're arguing with here.