Bingo. Timeless classic for good reason.
Code review also can be good, not in a "can you spot the 17 bugs" way, but rather as a tool for discussing what makes code good, what make a code-review good, what are the tradeoffs in this particular section of code, what tests or other safety checks might you want to add to this particular code, etc.
It's worked well for me so far.
I'm not a fan of whiteboarding or on-the-spot code examinations. I feel the ability to communicate effectively about code and algorithms, critique in an empathic fashion is far more important.
Similarly, I feel that curiosity is one of the strongest skills a developer can have, and this is not something that can be demonstrated through coding exercises.