* Take home projects filter out people with busy lives. Wastes 100 people's time to hire 1 person. Can't be sure they didn't cheat. No incentives to stop company from giving you a 10 hour assignment and then not looking at it. The candidate with the most time to waste wins.
* Relying on academic credentials unfairly favors people from privileged backgrounds and doesn't necessarily correlate with skill as an engineer.
* Skipping the tech interview and just talking about the candidate's experience is prone to favoring bullshitters, plus you'll miss smart people who haven't had their lucky break yet.
* Asking "practical" questions tends to eliminate people without familiarity with your problem domain or tech stack.
* We all know how asking riddles and brainteasers worked out.
With leetcode, the curriculum is known up front and I have some assurance that the company has at least has some skin in the game when they schedule an engineer to evaluate me. It also tests your general knowledge and in some part intelligence as opposed to testing that you have some very narrow experience that happens to overlap with the job description.