Asking candidates to do tests on their own time is rude and dumb.
Any "homework" longer than an hour or so is disproportionally a burden on the candidate. I feel it is unethical and a dealbreaker for me.
Candidate just devoted significant portion of an entire day with no compensation in hopes to work for you, you basically say 'no' and give nothing back.. its using peoples labor for free and trashing them.
Interviewing candidates also isn't a free labor source (in event that 'homework' has some professional use, which it often could)
Other than obviously or blatantly incompetent coding, I'd expect that as a minimum, a code review would be a part of the equation.
This is similar to you working on a project, your boss looking over it, not saying a word, dragging it to the Recycle Bin, and walking off.
I once spent two hours on a test for a contract development company. I'm an accomplished senior developer and normally i would have told them to F off, but I was curious so i did it. I did pretty well on it, but never got a response. Zip, nada, nothing. I emailed them multiple times and even called HR. Still no response.
Anytime other devs ask me about that company, i say don't waste your time, they are super shitty.
I don't want somebody who 'knows' how to invert a tree, any more than I want someone who's learned the answer to Fizzbuzz.
The point is not that you know how to do it, but that you can naturally perform basic manipulation of very simple data structures. If you can't swap two values, or you can't write recursive code, you may think you're a competent programmer, but I don't agree. What is basic, if that kind of thing is advanced?
If you think an employer expecting that level of competence has 'a sort of attitude', then I don't know what to say. How would you react to someone who felt that way when asked if they could code a loop over a pair of lists, or return a function from a function, or any thing else you consider routine (do you consider anything routine)?
It worries me that programming has become 'copying and pasting from Google' and that people would find it offensive that anyone could possibly have a higher standard than that. If that's a horribly elitist, unacceptably arrogant attitude to you, then again, I don't know what to say.
I just think people starting out should be supported and being arrogant about it doesn't really help anyone.
So, do you feel like answering the questions in my edited and toned down version?
I confess I am really struggling with this at the moment, because this kind of thing seems to keep coming up. And I honestly cannot figure out where I'm going wrong to expect programmers to be able to do this kind of thing.
Adjust your expectations.
Methinks you left the last and obvious/inevitable step out.