Interviews are trying to answer the question, "Is this person someone I want to do this job?"
Is the job going to be writing out code on a whiteboard in front of people? No, so don't do that.
Is the job going to be free-form impressing people with programming? No, so don't do that either.
The best interview is having someone work for you on a contract basis for a few weeks or a month. It lets you assess the person's fit, and it also doesn't put them in a position of having to do work (like homework) for you for free.
Also now you are constrained to considering only people able to work for you for a week, so presumably not employed now.
Also you are further limited to those people who didn't take another job from a quicker employer whilst you are dithering around organizing and running week long trials.
If someone takes a job from a quicker employer and they prefer your company, they'll let you know. Fit is important, and it goes both ways. If someone chooses another employer, they probably wouldn't have been happy at your company anyway.
That's not true, that's simply how slow companies rationalize being slow, so they can feel good about it.