I gave the interviews as part of the hiring drive Microsoft was having. The interview was a 4-step process:
1. Coding Round (Day 1) Two very easy questions (one on matrix manipulation and the other on array manipulation). Don't remember the exact questions, but they were easy.
2. Technical Interview - 1 (Day 1) The interviewer was very friendly. Asked a little bit on my current and past projects, why I wanted to switch, and some problem which I had enjoyed solving.
Next, he asked a high level overview on how to design a multi-reader multi-writer map (where reader to writer ratio is approx 100 to 1).
Lastly, I was asked to (pseudo) code up the solution to the following problem:
Given n processors and m processes, where the time taken by each process is known, how do I optimally schedule the processes across the processors (minimum running time). I was able to solve it, and a follow up was also asked where there is a stream of processes coming in (the running time of process is known).
3. Technical Interview - 2 (Day 1) Again, a very friendly interviewer. I was asked to (pseudo)code up a string related problem in C (language specific because he wanted to see how I handled the case of string termination in C where there is no size associated with the string data structure).
Next, he asked a design related problem where there are multiple users logging in to a system using multiple devices. The login state can be of 4 types (login initiated, login terminated, login successful, and sth else). We want to query the total states per user -- for this question, he wanted me to come up with steps like login terminated cannot happen before login successful, etc, so he did not explicitly mention those conditions.
Being verbal and asking questions helped me a lot.
4. Technical Interview - 3 (Day 2) (probably the HM round, but not sure. This was supposed to be the last round)
The interviewer seemed very strict (might be my bias, but he didn't throw a very warm vibe).
Initial questions were what I did in my project. He then questioned my approach and asked why I didn't go for alternative approaches.
Next, he asked me to design a lock which supports 10 entries at a time. Next, he asked me to design a map, a set and a vector.
Lastly, he asked me to design a multi-user simultaneous text editor. I was dumb-founded. I tried solving this using linked lists, but was unable to do so.
I got the rejection mail from HR the next morning itself. I was kind of expecting it after the last round, nevertheless, I was disheartened.