So I was just hired by Google right out of college, I'm graduating from Carnegie Mellon Univ in May. Google came to our school to run interviews around October. Here's a summary of the process:
Google set up shop at one of our job fairs with about 120 other companies. Anyone could walk up to the booth and give them their resume and talk to the people there. If they liked you, they e-mailed you later for an interview
There are then 2 on campus interviews. The first on one day, and if the interviewer likes you, then you get called back to the next day. If that interviewer likes you, you get flown out to their head quarters by San Fransisco. For my trip, there were 8 kids from CMU, and about 25 total from 7 other schools.
Out in their headquarters, you have 3 interviews with different sets of people. One of my interviews had 2 people each asking questions. They also feed you though and give tours of the campus. They definitly treated the applicants very well out there, great hotel, very nice all around.
Finally a week later people found out if they had offers or not. I heard rumors that in interviews with Google, each interviewer has 'veto' power, so if just one person didn't like you, no luck.
As for interview topics, there was a large range. Most were data structure concepts and problem solving. One interview was very unique though, the guy had a sheet of general software eng questions ranging over topics such as application design and testing, server-client software design, internet concepts. He would ask you just to describe a general topic, and see how much you could explain about it. For instance, one question was like "If you wanted to improve one of your programs, what would you do?" So you had to talk about testing, bottle-necks, better hardware, etc, just about everything.
As for coding questions, some people have complained in this thread that they don't display if you are a good coder, and I quite disagree. The purpose of those questions are to find out how you think, not how you code. They look for if you can logically lay out a problem in entirety and solve it one step at a time. Yes it's under a stress you would normally not have, but I think the stress helps sometimes. The part that all my interviewers spent the most time with was if I could improve my current solution. To see if you could do it with less memory, less cpu. The hardest part is just not knowing if there's something obvious that you should see. But a hint, start with the worst solution, then 'think up' a better solution while you're writting out the first. Do not try writting out the optimal solution from scratch from your head. They want to first see that you can solve it, but then to make sure that you don't settle for that solution and instead cringe at every line to make sure it's perfect.
Other tips I would suggest, spice up your resume with team projects. Also, the breadth of experience you have, not depth. As for positions at Google, I was hired as a Software Eng, which means I can work on just about any project, so they wanted people with skills in many areas. Lastly, don't be afraid of saying 'I don't know' to a question. I did this a few times for 'quiz' questions where I knew I could just go look up the answer (for instance, one question was 'list and define all the different type casts in c++'). But just don't wait time trying to make up something or giving a wrong answer.
After that babble, I also wanted to mention that every interviewer seemed to love their job there, like some people in the thread have said.
I hope this might give some insight into the process, although it's specific for college grads. But the general idea I got was that Google was looking for genearally bright people with decent experience and good team skills.