Microsoft first got a hold of my resume via someone on campus who had emails of the student leaders. They contacted me for an on campus interview. Before my interview, I was asked to tell them if I was more interested in Testing, Development, or Program Management. Program Managers essentially are responsible for customers needs and functionality of tools and software.
During my first interview, I was shocked to receive an algorithm question since a program manager would ideally not be spending most of his time designing algorithms, but I battled my way through it. However, after that experience, when I got booked for my interview at Redmond, I was sure to practice by sorting algorithms and what not. However, I was dismayed to learn that the algorithm of choice was a user interface design. They had refused to give me any insight into the interview process, assuming that even if I didn't know what to expect, I should have no trouble discussing interfaces. Unfortunately, not everyone had this same veil, many came in having discussed the process with friends, before hand.
I had no problems with the user needs and requirements gathering, but continuously got hung up on the actual user interface functionality. Ultimately, I had 4 interviews (which I was told was a good sign, since my last interviewer was in management). However, I did not get the offer.