I’ve only ever interviewed for software jobs as an adult. I usually enjoy the brainteaser-type questions that I get asked in programming job interviews, which is the only time in my professional life that I get to solve those kinds of fun “puzzles.”
A typical question might be: You have two light bulbs and a 15-story building. Every bulb is identical, so they will all break when dropped from above a certain height. Your task is to determine the highest floor that the bulbs can be dropped from without breaking them (and once you drop a bulb and it breaks, of course, you can’t re-use it for your test). If you have two bulbs, what is the fewest number of “drops” you need to determine the answer? (The problem, and the solution, are described in full here.)
More recently, there’s been a trend away from pure brainteasers towards programming-related questions, but the programming questions still rely on creative problem-solving, so they’re in the same spirit as the light bulb riddle.
I think these kinds of problems are fun, and I consider it a benefit of working in software jobs that I usually don’t have to answer clichéd interview questions like “What is your greatest weakness?”
But the odd thing is that these interview questions bear so little resemblance to the kinds of problems that you actually solve on the job. Others have criticized the “light bulb riddle” types of questions because they have exact answers, whereas real-world programming questions are more open-ended and nuanced and a solution that looks right today may have unforeseen consequences a year from now.
But I’m talking about a different issue – that most programming tasks don’t require much problem-solving skill, but mostly rely on memorizing information or knowing where to look it up.
A typical programming task might be: “We need a program to automate the process of opening the web browser, going to this web page, moving the mouse pointer to this button, clicking this button, and verifying that the expected text appears on the next page.” There is no problem-solving here -- every part of this task relies purely on knowledge that has to be memorized, or looked up.
What is the function that opens the browser? How do you detect the x-and-y coordinates of the button? How do you move the mouse pointer there and mimic the action of clicking the button? The most helpful thing to have in this case is some sample code that has solved the problem before.
I’m not complaining overall. Most software jobs pay well, and of course, if the problems you solve end up being much easier than you expect, well, you’re getting more money for less hard work than you anticipated. But it is a bit odd that the interview questions are so much tougher (and more interesting) than the tasks that you have to solve on the job, and I end up going to recreational math and puzzle-solving hangouts just to get the kind of interesting problems that I wish I could get at work.