Coding Round 1 : After a short intro and an easy warmup question , was asked a coding question based on arrays. It was a simple question but was disguised in a very long confusing problem statement. Was stuck on a wrong solution for a while but managed to reach the correct solution after some help from the interviewer.
Coding Round 2 : Linked list and BST based question (common question).
Design and Coding round 3 : Started with project discusssion and design problems that I recently worked on. Was then asked to implement my own version of a common class.(E.g implement your own bst iterator or implement your own hashmap) . After 1 hour discussion on this problem , moved to next problem which was about designing a solution to a problem based majorly on TRIES.
Design round 4 : This was a 2 hour round. Intial one hour was spent on project discussion where interviewer aksed about my work , deliverables, how I measure the project success, metrics monitored in the project and highlevel design of the system. Was asked a design question based on tries again.
As far as I understand , Microsoft generally looks for your hands-on knowledge on the current project , your involvement in your job and how you understand basic data structures concept. They dont follow a pre-fixed pattern but use feedback from one interview to ask questions in the next interview. People who have good hands-on experience and can take ownership in their tasks are likely to succeed at Microsoft interviews. More than the coding or design knowledge its about problem solving and your approach.