Asking Knowledge Questions during Job Interviews
I posted a riddle in Java yesterday that showed two examples of Static members in an Inner-class, one compiled correctly, the other not. You can check out the answer in the comments. I also wrote in the post that this is "guaranteed to make people mumble in job interviews". Several readers complained that this would make a terrible job interview question. I beg to differ.
For starters, one should remember that a job interview is not a test. In most standard written tests, the goal is to provide the correct answer. Each correct answer is worth some points. The more you answer correctly, the higher your score. Tests are good tools for assessing knowledge and, to some degree, intelligence.
In a job interview, it's different. The goal is to asses the candidate and form an impression. Asking questions and grading the correctness of the answer is important, but it's not the main issue. It's not just getting to the target, it's how you get there (or not). In the interview, you want to detect other factors like: personality, communication skills, creativity, positive thinking and resourcefulness. I found myself more than once approving people who fail to solve a question and disqualifying people who answered correctly.
I gathered just a few examples of what a candidate might do with the question I presented and how you may proceed and interpret the behavior (the next section is written in male form for convenience).
The candidate is puzzled and has no idea
Ask the candidate what he would do next in a real situation. If he does not know that's a bad sign of somebody who would come running to you on every problem. Problem solving skills are one of the main characteristics of a good developer.
He wants to search the web
Let him, but only if he asks. This shows creativity and thinking outside the box: I can search Google during my interview. Knowing how to find answers over the web is an important skill. Many of the experienced developers are so good at it that they take it for granted. Don't just give him time to search the web. Do it with him. See how he works in real situations. Is he cleaver enough to search for the right terms and sift through the search results? This is where intelligence and experience comes into play.
The candidate may offer some wrong answers
Listen carefully and interact. Engage in a discussion. You'll get a good idea on how intimately he knows Java. He may give an explanation which contradicts the basics of the language and demonstrate complete misunderstanding of the concepts. The purpose is to test understanding and experience not memorizing the spec.
The candidate protests about the question
That is an acceptable reaction, I would expect that from "hot shots". There comes a time in a developers' job where he will be asked to do things which he may not like. That will give you some idea of how he's going to react in that situation.
The candidate decides that it's not an acceptable question and refuses to answer
It may indicate that the candidate has an inflated ego, as he feels this question does not dignify an answer. I'm not saying he won't make a good developer, but it would tell you something about his abilities as a team player.
I tried to think of some possible scenario, clearly, there are many others. My point is that this may be a legitimate job interview question, and not because it checks the candidate ability to memorize a spec, but because it may provide new insights regarding the candidate, insights which may be different from those you would get from the other questions you'd normally use.
You've a nicely done site with lots of effort and good updates. I would like to welcome you to submit your stories to www.surfurls.com and get that extra one way traffic to your site.
Posted by: surf | Jul 24, 2008 at 12:38
that's a really bad interview question
Posted by: Andrew | Jul 24, 2008 at 12:50
Interviewing is always a tricky business. When I was interviewing to bring consultants on, I looked for three things from my "really hard" tech questions.
1.) How well they handled unexpected stress.
2.) If they could say "I don't know" and not feel bad about it.
3.) If they would ask me for the follow-up answers.
Stress, cool-headedness, follow-through.
The correct answers to the questions really weren't anything I was concerned about except for the very obvious "you-should-know-this-already" things; what is OOP, is vs. has, etc.
Posted by: Keith Sader | Jul 24, 2008 at 21:24
i think its cheap, maybe set your desk on fire and see what he does? will he save you? will he run? or maybe it wont shock him, because he was asked that question on some interview and died inside.
I think better idea would be to ask some question about some REAL problem that you witness. However that would make some sens, so ... maybe ask him about cooking? or maybe some sexual questions? hes there to entertain you.
Posted by: raveman | Jul 24, 2008 at 23:43
@raveman
Lol.
Posted by: eabarquez | Jul 25, 2008 at 04:50
@raveman,
The difference is that this IS a relevant question because he might encounter such a question during his daily routine, much like I did. As the commenter before you noted, hiring people is a tricky business, because people are coming to an interview as "interview actors". You want to expose them to relevant situations and try to crack the shell to see the person inside.
There are professional institutes for testing candidates. My former employee was using such an institute. The candidates undergo a full day of psychological tests, group dynamics, role plays, mostly unrelated to software developments, mostly testing their personality, coping with stress, team work, communication skills, etc.
Posted by: Zviki | Jul 25, 2008 at 07:54
The problem with this kind of questions is the misuse of them.
As a contracter I do a lot of interviews and mostly it is done by HR-people. If they want technical questions they google and find questions like this one. They don't know what they ask and have to stick with the answer given, answer not correct = wrong candidate.
A second group are "I know it all guys". After 5 seconds they interrupt you and start showing off how good they know (read memorized) the answer.
In 7 years I had 1 (yes only 1) interview like you described, and yes it was fun, together we arrived at a solution both thought that it was not possible to do it that way but it worked nevertheless.
Posted by: jan | Jul 25, 2008 at 08:29
I know what you mean. The situation is far from perfect. I can just say that I used to do a lot of interviews when I was still in my cushy corporate job. We used to sit-in when people interview and give them feedback on their interview skills. We also had a designated group of interviewers.
One of the goals in this article is to make potential interviewers see some light.
Posted by: Zviki | Jul 25, 2008 at 08:42
As a software developer my first reaction to the "riddle" was:
"why would anyone assign null to a final field?"
Upon reading the comments on the riddle I again asked myself if it were ever useful to ever have a static field on a nested class (I think this is a valid question - the first question is a no brainer).
My point here is that the code as presented is not a typical error that might turn up when you are coding, so from my point of view, the question turns out to be a trick to identify a specification guru rather than identifying a promissing developer.
In addition, when you ask what's wrong with with code where we assign null to a final field it might cause the candidate to question of the compentence of the interviewer.
cheers.
Posted by: dennis | Jul 25, 2008 at 14:04
In my last interview, it was obvious about half way through that they had already written me off, and from that point on, thier questions became more and more belligerant and demeaning. It's sad to say, but when you walk into an interview in today's dumbed down, nepotism based world, you need to be prepared to turn the tables, and walk out when the potential employers show that they are certified a-holes.
Posted by: Party Big Town | Jul 26, 2008 at 15:37
Hi,
In this book http://www.javapuzzlers.com/
you can find a lot of staff like this.
I don't thing it is bad idea to ask such questions in job interview.
I personally like questions when interviewer asks me to design something, or write some code.
Posted by: Boris | Jul 26, 2008 at 20:05