When people ask this question, they almost always mean, what's the alternative to one kind of testing that's still a test?
Nobody seems willing to accept the answer that interviews shouldn't be tests. The demand for testing assumes the idea, the self-fulfilling prophesy, that 99% of programmers can't program. If you start with that assumption, then you'll always end up wanting some kind of test. But it's such a bizarre idea that programmers are uniquely incompetent among all professions in the world.
We know that interviews, not just programmer interviews but interviews in general, are poor predictors of performance. The best predictor of future performance is past performance. In other words, experience.
Our industry is also insanely afraid of the proverbial "bad hire". It's a pervasive mental illness. There's a failure to recognize that perfection is unattainable, and mistakes are a fact of life. Look of professional sports: they spend vastly more time and money on talent evaluation than tech, and yet pro sports teams get talent evaluation totally wrong all the time! Bad draft picks, bad trades, bad contracts, etc. They just accept it, deal with it, and move on. Nobody has the perfect programmer hiring method, and nobody ever will. It's a crapshoot. And just because a programmer "can program" doesn't mean they're not a bad hire. They could still write buggy, overengineered code, they could be a bad teammate, they could be a sexual harasser, or have any number of other issues. Or they could leave for another jobs a few months after getting hired. There's no way to guarantee a good hire.
It's a mistake to turn hiring into an "algorithm". It's not a programming problem, it's a human problem. Programmers are humans, not robots, and they're not going to perform robotically in interviews. The only way to truly know is to give someone a chance. They may unpleasantly surprise you, but they may also pleasantly surprise you.