From Justin James in TechRepublic:
Tests often evaluate rote memorization that the modern development environment does not require (e.g., between the IDE’s autocomplete, F1, and the Internet, library knowledge is not as important as it used to be).
* Explain the difference between “equality” and “equivalence” (credits to TechRepublic member Tony Patton for this question).
* What is the difference between “pass by value” and “pass by reference”? How are these ideas different in object-oriented systems and procedural systems?
* Describe “polymorphism.”
* Compare and contrast “pessimistic locking” and “optimistic locking.”
Any candidate who cannot successfully answer the first two is “entry level” at best. The second two should be answerable for any “intermediate” developer.
Thought Process: “The Chicken Question”
“If you had your way, how would you design a chicken, and why?”
* Calculate the Fibonacci value for a number X
* Determine whether or not a given number X is prime
* Reverse an array without using a loop
Or write the pseudocode and ask the candidate what the logic is trying to accomplish.
You should be looking for a candidate who can make optimizations, find “fence posting errors” (and other common mistakes), and so on. This will show that that person understands the difference between good code and poor code and know how to write good code.
The Usual Suspects
Instead of asking, “What’s your biggest weakness?” try asking, “What aspect of Web development do you feel weakest in?” (or whatever kind of development your project is in). If your candidate lacks the exact set of skills that you’re looking for, don’t ask them, “Do you think you could come up to speed quickly in these tools?” Because, of course, she will say she can. Instead, ask for examples of how she has been able to perform jobs despite lacking the skill set at the beginning.