Initially turned in my resume during a campus career fair. Approximately two weeks later I was emailed by a recruiter who asked me to participate in an on-campus interview (i.e., first round).
The campus interview was with someone who wasn't a recruiter and had clear technical expertise. This interview lasted approximately 25-30 minutes. We mostly talked about items on my resume, whether or not I faced any unique challenges and if so, how I overcame them. This was a very conventional interview. Upon the conclusion, I was asked a technical question.
About three weeks later, I was emailed again by a different recruiter who asked me if I was available to fly out to Redmond, WA for the second round interview. I had a very compact window to interview within, and the recruiters did a great job setting everything up within my constraints.
On interview day, the first step is to meet with another recruiter who is on-site, who will discuss the group / team you will be interviewing with, and answer any other questions you may have at the time. This recruiter is also the one who will tell you the results, and work further with you should you get an offer. After meeting the recruiter, you take a personal shuttle to the buildings where your interviewers are. Mine were all in the same building. Next you meet with 3-5 interviewers, and one of the interviews is a lunch interview. You are told beforehand that each interviewer passes on comments to the next one, presumably so they can confirm / deny a weakness.
For me, the first interviewer didn't want to talk about my resume at all. He was more or less the manager of the group and was very blunt about the skills he was looking for. Some non-technical questions were: "What would you change about Windows?", "What do you read to stay on top of the latest technology?", "What are some examples of trending applications?". Then he went to the coding problems. One a mathematical proof, and the second more coding oriented.
The next interview was over lunch, and this interviewer asked me initially about my research, but quickly started trending towards questions that were more oriented towards the group. After lunch we went back to his office and I was asked another coding problem.
The third interview was more theoretical. The interviewer briefly talked about my research and that it looked interesting, and then we went into an open-ended math / optimization problem.
After the third interview, I was told that I would not be seeing the fourth interviewer (this means you failed), and I was taken back to HR to discuss the day with the recruiter. I should point out that the recruiter was very helpful and looked into other groups that might have been a better fit.
Overall, the interview was very challenging. You absolutely need to be prepared to code and solve difficult problems. The second round is not about what you have done, but rather what you can do now, in a high-pressure situation. Also, you are told that you can code in any language, but in reality, you need to be able to code in C/C#. Not being familiar with either, I tried to use Python so as to not get bogged down in syntax, but it was generally not well received.