DLB has a brilliant article on how to hire (and how not to hire actually). He writes this piece, detailing him hiring a person based on his previous method of interview, and how it failed. He then does a post-mortem, and shares his current way of interviewing. One neat idea that he proposes is to setup a 60 minute interview. Ask your technical questions for 40 minutes, and stop. With the candidate having informed that it was a 60 minute interview, now ask him, how he felt about the job. Ask him how he feels the interview is going. Observe him. If he is unsure, and shifty, then you know — this guy is probably just a master of interviews. Do you really want to hire him.
Then, with about 10 minutes left, give him a problem to work out right there (a problem which resembles the real-world job that you are about to entrust to him). A problem which would take atleast 60 minutes. Does he groan? Does he say that he needs to leave (it is perfectly fine, if he has a legit reason, but is he trying to weedle out?)
I would want to add a couple of things that I do as well:
I usually give the candidate to ask a few questions. This can gauge the amount of interest that he has in joining your organization. Observe how deep his questions are. Make sure the are not superficial ones (like how is your corporate culture – that is a textbook question).
I also ask the candidate to describe in his own words – what he understood about the job he is applying for. Is he just describing what was in your job description? Is he being more verbose? Did he go through your corporate website before he came in to the interview?
The full article from DLB is here.