The process began when I gave my resume to a recruiter at our yearly engineering career fair in October. She asked me a couple of generic questions about my resume ("tell me about this position", "what's something hard you encountered") and why I wanted to work at MS. She took the resume, and I received a call a week later about scheduling an on-campus interview.
The on-campus interview occurred about a week after, in early November. This interview, and every interview after, followed this format: 5-10 minutes for "tell me about yourself/resume," 30 minutes for a technical question, and the rest of the time for "do you have any questions for me?" I felt the interview went well and was invited to an MS hiring event weekend in December for a day of interviews.
When mid-December rolled around, I flew to Seattle and stayed at the Westin Bellevue. The first night, all software and hardware recruits (about 80 of us, for internships and full-time offers) were taken to an event at the Lucky Strike bowling alley. There was plenty of good food, an open bar, and bowling. We also got a chance to talk to our recruiters and ask them any questions about the interview process.
The next day, we had four interviews in a row. One group had interviews in the morning (8 AM - 12 PM), and the others had theirs in the evening (1 PM - 5 PM). We found out which group we were in the night before. The morning group had lunch after the interviews, and the late group had lunch before. Each group of interviewees met in the same room before the interviews (to eat lunch) and between them. Most people wore business casual attire. The schedule was: interview, a 15-minute break, interview, a 30-minute video about working at MS, interview, a 15-minute break, and interview. Interviewers would call us one at a time from the room before the interview, take us to another room to conduct it, and then bring us back afterward. At the end of the day, we all went to the same building to play Xbox games and use the MS Surface. Then, our recruiters called us one-by-one to privately tell us if we received the offer or not.
I'm glad I got the offer, but the recruiter first quizzed me on how I thought I did, whether I had any other offers, the strong points of my other offers, and how I would feel or what I would do if I received an offer. I thought that was a little low, as it seemed like she was toying with me, and I still didn't know if I had the offer at that point. Nonetheless, I was very happy once I received the offer and learned about its terms! I didn't accept on the spot, but my recruiter was hoping I would.
After that, we were taken home in shuttles and were free to do as we pleased. I chose to stay an extra night instead of flying home right away and hung out with some friends in the area. I flew back the next morning.
In terms of preparation, I didn't do anything special besides reading the book Programming Interviews Exposed (2nd Ed.) and researching interview questions on this site and by Googling (or Binging). The more you prepare and the more introspective you are about your problem-solving methods, the better. Additionally, it's really important to be charismatic and passionate about the position or group you're applying for, and to be genuinely interested in determining if the company is a good fit for you. As cheesy as it sounds, when you have that (and if you prepare ahead of time), then the right job offer will simply present itself.
Write a function to determine if a binary tree is balanced or not.
Write a function to convert a number in Roman numeral form to a decimal representation.
Write a function to print out the contents of a singly-linked list in reverse order.
Write a function to find the location of k consecutive 0's in a bitstream of length n.
Write a function to solve a problem given one set of constraints. Then, change some (but not all) of the constraints. Decide how you will change your function and see if that function still handles the initial set of constraints.
The following metrics were computed from 214 interview experiences for the Microsoft Software Development Engineer role in Redmond, Washington.
Microsoft's interview process for their Software Development Engineer roles in Redmond, Washington is fairly selective, failing a large portion of engineers who go through it.
Candidates reported having very good feelings for Microsoft's Software Development Engineer interview process in Redmond, Washington.