Will the candidate be able to write working code if they join the team?
Can the candidate discuss code and problems with the people they'll be working with?
Can the candidate reason about arbitrary problems and constraints?
Is the candidate someone we would enjoy working with?
All of these can be solved directly by asking the candidate if they'd be comfortable doing an actual task on the actual codebase, having them sign an NDA, and then giving them a bugfix to perform. They're compensated for their time, of course.
I'm doing it right now as a candidate and it's by far the best interview experience I've had. The others were all artificial.
A lot of people have a problem with this model for one reason or another, but in terms of effectiveness it's probably at the top 1%.