This is my third time applying to Google. I talked with them at the career fair and submitted my resume online. (I also had a Google employee submit my resume as well) I got an email the next day asking to schedule two 45-minute technical interviews over the phone. Both involved coding through Google Docs. The first one was okay and covered standard CS algorithms and data structures questions. The second interviewer forgot to call me, but we rescheduled for the following week. His interview consisted of a scenario pulled from a specific skill listed on my resume, and he watched as I described the design, implementation, and testing of that concept.
I received an email within about a week notifying me that I had passed the interview process and was moving on to the host-matching process. Google sticks you in this large pool of candidates from which potential hosts search for you based on a preference form that you fill out. They can also see your interview Google Docs. After about three weeks, I was notified that two teams were interested in interviewing me. I had both phone calls, and really liked one of them but the other one not so much. Regardless, my interviewer told me that both teams didn't see me as a good fit for the team. I was thrown back in the pool.
About one week later I got another email from my recruiter saying that someone was interested in me working on his team. I had a phone call with him and was notified within a few days that I got the job.
As I expected, the process is extremely long, but if you're patient, it could work out.