I was contacted by a recruiter roughly a week after submitting my application. We talked about the Residency Program, and she asked me where I wanted to work first if selected. (I had to choose between Mountainview, NYC, and Seattle.)
I was then scheduled for two phone interviews that involved almost entireley technical questions based on my chosen language (I chose Java). Those interviews ran for about 45 minutes each and I had to solve a coding problem, and type the code into a Google doc.
I got a call from the recruiter about a week later, and she congratulated me on making it to the next and final round of inteviews. I was then referred to another recruiter at my chosen location (Mountainview), and she scheduled me for a single phone interview, followed by a Google hangouts video call. The third phone interview went exactly the same as the first two, and I didn't have any problems.
My last interview (Google Hangouts), was a little less formal and my interviewer was someone who worked in the residency program before. She asked me why I wanted to work at Google, and where I wanted to work. After that I was given a very tough coding challenge that happened to target one of my weak points. I managed to get through it, but I'm convinced it took longer than was expected of a Google caliber employee and the last interview is my reason for not recieving an offer.
Overall, I very much enjoyed the experience. All of my interviewers were nice, professional, and extremely knowledgeable. I plan on applying again in a year or so once I've had more practice, because the recruiter said I made it almost all the way.