Mostly agree with minor exception of ask them to debug something not code something. More time is spent fixing changing (for the sake of change of course) and updating and upgrading than plain blank sheet starting.
Also, debugging code is harder. Any idiot can write something that occasionally works with some limited simple input and doesn't need to scale or do much error handling or recovery or cooperate with the OPS guys and their designs in any way. If you hire a guy who can code but not debug what he wrote, you're in big trouble sooner or later.
Give em a fizzbuzz with pathological parenthesis which mess it up, or half a fizzbuzz and ask them to finish it. Or give them a mortgage amortization calculator or similar with an obvious fencepost/off-by-one error (this is almost more of a spreadsheet problem than a real programming problem, but...). This is almost too stereotypical of a classroom task, but give them an OO design of a simulation of an elevator (literal, not an analogy) and ask him to add another floor to the elevator design, or add a fire dept override keyswitch, or maybe implement those door sensors so it doesn't move if any doors are open. Given a really crude simple importer for CSV text files, make it smarter so it can handle embedded commas inside quotes. Here's a crude simple roman numeral to decimal translator which handles I and V, now either add X or add prefix notation or whatever its called where IV = 4 not 6. Here's the worlds dumbest prime number checker which tests all positive integers smaller than the test number for divisibility... your task is make it faster.