Microsoft Redmond Interview Experience

CodeClub
5 min readMar 13, 2020

Introduction

I am Tanay Bhartia, a fifth-year Dual Degree student of the Dept. of Computer Science at IIT Kharagpur. I completed my internship at Microsoft during my fourth-year summer vacation and received a PPO. This placement season I had the opportunity to interview for Microsoft Redmond Office. The following blog contains my detailed interview experience for the same.

General Procedure

This year, Microsoft changed its procedure for Redmond interviews. Earlier, there used to be a single interview on the first day of placement season which involved questions based on Resume plus some HR discussions. These interviews were taken by a hiring manager from Redmond(someone from Redmond used to come to India to take these interviews). This year we had 2 interviews. The first one was a technical interview over Microsoft Teams (Video Call), taken by a hiring manager from Redmond. The motive of the first interview was to see the fit of a person and understand his/her interest. The second one was an HR interview taken by the Microsoft University Recruitment Team on the day of the placements.

Technical Round

The interview started with a discussion of my resume. The interviewer asked me about my interests. We talked about my various projects (started the discussion with MS intern, but was not given a lot of attention). He asked me about challenges in various projects and if I had previously worked on a team project and type of difficulties/disagreements that were resolved and how we did it. He didn’t go into a lot of depth regarding any of my projects and just wanted to get a feel of what sort of work I have done and my approach. This went on for some 20 minutes.

Then we moved onto technical Algo/DS questions. The first question that he asked me was to check whether a given Binary Tree is a BST or not. Seemed pretty easy, I quickly coded the solution on an online IDE using stacks (O(n) space). Then he asked me to improve it and use only O(1) space. This is a very basic question but I wasn’t able to solve it. The solution is to maintain just the stack top rather than the complete stack. Instead, I went towards a mini-maxing solution (takes O(n) space as well) at the time. Anyway, he told me the solution and then said that his next question was about mini-maxing that I just gave the solution to. This was supposed to be a very easy question and I messed it up.

The second question was: Given 100s of databases with random values. Each one may consist of millions of records and each one has infinite storage. We need to sort these databases globally. After sorting, any database can consist of any number of records (even allowed to store all of it in one database). Find a good way of doing this at such a large scale (millions of records).

My immediate response was to do an external merge-sort. This solution is correct but not at all optimal for our scenario. Then he asked to think a bit more. After a while, I told him that we need to create horizontal partitions of the distributed database (basically sharding, he wanted to hear the word sharding). After saying this, I knew that I was going in the right direction and just had to find a good way to partition the data (finding the pivot points for bucketing). This problem of finding a good pivot is tough as the sharding may result in very skew databases. Throughout the process, the interviewer helped me a lot by providing hints. After a while, I told him that we should do random sampling of the existing records from the DBs and find out the potential pivot points from them. Doing any operation on a million records is always time-consuming. By random sampling, we dilute our working set to some thousands and can hence pick up a potentially good pivot. They may not be optimal but are sufficiently good. After telling him about random sampling and how to do it, the interviewer himself then explained the algorithm to me. This is known as sample sort. By now, we were 55 minutes into the interview and this was supposed to be a 45-minute interview. After this, the interviewer told me about the work his team does. That was it for the technical round.

HR Round

We didn’t have any interaction with Microsoft after the technical interview. We got an email on the eve of day 1 of placements which had our time slots and explained the nature of the interview (only HR, no technical questions to be asked). I had the first slot among all the interviewees. The interviews started at 7:30 am.

So, the interviewer started by asking a brief introduction about myself. Then the interviewer asked me about what values I had learned at Microsoft. Then asked me to describe myself in 3 words. Strengths/Weaknesses. She then asked about team-work situations and how I manage my time. This interview went on for about 25 minutes and was mostly a conversation about the above-mentioned topics.

Suggestions/Tips for the Interviews

  1. For the HR round, I would say that you should always try to have a conversation with the interviewer rather than just saying your prepared monologue. Try to understand what it is that they are exactly trying to ask. Prepare basic HR questions such as strengths and weaknesses and learning at Microsoft (most important, don’t include just technical learning rather include your overall growth). Browse through Microsoft’s values and try to see what exactly you think you have developed and for everything you say always state an example from real life.
  2. I also looked up Gaurav Sen’s System Design videos on Youtube. I didn’t practice algorithms or CP as we didn’t expect technical round based on previous trends but one should practice some of that as well from now on.
  3. For the technical round, prepare your resume for every minute detail. Here are some basic pointers for CV preparation (a friend gave me these pointers):

a) Project elevator pitch (4–5 sentences max telling what your project was)

b) Challenges faced and how you handled them.

c) Hardest bug.

d) Conflicts if any / how you handled them.

e) What you learned (non-technical answer expected) such as working in a team, pair programming, designing an intuitive system is an acceptable answer.

f) What you learned (tech-specific answer).

g) Something unique you might have to say about this project in specific, like the motivation of working, etc (optional)

--

--