I attended a first round interview at my university in Seattle, WA, and then visited the Redmond, WA campus for an all-day interview for my second round.
The first interview took a half hour, and was a one-on-one interview between me and an interviewer. He started by asking me a few questions about my resume, like what my favorite class was, and the project I was working on. We also talked about what kind of development I liked, why I wanted to work at Microsoft, why I wanted to be a PM. Then he asked me a technical question (see questions). He was very nice, and did a great job of giving me feedback about the type of answers he was looking for. I was actually the last interview of the day, so at the end he asked if I would like to stay and answer a quick logic problem while he packed up. I agreed and he asked me a problem about 3 prisoners wearing either black or white hats.
The recruiter actually took a very long time to get back to me about scheduling my second interview (this time period also fell over winter vacation, so I think that was part of the problem).
I arrived at the Redmond campus for my second round interview. I briefly met with a recruiter to talk about the day, and then I took a (single-person Prius) shuttle to one of the MS buildings in Redmond, where I interviewed with 4 people. The first 2 were PMs on the team I was interviewing for a position with, the third worked to supply data to the team, and the fourth was the first two PMs' boss on the team.
The first PM asked me about my resume again. Then we talked about a project I was working on and what features I was thinking about adding to it (I drew some pictures on the white board for this). Then he asked me a coding problem: given a palindrome, ex "A man, a canal, panama" and a list of punctuation to ignore when processing the string, ex ", " return true/false if the string is a palindrome. I wrote this in the language of my choice (Java, which he let me use even though he worked in C). Then we discussed the answer to, but not coded, a question: given a strictly-increasing list that has been shifted, return the number of shifts
Original list:, 1, 3, 3, 4, 5, 6, 6
Shift of 1: 3, 3, 4, 5, 6, 6, 1
Shift of 2: 3, 4, 5, 6, 6, 1, 3
Shift of 3: 4, 5, 6, 6, 1, 3, 3
The second interviewer asked me a bunch of PM type questions: if you were designing a web music store, what would you do? What things do you need to consider? What actions might a user make (buying music, searching music, creating an account) that need to be considered, etc).
The third interview was over lunch, so it was more relaxed. We talked about why I like technology, why I want to be a PM, why I think Microsoft is cool, etc.
The fourth interviewer was terrible, he asked me a ridiculously vague PM question about designing a mobile application to drive traffic to Bing.com. The question was really unclear; I had absolutely no idea what he wanted me to say, and when I asked him to clarify he basically looked at me like I was stupid because it was CLEARLY obvious, and said exactly the same thing he had before. I guessed what he wanted and made something up, and I don't think it was the direction he wanted me to go, but it was hard to tell because he didn't give me any kind of leading questions or statements. I think since he was the boss he rarely interviewed candidates.
I finally took a shuttle back to my first building of the day, touched base with the recruiter I had talked to that morning, and went home.
Overall (with the exception of the last guy) I felt like the interview went well, except that I realized somewhere during the day that I really wanted to do Software Development, not PM. I think my interviewer also realized I would be a terrible PM, so I did not receive an offer.