Really interesting interview questions
Let me put first questions that aim at determining that you have a Computer Science background. It may also be that in some environments they are formally use and also test required skills. I am referring to questions about algorithm complexity and cost or about describing some specific algorithm (well known to new graduates) such as sort or data structure exploration. I like them because it is something I don’t get to reflect upon frequently. In practice, in the jobs I worked on they are seldom used formally.
Then there are the problem solving questions. Some of them are extracted from the vaunted google and microsoft interviews. You can find a few tihomir’s blog. From the ones listed only a handful are actually useful. Many are simply trick questions (like the angle between your watch’s hands at 3:15). Some have this particular quality that they test the creativity and the reasoning of the interviewee. This kind of question is all about the path your reason takes to solve the riddle.
I found two main categories. One is composed of the questions for which it is clear that the interviewer does not expect a precise answer. My personal favourite (which I was asked by Amazon) is “How many piano tuners are there in Seattle ?”. The other is composed of questions for which a definite answer exists but requires a creative jump to find. I found a few interesting ones in books (including the The Olduvai Imperative, a book I highly recommend even if it dates back to 1993). The main difference between the two is that the first one is resistant to publication. Whereas once the answer is published for the second category it becomes useless.
Their strong point is that they enable to evaluate a candidate’s problem solving abilities and the capacity to articulate the solution (as the authors of the Olduvai Imperative point out this is one of the primary activities of software developers). Specifically they require you to use creativity to solve the problem and they require you to organise the result as an articulated solution.
These are the questions we need more of in order to do a serious evaluation of software development candidates. Candidates who give appropriate answers to this kind of questions will be able to adapt to changes in technology and they will foster creativity and innovation in the software you are developing. Well I guess that some recruiters are not looking for that but that certainly is the part that I prefer in my job.