For the reading impatient, in a nutshell: I found the interview process (non-US citizen) extremely long, very tedious, and in a sense dehumanizing (in your phone interviews you get your code questions, write the answers and very little else matters). Overall, the whole ordeal was very life draining, and comparing with peers that were going through it at the same time (as I later learned), very focused on a specific type of developer/engineer: without exception very experienced people were rejected.
Google can hire whom they please, but if they know the profile of the person they want to hire, why bother contacting people with 10+ years of experience only to reject them all later? It's a waste of time for them and the interviewees even more so. One could arguably say that it is disrespectful as well.
For those caring for all the details: I was contacted by a recruiter mid 2012, asking if I was interested in discussing a position. I'm not a US citizen, so I was dumbfounded. Of couse I was interested, but why would they contact me then? (I had sent a resume to Google Brasil years prior, with no response).
So a month after I responded I finally heard back, and we agreed because of the project I was in and their timelines to start the process in December. Apparently someone had recommended me, and wanted to remain anonymous. So here we had about 5 months worth of time that I took to practice Portuguese again, brush up my resume with competitions, study, and get Android experience.
During that time, I started to learn that certain other people in my country had also been contacted, some with a similar set of skills and experience. So clearly there was a larger, coordinated effort going on, not just an interest in myself, this made sense but it also made me more wary of it.
December came and I contacted the recruiter once more, and they requested that we start the process in January. So New Years' studying and January came, and finally got a call. I was expecting a technical interview at once, but got another screening (similar to the one the year before) instead. After some email back and forth, a coding interview was scheduled for mid February.
The interview itself was a coding problem of some calculations, and I thought I blew it. To my surprise I was contacted again the next week, and another interview set for the beginning of March.
That one started by the engineer unable to call my phone, I had to call him international, and explain how to call me. Some 15 minutes were spent there. So finally I got some web system design and scalability questions, that (with guidance mind you) I think I answered successfully. I felt much better after that interview.
But weeks rolled by with no response, I was a nervous wreck, so I wrote back asking what the status was (as April was a deadline for H1B), and eventually I got a response that because of the engineer's feedback the process was over for me. I honestly appreciated getting the response, but obviously was not happy.
I was taken aback, but what surprised me even more was that engineers that I consider better than myself, were also getting interviews and also didn't get a lot further. The pattern seemed to be people with plenty of experience (10+ years), multiple team positions, and a history of leadership as well. A pattern hard to ignore.
In the end, like I said, the experience was very life draining, I would not enter into it again lightly. Consider a hiring process that takes months and months (unnecessarily, ie. 3 months for 2 coding interviews), that is not a good indicator of the health of the hiring workflow.