Applied through a university recruiting event.
Talked to a recruiter then scheduled a technical phone interview.
Did a basic programming problem on the phone (reverse a singly linked list), and a few days later I was invited to fly out to an on-site interview.
Fast-forward a few weeks, I flew out to Seattle, WA. They put me up in the Westin (very nice hotel) and payed for everything. Opt for a rental car (it's free!) so you can explore the city when you're done on your own time.
Microsoft now does most of their interviews in four hour intervals. I was assigned the morning interval (~8am - ~1pm), so the whole on-site interview didn't last more than 4 or 5 hours.
They pick you up in a limo with the other candidates (there were a total of 16 of us). They brought the 16 of us into a holding room in a building on the campus. From there, the interviewers came and got a candidate to interview one by one. A total of four interviews were given (everyone got the same amount, no one was sent home early or anything). Each one was 45 minutes, with a 15 minute break in between. The interviews weren't too hard - reverse the words of a string (example i/p: sunny in seattle o/p: seattle in sunny). If you read through Cracking the Coding Interview, it's really not too bad. I've interviewed at Google and Amazon and those interviews were much harder.
At some point in the interview they feed you food, usually a pasta. My advice would be to avoid all the carbs, as my group had two interviews, then lunch, then two more interviews. After lunch, the people that ate a lot of carbs (pasta) were about ready to fall asleep, despite having two more interviews.
One thing to point out about these interviews is that they will drain you, similar to walking out of the SAT. A few kids actually fell asleep on the way home from the interview because they were so mentally exhausted, so make sure you pace and prepare yourself.