My first communications with Microsoft were during campus recruiting. I went to their events, but more so because I was interested in the company and their advice for me, not because I had my sights on an internship with them (though I ended up getting one anyway!) I was thrilled/shocked when I found out I had an on campus interview!
To prepare, I bought a book called "Cracking the Coding Interview" (It's magical, I'm telling you. I highly recommend it). The day finally arrived!
On Campus Interview: Half an hour long. Firstly, the interviewer had Windows 8 on a touchscreen computer, which he let me play with. I asked him some semi-informed questions (I had done a little bit of research on Windows 8 beforehand), which I think he appreciated (example: "The design seems like it's made for a touchscreen, like you have here. Is it still good with a mouse?").
Next, he started with the famed questions! It wasn't hard (especially because I practiced binary tree traversal) - given a binary tree, multiply the value in each node by 2. Once I did that, there was the expected "Ok, now test it". I came up with several test cases, including seeing what would happen if the values were large enough to cause integer overflow once multiplied by two. He said he'd never heard that answer before, which I guarantee was the thing that got me to the second interview.
The next question was an object-oriented design question that I had no idea what the answer was, so I was convinced I'd bombed my interview.
The next day... I got an email inviting me to a second-round interview in Redmond! I was shocked/humbled/etc. About a month and a half later, I was off to Seattle, convinced that I was dreadfully underprepared.
Second Round Interview: If you make it here, LEAVE THE HOTEL EARLY. I got so lost and was barely on time. First thing in the morning: Meet with recruiter. She informed me that I'd be interviewing with the Windows Phone team. (I've never touched a Windows phone, so I figured I was doomed, but it turns out that they're not interested with your experience with specific technologies!)
Now, most candidates have a lunch interview, but my interviewer actually forgot to do that, so I was unlucky enough to have 4 (mostly) intense interviews on an empty stomach (he was very ashamed later!).
-Interview 1: Hardest of them all, I thought. My interviewer was really intense (really smart - I respected him!) and asked me to implement a linked list. Also, basic object oriented principles
-Interview 2: My interviewer found out that I like Project Euler, so he asked me a programming question based on that. Also, he wrote code on the board and asked me to find the bug.
-Interview 3: One of the coolest guys I've ever met. He pretty much did a full-blown personality analysis on me (scarily accurate) within the first 5 minutes of meeting me. Then he asked me a brainteaser that I couldn't get the final answer to, but he seemed ok with that.
-Interview 4: Finally a non-technical interview! It was with the manager, who told me that my interview was going great (not what I was thinking - so it was a relief!). We talked about life at Microsoft, etc, and then he sent me home.
I waited for 2 days (that seemed like eons) to hear back from them. I wasn't confident, but I really wanted to know so that I could move on with my life. The recruiter responded with a short response to my thank you email that said Microsoft wanted to offer me the internship! She then called me to discuss the offer, and told me that the team wanted me to know that they interviewed several people for the position, but I was their top choice (which really REALLY shocked me!). I accepted!
Final notes: Be enthusiastic. Prepare. Don't make yourself seem like all you do with your life is computers, but really, know a lot about coding. Ask intelligent questions (and clarifying questions!).
I can't wait to start - good luck to you!