Some companies get it right. They post a fun challenge, not a rote test, and attract skilled programmers with it. Most companies seem to just pick the most annoying thing they've ever had to do (C with non-standard pointer use, etc), obfuscate it, and call it a 'puzzle'.