Some companies are doing those tests (the less, about 10% but they are the big ones). Other companies use developing test and give you some days to do it at your home (about 20 or 30%). The other companies do not know anything, most of them are consulting companies that are going to sell your time so they do not mind if you know what you say, if the client is ok, and the client will buy you because you have to hire 10 profiles and is only finding 5.
At this moment I hired (or helped hire) more than a hundred developers (and other profiles, but most of them were developers) and based on that experience I think that these tests are not useful.
If you want to know if a person really wants the position and she knows all the things needed to develop, the second option may be a correct test.
If you want to know if a person can do the work you have to understand how she is, and if you want to know what her tech capabilities are you can ask about some standards like patterns and you can ask to read and explain some real code.
Google-style interviews check two things and nothing more:
- You are reasonably smart person
- You are willing to spend a lot of time practicing and preparing for the interview
And interview feedback is not the only source of data used for the hiring decision (your CV and info provided by your referees are among the others).
As without the capabilities to do algorithms and data structures in depth it will be very hard for the incoming engineer to get up to speed on high end engineering projects already in progress along with being able to work on the level required to build newer secure, scalable projects.
If the interviewee shows amazing potential, a good knowledgebase, and drive we may give them a shot and evaluate their progress every six months to insure they are learning what is required for increasing their maximum engineering capabilities. As the worst thing we could do is throw away obvious great capability and potential without giving them a shot, guidance and mentoring.