One alternative is providing candidates with a problem to work on for a few hours on their own (have them bring their own laptop, allow them access to Google and their own development environment), then have them walk you through their solution.
Do this as part of the interview and not something they have to do in their "spare time" at home. It's not uncommon for large companies to do all-day interviews anyway, so a way to structure this can be to have the interviewee come in in the morning, provide them the problem and allow them to ask any questions they might have (as if it was a real work problem), then allow them the morning to work on it.
Then in the afternoon you can review the solution and ask them to talk through how they arrived at it and what their thoughts were during the process.
Do this as part of the interview and not something they have to do in their "spare time" at home. It's not uncommon for large companies to do all-day interviews anyway, so a way to structure this can be to have the interviewee come in in the morning, provide them the problem and allow them to ask any questions they might have (as if it was a real work problem), then allow them the morning to work on it.
Then in the afternoon you can review the solution and ask them to talk through how they arrived at it and what their thoughts were during the process.