The process began when I gave my resume to a recruiter at our yearly engineering career fair (in October). She asked me a couple generic questions about my resume ("tell me about this position", "what's something hard you encountered") and why I wanted to work at MS. She took the resume and I got a call a week later about scheduling an on-campus interview.
The on-campus interview occurred about a week after, in early November. This interview (and every interview after) had the format of: 5-10 min "tell me about yourself/resume", 30 min technical question, and the rest of the time "do you have any questions for me?" I felt like the interview went well and I was invited to an MS hiring event weekend in December for a day of interviews.
When mid-December rolled around, I flew to Seattle and was put up in the Westin Bellevue. The first night, all software and hardware recruits (about 80 of us, for internships & full-time offers) were taken to an event at the Lucky Strike bowling alley where there was lots of good food, an open bar, and bowling. We also got a chance to talk to our recruiters and ask them any questions about the interview process.
The next day, we had 4 interviews in a row. One group had interviews in the morning (8 - 12) and the others had theirs in the evening (1 - 5). We found out which group we were in the night before. In addition the morning group had lunch after the interviews and the late group had lunch before. Each group of interviewees met in the same room before the interviews (to eat lunch) and between them. Most people wore business casual attire. The schedule was: interview, 15 minute break, interview, 30 minute video about working at MS, interview, 15 minute break, interview. Interviewers would call us one at a time from the room before the interview, take us to a room to conduct the interview, and then take us back after. At the end of the day, we all went to the same building to play XBOX games and play with the MS surface. Then, our recruiters called us one-by-one to privately tell us if we received the offer or not.
I'm glad I got the offer, but the recruiter first quizzed me on how I thought I did and if I had any other offers, and the strong points of my other offers, and how I would feel or what I would do if I did get an offer. I thought that was a little low, since it seemed like she was toying with me and I still didn't know if I had the offer or not at that point. Nonetheless, I was very happy once I got an offer and to hear the terms of the offer, too! I didn't accept on the spot, but my recruiter was hoping I would :P
After that, we were taken home in shuttles and free to do what we wanted. I chose to stay an extra night instead of fly home right away and I hung out with some friends in the area. I flew back the next morning.
In terms of preparation, I didn't do anything special besides reading the book Programming Interviews Exposed (2nd Ed.) and reading up on interview questions on this site and by Googling (or Binging ;) ). The more you prep, and the more introspective you are about your method of solving a problem, the better. In addition, it's really important to be charismatic and passionate about the position/group you're applying for and to be genuinely interested in finding out if the company is a good fit for you. As cheesy as it sounds, when you have that (and if you prepare ahead of time), then the right job offer will simply present itself.