The best meritocratic way (i.e. not dependent on your CV too much) to get invited to an interview with Google is to be top 1000 in Google Code Jam.
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).
I've actually interviewed with them, before when I was in college. In all honesty, I used to be on the defensive side of things against technical interviews only because I got really nervous and my mind would go completely blank, especially this one time when a BigTechCo hiring manager asked me to sort a LinkedList without using additional space.
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.
After many failed approaches, I came with conclusion that the best way to practice algorithms (and math) is to trying to solve some problem which you can not solve and getting stuck, after you tired and failed to solve a problem, you can read answer how to solve a problem.
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.
Actually, in order to advance to round 2 you have to be top 1000 in one of the first rounds, so you make it to the top 3000.
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
That. As an ex-Google engineer, I'm often asked why I quit. I usually reply with a soccer analogy. If you're a decent player, and somehow you're bought by Real Madrid, you won't see much real action. There are enough superstars (technical and political) who get to do exciting stuff to keep you relegated to tedious, menial tasks.
Google is known for paying way above market average, but there's also the question of levels. I'd venture to say that most Google engineers I know work two levels below their capability. The concentration of talent is one thing, but the promotion process is so tedious that folks just tend not to go for it. As a result, what you call "average talent" will more than likely get less compensation at Google than they otherwise would. Certainly that was my case, even though money played no part in my decision.
Speaking as a former Google engineer? I know a few disillusioned Google engineers :) Just understand from the outside looking in the company is still very much tantalizing. Most companies worth working for these days have a similarly stringent interview process so I can't see what the disadvantage would be of upping your technical skills.
But the question is, are you going to pass the interview? Getting an interview is the easy part - I've gotten two Google interviews so far just from recruiters and a friend recommending me.
Send me an email(to my username @ gmail.com ) with your resume, and we can have a chat, and I can provide you with something akin to a reference if you like.
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).