Study algorithms a lot, practice on CodeForces and TopCoder. If you work hard on it, in some year you will be on top of Google Code Jam.
Recommendations is good to have but it won't help you to be successful on the interview.
Practice algorithms a lot, ... I mean literally A LOT.
P.S. I had recommendations from Google employees. I screw up Google interview. Now, I'm preparing with algorithms and participate on coding contests including Google Code Jam (right now).
This will help your brain to remember particular method/algorithm/concept because your brain will think that this is very important problem, a sort of missing puzzle for your brain.
If you just passively read book about algorithms, you will have false feeling that you learn quickly but you will forget everything very soon and not being able to reconstruct any of algorithms you learned so far.
If you participate in algorithm contests, you will struggle a lot and after contest you will read editorials and may be redirected to CLRS or Knuth books.
Your learning curve will grow very slowly but believe me you will get very solid knowledge which won't be forgotten for a long time.
P.S. I practised a lot of passive learning by reading algorithms books. I forgot almost everything. Now, I'm switched to learning though competitions. It's hard way but very solid.
So after many rejections and rushed algorithms textbooks regurgitations, I decided to start somewhere my well-roundedness counted more than my algorithm implementation skills( a big awesome Fortune 20 company too) , and actually REALLY take my time to study the ins and outs of being a real World software engineer and ENJOY IT.
A year and a half later after graduation, I don't regret my decision at all. My problem-solving and implementation skills have improved tremendously, especially after I discovered Firecode.io, which takes a more pedagogical approach to interview prep than TopCoder or google CodeJam.
I live in Seattle and have a few acquaintances who are in tech at various companies(Google, FB, Amazon, MSFT..) . My interactions with Googlers have been very pleasant; they just seem to be very down to earth compared to other engineers I have encountered, in general. I am not in a rush, though. I am gainfully employed and like my job, so that also drive my job search to be largely serendipitous.
There is qualification round, round 1a/1b/1c, round 2, round 3, onsite finals.
Advancing to round 1 won't impress anyone because qualification round is easy.
In order to advance to round 2 you have to be top 1000 which is pretty difficult but achievable.
Advancing to round 3 is very difficult, I think it's way beyond interview level.
The reason I asked is because I placed in the top 1000 (top 1000 of round 2) back in 2011 but was only contacted by a google recruiter in late 2012 (in the 2012 edition I had been just outside of the top 1000 in round 2).
It is certainly a common desire of a lot of people to work there. And it certainly can be achieved if you have the technical skills
But the advantages of a position are overrated, and the disadvantages, underrated.
Certainly, not everywhere you can work on Google sized problems, but other place have interesting problems as well, and you'll feel your work to be more valued
Not former nor current. Me too!
And yes, the Google interview process made me aware of some (important) blanks in my knowledge
At the same time they ignore the "incidental" talents and knowledge of people in their process (a lot of times, technical knowledge).
I also compare what they're doing with what people that got turned down are doing
Real Madrid salaries for "average talent" are probably more competitive as well