The "work" for "no pay" part. That's always exploitation, no matter how you try and justify it.
This is a completely different company than the original post mentioned.
I may have to take a leave from my current work, take half a day off off my current contract or spend a significant part of my weekend on this problem, instead of with my family. I certainly expect to be paid for it.
But doing half a day coding exercise even before any technical interviewer in the company is ready to talk to me has a very imbalanced investment of time from both sides. I invest 4 hours in the company when the company invests none.