After meeting a recruiter on campus, I submitted my resume online for the Software Engineering - New Grad position. I was contacted by a recruiter the following day, but because of the holidays, we scheduled the phone screen for a few weeks later. The phone screen (45 mins) consisted of one warmup question (5 mins), followed by one main question asking me to implement the core methods of a simple game. The question had one or two tricks that could be easily picked up on by studying and doing practice problems. A day or so later I was contacted by the recruiter to schedule on onsite interview.
A few weeks later I was flown in to the Mountain View HQ. I had four technical interviews (45 mins), and one non-technical interview (culture fit) over lunch. The questions were not too difficult, but definitely required some thought. Before writing any code, I always discussed the high level approach with the interviewer and explained my thought process. When coding, I broke every question down into pieces, which allowed me to focus on the meat of the problem with worrying too much about the surrounding details. After I finished the main problem, I went back and finished the helper methods as needed.
I can safely say that studying and doing practice problems is a MUST. I went through and answered every question in the tree, data structures, and recursion sections of "Cracking the Coding Interview" book, even if a given question took me an hour. After completing these sections, I felt extremely comfortable with recursion (a previous weak spot), which was a huge help during the interviews. The most important thing during these interviews is to have what I would describe as "coding fluidity"; talking with others in my interview group, it seems that many were able to formulate the high level ideas correctly, but could not actually represent their ideas in code in an efficient manner.
Overall, I had a great experience. The recruiter got back to me a week later with the good news, and I accepted the offer a few days after that.