Developers: What do you consider a 'good' interview question?
I've seen a lot of posts here that are critical of Google's "how many ping pong balls can you fit in the Empire State Building?" type brain teasers (which I agree, are silly), but also the task-related "If you were going to build an app that solves X, where would you start?"
I'm curious: what DO you consider a worthwhile interview question that appropriately surfaces your skills and fit for a position?
17 comments
[ 2.7 ms ] story [ 348 ms ] threadSay you are at a restaurant in the city, and your friend asks how many people are on Facebook at any given moment in the city. How would you answer this without writing any code, on the spot at the restaurant?
We're looking for a more junior level developer. We want to gauge their skills, but don't want to make any questions that are too domain-specific. I like the problems from places like Project Euler or codewars.com, but some coworkers feel they are too difficult. Solving a variation of FizzBuzz, allowing any reasonable language, even pseudo-code, shouldn't be beyond my expectations, right?
I also think it's perfectly okay to say "I don't know off the top of my head, but I can find out" when asked a question. Or alternately, "I don't know off the top of my head, but based on what I know about other things, I would start here..."
Next, he asked me what the first argument to a Django view was. This was a pretty basic question, but if I hadn't known the answer, it would be instantly clear that I didn't have actual experience in Django, and if I did have experience in Django, the question wouldn't seem like trickery.
I like this sort of questioning, because it reminds me of the year I decided to homeschool (in high school). The tests were on the honor system of course (you could easily cheat without a teach sitting right there), so the tests' questions would be about intricate details in a large (30+ pages) text, that you couldn't possibly know without reading every last line. You could try to find the piece of text for each question, but it was quicker to just read the whole text. Guess what. I read 100% of every text book I had (I would have cheated otherwise, and then missed things like The Walden, etc. :)
TL;DR
IMHO, Google's hiring antics are the reason their software is all so terrible, despite having pockets deeper than the abyss. The only reason they're on top of the world is because they're a marketing company. Their software is undeniably bad.
When we interview some database people, we would ask them to whiteboard a database for a fake golf tournament we were having. What this did was force the interviewee to ask questions if they don't know golf (such as how many rounds are played, how many players, how does scoring work...etc) which tells us two things: Can they get info from a customer (internal or external) and how do they do hierarchies in data models.
I usually asked one open question, like "describe a really hard bug you found", and one technical question. The technical questions ranged by candidate, and the sorts of questions others had already asked (most candidates get ~5 interviewers).
The technical questions usually fell into 2 categories:
Algorithms/etc: These should be solvable by the average engineer, but hard to solve optimally. Questions with both brute force and dynamic programming solutions were my favorites. I had a couple of questions where there were O(N^3), O(N^2), O(N*log(N)), and O(N) answers.
System design questions: How would you build ... Google News (I was the TL at one time)? Or I would give them a specific problem, often involving distributed computing. Often candidates would have to come up with alternate solutions when things like speed of light get in the way of the problem requirements. Being able to negotiate problem definition is a great skill in an engineer. Some candidates really just tried to pound the square peg into the round hole for an hour.
I liked one question I had a few months ago. Not verbatim: What do your computer processor and a turing machine have in common?
I think it's highly dependent on the position though. Another one I had was the all permutations of a string using dynamic programming.
Your list of basics that shows something beyond reciting how to do something in a framework will filter out most of your candidates who need a bit more polish.
Beyond that, I suggest asking to see screenshots and Github source code of previous projects.