I know some companies advocating them, but I heard from some candidates/friends that they don't like them because:
Often times the company say the problem should take half a day, but it actually takes a lot longer if you really want the job. Assume two solutions are both functional, the evaluator will compare things like comments, code style, all test cases (unit and all coverages) written out, etc. To get all those things perfectly polished takes a lot of time.
Those little polishing tasks are really time draining/boring work, rather than actual intellectual problem solving.
What are your thoughts?