Personally, I have been planning on changing our hiring process to start with this testing process for hiring before they waste our time being interviewed. BTW, if you want to hire, you have to prepare this test suite before you can start the hiring process so H/R can administer the test.
Have them sign non-disclosure related to interview testing.
Part 0 - Traditional Q&A. Multi choice and short answer. Maybe 15 minutes total.
Drop them in front of test V/M with everything ready to go with video recording active.
Give them a method to ask questions during the testing.
Parts 1 & 2 are language specific.
Part 1 - 2 quickie program descriptions, 2 programs that should take a 1 should take a few minutes to write, the other slightly more complex.
Part 2 - 2 Broken programs with known bugs described, a few minutes each to fix, 1 of these is throwing an exception and all you have is the printed source code (with line numbers) and a exception detail -- you don't actually fix this one, you just state the problem and how to fix
Part 3 - 2 short problem bit based on SQL.
Part 4 -- Any thing else domain specific if needed.
You do on all 3/4 parts. If you don't come out within a reasonable time, you can just let them know they are not being hired. Put them in a waiting area while test results are reviewed. If they do well, on to the interview.
Now -- should I put existing hires back through this test?