I heard back from google within a couple of weeks after applying as I had someone internally recommend me. The hiring process starts with a call with the recruiter. They are very friendly and they go over the recruitment process briefly.
The first interview is a phone interview. It revolved around a design question. They will start with an easy problem and then keep adding complexity to it as you move on. This was more of a discussion. After about 15 minutes of the design question the interviewer wanted me to write some code for a completely different problem. They are fine with any language (Python, Java, C, C++ etc), I used python. The coding question was about regular expression something basic. I cannot reveal the exact question as I have signed NDA.
Within a a few days the recruiter got back to me and scheduled an onsite interview. Since I wanted to prepare well for the interview I pushed the onsite interview out a few weeks.
The onsite consisted of 5 interviews. Instead of listing out each interview I will give a general overview and some pointers that may help. I am a machine learning scientist and not a software engineer. So I brushed up on data structures (Arrays, Lists, Hash Table, Graphs and Binary Search Tree) and algorithms ((n)log(n) sorting, BFS/DFS, In Order/Pre-order/Post-Order Traversal etc). I also practiced coding question from top coder. A good place for basic comp sci stuff is the algorithms and data structure course on Coursera by Tim Roughgarden. One thing to keep in mind is that you must always know the time and space complexity of any code that you write. It will always be asked.
It is a good idea to go through your solution with the interviewer before you start writing code. The interviewers are friendly and they will point you in the right direction if you have any problems. Always keep the interview a 2 way conversation. Ask questions if you do not understand something. In my experience they do not care as much about the final answer as much they care about your thinking process. So think out loud, this really helped me. Practice writing code (proper syntax) on a piece of paper because during the interview you will be asked to code on a white board.
Last but not the least don't get demotivated if you do badly in one interview, try and ace the next ones. I completely messed up one interview in which I was not able to answer the question at all. The question was on recursion for a hypothetical tree data structure. I absolutely could not get the interviewers hints but I never gave up and kept on trying till the interviewer was tired moved