You will lose the best candidates with an onerous coding challenge.
Our process, which has been heavily influenced by debate on r/experiencedevs on reddit involves a short phone screen, a 30 MINUTE coding challenge, a tech interview consisting of pair programming, and a non-tech interview with management. Very light.
The coding challenge is a FILTER only. It's not to evaluate who to hire, but instead it's to filter who not to continue interviewing.
You learn a lot during pair programming in a short period of time, including personality and team fit. We let them drive and we just watch and discuss. The assignment is to fix a bug, and refactor the code the caused the bug.
When learning on my own, I I prefer to learn things that will last decades rather than years or months. Examples: Linux (bash, core utils, containers), CS (algorithms, data structures), compilers, other paradigms (functional, logic, oop), hardware architecture (logic gates, cpu design, assembly), encryption algos, Vim, etc.
Stuff that I think will only last a few years I will learn as needed on the job or at least on the clock.