I interviewed for the SDE position last year.
Don't expect any "logic" or "brain teaser" questions that the internet says are synonymous with Microsoft. They don't do that anymore. What you CAN expect is coding, coding, coding. They'll give you a coding question and ask you to write your solution on the whiteboard. After you come up with a solution (if you can't figure it out they'll "help" you along, but very little), you'll be asked to optimize it, often more than once.
I can give you the following advice: A) Come prepared with lots and lots of questions. Other than the coding questions, they'll tell you about themselves and then ask if you have questions. use that time wisely. Show that you're excited about technology, coding, etc. B) Explain your thinking as you code, and when you're stuck. They want to know that you're thinking and not just staring at the whiteboard. Getting it 100% right isn't required, but showing that you know how to code and know how to think is.
My interview went from 10am to 4:30pm. I had 1 with a recruiter and then 5 technical interviews. I screwed up the first one (I initially drew a blank on how to set up the loop to draw a circle on the screen...brain fart) and completely nailed the next 4, and still didn't get the job so uhh...don't screw up, haha. All the interviewers talk to each other between interviews so they know what you did right/wrong at the previous interview, and will often try to build on that.
The questions I got were (it was a year ago...trying to remember)
1) write a function to draw a circle on the screen (most basic answer is a nested for loop, 1 for each quadrant). Optimize to run in 1/8 that time.
2) write the C function StrTok
3) write an insert function for a binary tree
4) write a conversion function that turns the "remainder" function into the "modulus" function
umm...there were 2 or 3 questions involving arrays/hash tables and sorting that I can't remember off the top of my head. The vast majority of their software is still written in C, with some C++, so if you're like me and haven't down lower-level stuff in awhile (going into the interview, my last few years had been c#), be sure to study up on pointers, bitwise operations, etc.
Good luck