I applied on microsoft.com/careers for multiple positions. About a month later I was emailed a document which included some questions asking me to rate myself in various programming languages as well as a coding question. The question was to implement a function that returned true if a linked list had a cycle in it.
After filling out and returning the document I was setup for a phone interview with the team. During the phone interview I was asked some soft questions about my interests in technology, background, etc. I was also asked how I would implement a function to convert a character array into an integer. I was told I would be hearing from them again.
The next day the recruiter emailed me to setup an in person interview in Redmond, Washington. On the day of the interview I went to the wrong building and ended up barely making my interview time. Tip - arrive early!
*Interviewer 1 - SDET: Soft questions about background, then jumped into a coding question. How would I reverse words in a paragraph of text. I coded it out and he pointed out a bug, which I fixed.
*Interviewer 2 - Lead SDE: Jumped right into a coding question. There's a tree where in addition to the left/right pointers, there's another pointer set to NULL. I was to write a function to traverse the tree, initializing that pointer to the nodes sibling. So basically just connecting up the levels of the tree.
*Interviewer 3 - Lead SDET: Print tree level by level. I coded up a solution in 10 minutes and ran some test cases through it. He then sold me on his team.
*Interviewer 4 - Lead SDET: No coding question. The entire interview was me writing a test plan to test a robot.
*Interviewer 5 - Development Manager: Some chit chat about resume, then a coding question. Print the count of letters in an array. So if the array was "ababac", I would print a - 3, b - 2, c - 1.
After the interview the manager said I would hear from them soon. Next day I was given an offer, contingent on a background check.