I made a general submission on Microsoft's career site. About two months later, a Microsoft recruiter contacted me and asked me some general questions about my background. She then directed me to another recruiter who asked me if I would be interested for a position on the MSN team. I said I was interested, and a few days later, she set up a phone interview with the hiring manager.
The phone interview was completely technical. I had to write code in a Live Meeting session. First I was asked to write some very basic HTML and CSS. Then I was asked to code up a problem that was recursive in nature. I struggled a little bit, but was able to come up with a solution in the end.
A few days later, my recruiter told me that Microsoft wanted to fly me to Seattle for an on-site interview. A week later, I flew out for a day of interviewing. My interview consisted of three one-hour interviews, and one 1.5-hour interview that included lunch.
My first interviewer had me code up a pretty standard problem on the whiteboard. As I coded it up, she asked me questions about what I was doing and how efficient my code was. My final code was not very efficient, but that turned out to be okay as she was just looking to see how I think. She also asked me to describe a time where I solved a hard coding problem on my own.
My second interviewer had me design the classes that would be required for a CSS parser that would ultimately try to compress a CSS file by merging redundant selectors. Most of my time was spent designing the basic data structures and explaining how I would go about merging selectors. Again, he was just looking to see how I think.
My third interview consisted of a one-hour lunch followed by a half-hour whiteboard coding session. The lunch portion was pretty casual where we mostly talked about what I've worked on in the past. The coding portion was pretty standard. I struggled a bit, but that turned out to be okay.
I was told ahead of time that the fourth interview was contingent on how well the first three interviews went. So I was happy when I was told that I would have a fourth interview. The fourth and final interviewer was an old man who was higher up on the ladder. The interview was very laid back. He asked me questions like why I wanted to work at Microsoft, how long I intended to stay, and if I plan to pursue higher education. It was my impression that if you make it to the fourth interview, it's already been decided that you're technically capable of working at Microsoft. Now it was time to see if you had the right personality to work there.
Two weeks later, my recruiter called me up with an offer.
Overall, very positive experience. Every interviewer was very nice. They all tried to make me feel as comfortable as possible, giving me helpful hints when I started to struggle with a coding problem. They were definitely more interested in how you think than the final code that ends up on the whiteboard. Perfection is not required.