I applied online in early September 2017. I also had a referral from an employee. After about a week I received an e-mail from my school's recruiter to schedule a phone interview for later that month.
I got the impression that my phone interviewer did not work directly at Microsoft. This was not strictly a bad thing but I felt like I was being judged more on my communication skills than my abilities. She asked me some basic general and behavioral questions, including why I wanted to work at Microsoft and to go over a project I had worked on. She asked some followup questions about my project, like how I tested it, but it felt like she was reading the questions off of a list. Finally she asked me a logic problem. She actually cut me off after I gave the right answer to the problem when I was trying to make sure it was correct (she wasn't rude; she just seemed like she was content hearing the right answer).
One thing I want to point out is that my project was in Python, and this interviewer really wanted to make sure that I could program in a C-style language. She said I would need to program in a C-style language for the on-site if I moved on. Maybe this is their official policy, but I knew from talking to other people that it wasn't true. I assured her I could program in C++, which was the truth. I bring this up because I got the feeling that if I had been more modest about my C++ abilities, she actually wouldn't have passed me.
I didn't hear anything for a few weeks. Then I received an e-mail from my school's recruiter that I had done "well" on the phone screen but that they were full on interview spots at the moment and that I would hear back sometime in the next 2-8 (!!) weeks. I finally heard back in late November when I got an e-mail telling me they had on-site spots in January, and if I was still available I could schedule. I responded immediately saying I was available and then I was given a link to schedule on one of 4 or 5 dates, but one of the dates was in early December, so I chose that. They arranged and paid for my airfare and hotel, and gave me a ridiculous reimbursable food budget for each day.
The on-site interviews began at 8am. They interviewed a whole group of people at the same time. We were given a light breakfast buffet and told by a recruiter how the interviews would work. Interviews were 45 minutes each, with a 10-15 minute break between each one. Every single interview followed the same format: they asked me to tell them about myself, and then they asked some questions about the projects I'd been working on. I was honestly surprised that they had all read my resume, and one of them had even checked my github and was familiar with one of my projects. (This really impressed me, to be honest.) Then we spent 20-30 minutes on a whiteboard problem.
The whiteboard problems were all medium or medium-easy in difficulty, but dressed up a little bit so they weren't just literally ripped from some book/website. None of the interviewers cared what language I used and they seemed much more interested in the approach to the problem rather than the code's correctness. Every interviewer was very nice.
(Also, I had a bit of a break at one point and someone from HR sat down and talked to me. This was just a coincidence, NOT an interview, but they were still super nice and honestly it was my favorite conversation of the day.)
When the interviews were over at noon we were taken over as a group to the commons building and given a free lunch. After that we went back to our hotels.
I got my offer 2 days later, but that's because I had a deadline for another company.
Overall my only complaint was how long the whole process took. Near the end there was a real danger that I'd have to accept another offer before finishing up with Microsoft. The process itself was very pleasant and my interviewers were all nice. I would also have liked a bit of a tour of some buildings or working areas but that's not a huge deal.