I will puke if I hear array search interview question again
webapplog.com
webapplog.com
"My primarily fields are Ruby on Rails, NodeJS, JavaScirpt, Backbone, HTML, CSS and of course PHP!"
Now I'm sure your a great guy, but there are a lot of people out there with that exact set, or nearly that exact set, of technologies who can't program. They can take a page and hack it to do what they want, they are 'cooks' not 'chefs.' Did I mention there are a lot of them? And if someone is looking for a programming position, and they see a resume that is full of these platform things, one of the questions they will jot down is "be sure they can actually program" on their to do list for the interview.
Back in the 90's there were a ton of people who put 'web site programmer' on their resume but it meant they had used a copy of Pagemaker, not that they actually knew what the HTML spec had in it, so if you couldn't express it in Pagemaker they couldn't do it. Those interviews would start with things like "style this page using <some HTML or CSS feature>." It was a winnowing question to separate the tool users from the folks who knew what actually happened.
Putting 'node.js' on a resume today in 2012 doesn't provide the same signal. If only because of the hype about node itself. It might be signifying you're an early adopter, but it might also signify you're a serial early adopter, and that you'll jump ship for the next shiny thing.
rails/node/backbone - whatever their strengths are - signal something about you that might not be what you think you're signalling. And yes, it also says something about people like me who read something like that in to a resume with those technologies on it.
similarly:
Developer is using Platform B. Platform B is not well-known. Therefore developer is passionate?
right.
Doesn't mean I don't want someone to grow and adopt new ideas, but I see a lot of people adopting and promoting new tool X, then 6-12 months later, they've abandoned it (but the previous projects they worked on are effectively lumbered with it for a long time afterwards).
I'm probably exposed to this crowd a bit more by dint of going to local and regional meetups and conferences and such.
But...
"Developer is using platform A. Platform A is generating buzz/hype. Therefore, developer is too susceptible to buzz/hype?"
If platform A is less than a year old, and developer A is promoting it for production use to everyone they talk to, then yes, I say they may be a bit susceptible to hype (and I've been there myself).
entirely wrong. if a candidate doesn't understand the difference between a linked list and a random access array, the difference between a hashmap and a b-tree, there's a good chance they're going to be making some pretty fundamental mistakes.
O(n^2) is still bad, no matter how much modern CPU and memory you throw at a problem.
The details will vary by interviewer and by role, but the basic idea is the same: if you are incapable of doing this, nothing you say in other interview portions will fool me into thinking we can hire you.
See http://www.codinghorror.com/blog/2007/02/why-cant-programmer...
I don't see what the problem is with just memorizing the answers to these boilerplate questions. That way, you can be proactive about your response when asked. You can even just use your knowledge of the question to anticipate and disarm the interviewer's boring whiteboard exercise. But I guess being plaintive and edgy is as good a method as any to get to the front page of HN, right?
I hate this, and have run afoul of it multiple times[1] over the past few years. I once had an East Coast company decide I didn't "know Unix" because I couldn't regurgitate the POSIX API over the phone.
[1] My focus has always been on East Coast/Midwest companies
True story, i know a guy who was denied a job at FB after an interview, a few months later they ended up giving him a few hundred thousand after they acquired the small company he ended up working for. He now works for FB.
Interviews are poor indicators of performance.
Enough people who can't code apply for software development jobs that asking a simple thing like "Write a sort function" is a good filter. Why waste 10 minutes on a better question when he can eliminate 50% of the applicants in 2? The interviewer doesn't think you're dumb and he's not trying to snub you - it's just how interview questions work.
If you're such an amazing developer you shouldn't have a hard time writing a sort function. Spend the 30 seconds to write the sort routine and get over it.
Second, these are not hard questions. Bubble sort should be a slam dunk.
A few years back, we used a quiz that had the same divisive effects as fizzbuzz does today:
"Write, in your favorite language, a bit of code to reverse the bits in a word." This led to an astonishing fail rate amongst applicants that claimed to have a list of technologies on their resume.
About a month ago I wrote a merge sort routine in JavaScript where the comparison function is a person. There is no library function for this, because the response is asynchronous.
> There is always a function for that in a high-level languages like Ruby (index), JavaScript (indexOf) or Python (index).
These functions don't do what your interviewers asked. Python's index won't give you duplicates, and it's at least equally non-trivial to use JavaScript's indexOf with two arguments in a loop as it is to use a hash, and the algorithmic complexity of the former is much worse, so why would you do it?
> Another sad thing, which I gladly didn’t see that much (but there still were a few interviewers) in the Bay Area compared to the East Coast, is asking terms, function names, definitions, slang, etc. Expecting people to remember functions’ syntax is a sin in itself!
On this point, I agree.
"Stupid" interview questions exist for a reason. They filter out a lot of people.
Anecdotally, I took CS I/II last year and still it would (probably) take me 5-10 minutes to remember how to reverse a linked list under pressure. I don't think this is a major concern since I never anticipate EVER having to actually reverse a linked list manually.
Interview questions related to finding shortest path, min/mix of whatever, finding x numbers that sum to y etc.. will only tell the interviewer if the candidate has prepared academically for the interview.
In the end, the interviewer will probably end up hiring the wrong person. A person who has done his/her homework but cannot solve the simplest scalability problem.
If these are the only questions being asked in an interview, that is cause for concern. But they are useful for weeding out underqualified candidates.
Not that quizzing people on random pages from TAOCP is a good technique, I'm just pointing out that if you're looking for a series of increasingly complex questions to ask in an interview, searching and sorting is a rich area.
Bubble sort always seemed odd to me, and since I can remember insertion sort, if I ever found myself in the odd position of having to write a sort for a program without any reference materials, I'd just use insertion instead.
It probably depends on the position. As a high-level language developer I don't usually implement my own sorting algorithms. Either I use prebuilt libraries that offload work to low-level, or I use builtins, or I ask the database to sort it for me :)
Give me the Wikipedia article and I could code it in five minutes but I just don't remember the specifics of the algorithm. Does that really make me a bad hire?