With interviews, you are essentially trying to predict the job performance of a candidate when they are at your company, so why not make it as close to that as possible?
With face-to-face tell them to bring their laptop or you can provide one, then explain a real actual hard problem you've solved or one of your colleagues has, that took roughly 2 hours, leave the room and let them try and solve it on their own accord without any pressure of people staring at them whilst coding. Come back and ask them to explain their solution and quiz them on different parts.
This has been by far the best test I've given that predicted real on job performance.