I have recently had to conduct interviews for developers at my place of work. I am responsible for the tech side of the interview which involves the technical questions and some simple coding.
The interview questions are dependent on the candidate. If the candidate has for instance LINQ on their resumes, I often bring up the question of deferred execution. Most have never heard of the concept but are able to explain it. Others have no idea how LINQ and deferred execution work. In a similar vain I usually move from the simple to the more complex touching on programming questions such as “Whats the difference between an object and a class ?” (numerous get this wrong) to “Give me an example of a design pattern and explain an implementation context ?”
The one area of the interview that I enjoy is the problem solving in the form of a simple code example. My software development manager is very lenient on the coding side of things and allows candidates to use visual studio and Google.
The question that I frequently use in the coding sample is FizzBuzz. If you havent heard of it, it is a simple programming problem to solve that goes like this :
Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”. For any other number, print that number.
In addition to this, I ask the candidate to implement this in asp.net mvc with the generic template. Why? Because if they have asp.net mvc on their resumes, they should be able to create a simple project.
I had a few that struggled to create the project and one that said he never created a new project before. Again they have full internet access. Others could not figure out how to get the output to display on a simple view. I am not completely heartless and ask these candidates to either simply write in notepad or a console application.
In answering the question though, I have had mixed results. I had a candidate solve the problem in a couple of minutes. In addition he implemented BDD to show of his skills. He was hired and is one of the best I have worked with.
Other candidates struggle solving the “maths” part of it. They are unable to figure out how the output should look and often forget how to get the remainder of a value. Some senior developers found this difficult for the fact that it was so easy. What I mean by this is that the often have to solve complex problems during the normal duty but could not figure this out because they often over think the solution.
Regardless of the candidate I believe in a simple code example whether FizzBuzz or not can seperate candidates into their respected levels of coding. It is one of the best tools I have found to help establish the skills of a developer.