After applying, I was asked to complete a questionnaire and two timed coding problems online. The problems were relatively straightforward, and not particularly difficult - just implementing basic algorithms according to a problem statement.
After this, two technical phone interviews were scheduled, back to back (the interviews themselves were almost a month after the individual coding problems, partially due to the holidays). The technical interviews were one-on-one interviews with full-time software engineers at Google, and consisted of about 30 minutes whiteboarding code in a Google doc with 15 minutes split between the beginning and end for introductions and questions.
The technical interviews were more difficult, but otherwise pretty standard interview questions - write code to solve a problem (potentially with a maximum amortized efficiency) while talking through my reasoning.
After completing the technical interviews, I finally reached the project search stage, for which I completed another questionnaire about my preferences, interests, and experience with different software development topics. I was matched with a potential team, and had another phone interview (about one month after the technical interviews), this time with the intern manager of the team. This interview was much more conversational, giving the intern manager and I a chance to ask/answer questions about ourselves, the team, the project, etc - however, I'm told this is up to the intern manager and may vary.
Ultimately, I think this was a good, if drawn out, experience. The problems were tricky, but not excessively so, and were interesting to me. I would recommend applying early and reviewing data structures and algorithms in preparation for the interviews.