I got referred by a college senior. The process took 2 weeks in total.
1 telephonic round, asking about my experience as some basic DS questions.
After 4/5 days, got invited to interview with them in their Bangalore office.( I was already in Bangalore)
4 Back to Back rounds with 1 hour lunch break in the middle. All the rounds went on for 45 mins to 1 hour roughly. Hiring manager round went on for 2 hours.
He asked me to introduce myself, then went on asking about my previous projects etc. Then he asked to find LCA in Binary Tree.
This was a fairly easy question . I was asked for approach first. Once i told him my approach, he then asked to use the white board to code it up. After coding, he asked me if I could further optimize it. He hinted me on the number of extra recursion calls that happened even after finding the lca. I figured out and edited the code to meet the requirements. After that, he asked me to test my code and what all cases i should consider. (Use as many edge cases/negative cases as possible. Microsoft is obsessed with recursion and edge cases).He seemed satisfied with it. He then asked me if this was a BST, how would I have approached the question. I had to edit the code to run for BST after discussing the approach. (Time complexity and Edge Cases) Then he went on asking why I wanted to switch so early (as I had joined another firm 3 months before) and if I had any questions.
A quick round of introduction. Design a Video recommendation engine and gave me Song genre and artist as a use case. Discussed the approach first. I used simple tree like structure for metadata storage and my approach was based on song rating and watch time. She asked me a lot of questions from it. Asked me to write class diagrams on white board. After writing the class diagrams, she asked me what design pattern i followed, how I would scale it up, what storage I would prefer and why. Next she asked me this : “Suppose a kid draws a regular geometric shape in an MS Paint blank page, write an algorithm to identify the shape.”. She was waiting for me to counter question her about the various scenarios, and the question eventually boiled down to identifying a shape in a 2d matrix, where 0 means not filled with colour, 1 means filled with colour.I was expected to write modular code with proper naming of variables and functions. She seemed satisfied with my answer. Then she asked if I have any questions for her etc.
The interviewer was another senior person. He introduced himself and told about his role in Microsoft. He then asked me to introduce myself and we had a discussion about my previous projects. He then asked this : “There is a source number and a destination number. You can keep on doing any of the following operations: *2, /2, +2 on the source. You have to come up with a Yes or No if the destination is achievable” . He asked me to write the code on white board. After that, he asked me if this was an application that i had developed and wanted to ship it, what all things I should be considering before shipping it. What all tests I would be doing before it was deployed into different environments, how will I make sure that there is no stack overflow due to a recursive function in my application (I came up with counter approach) . What all things to consider while load testing my application etc. He asked some more questions on rate limiting, thread synchronization and locks. After a long discussion, he asked me the same question as why I wanted to join MS (Duh!), why switch so early, and some more behavioral questions.
The interviewer was a very senior person (Director Level) .He first asked me some behavioural questions. why MS ?, why leave so early ? etc . Then we had an in depth discussion on my previous projects and my role in those projects. Then he asked me for Minimum number of platformss question. After giving the approach, he asked me to code it on white board (also asked time complexity) He then modified it to this : ” Suppose, every platform Pi has a tea seller and every train Ti has Xi people boarding the train. Now, if every passenger drinks tea before boarding the train, how will you assign the trains to stations so as to minimize the maximum difference of profits of tea-sellers (assume tea price to be constant). This modification took me some time to understand. He showed a little agitation at first (may be just to see how interviewees tackle unfavorable situations) but then we ended with a good laugh. I asked some counter questions and finally came up with a heap based approach. He asked me the time complexity and then asked me to code it on whiteboard. (All the codes were on whiteboard for all the rounds) . He seemed satisfied with my answer . He went on asking some more behavioral questions.
Important points: Ask questions if you have any confusion. Practise white-board coding a lot ! Have good knowledge of Time complexity (They will ask you after every code u write). Consider all edge cases while testing your code. Prefer recursive solutions if it doesnt increase time complexity.
Finally after a week, I got a call from the HR and got the Offer !! Thanks to GeeksForGeeks for helping me out with the preparation.