Interview with Microsoft
Microsoft and other big tech companies frequently organize recruiting events in different countries to recruit engineers. These events are mostly organized for college hires. However, it isn't unlikely for an industry candidate to be interviewed in one of these events. I have seen an announcement for one of these events while working full time in a software research company and pursuing my masters degree at the same time. The event was organized by Microsoft Bing. I sent my resume to a recruiter via e-mail. It took a month for another recruiter to contact me about my application. I ended up in an on-site event organized for Microsoft Business Solutions Division.
The first step of the process was a 30-minute phone interview. This step exists to make sure that you have the required level of competence (programming/communication skills, background, fluency in English etc.) to be invited for an onsite interview. You might have the phone call with a recruiter or an engineer. Agenda of the call and questions are similar for most candidates. The questions I was asked, as far as I could recall, were:
- Coding: How do you understand that a piece of code is good?
- Testing: How do you test a calculator?
- Abstraction: How do you describe Internet to a child?
- Tricky question: You have 9 identical coins. 1 is heavier than others. Find the heavier one using a scale. You are allowed to use the scale twice.
- Experience: What are the languages you have coded in? How do you make the programming language choice for a project?
- Background: While going over your resume, you are asked questions about one of the projects you worked on:
- How many lines of code did you write in the project?
- What are the difficulties you faced? and How did you solve them?
About two weeks later, I was invited to an onsite interview to be held 7 weeks later in Dubai. I am not lucky when it comes to Visa Applications: I couldn't get a visa on time to attend the interview. Instead of interviewing in Dubai, we setup a Skype interview.
I was home on interview day. It was comfortable. However, I had a hard time explaining technical details because of not being in the room physically. Furthermore, it is expected that you write your code and describe your reasoning aloud on a white board during these interviews. In my case, we used websites which are created for online interviews and these websites didn't have a white board functionality.
Here is the list of interview questions:
- Session 1: A manager from Microsoft Azure asked a question about node deletion on a doubly linked list. It is one of the easiest questions you can get for such an interview. I described the linked list structure, the algorithm and the reasoning behind this data structure quite well. However I couldn't code the solution well.
- Session 2: This session was full of questions and answers. We didn't have any free time to chat. He was a manager at Dynamics CRM. He first asked about the data structure I would choose to store a huge number of strings. He progressively tightened the restrictions and I ended up proposing a B+ tree-like graph data structure where the children are stored in hash maps in the end. He showed a great interest on the solution. He asked what method I would write if I am asked to provide an API of this solution. I proposed huge number of method alternatives which include limits, offsets, subsets, frequency, popularity and others
- Session 3: Interviewee was a manager from Microsoft Commerce - Online Services. She asked me to sort a list of strings which will be read from a file. She asked my algorithm (i.e. reading file, storing content, sorting, writing back etc.). Then she wanted me to compare various sorting algorithms, their algorithmic complexities, my reasoning for selecting one over the other in this problem, my data structure choice and test cases for the code. Considering that file can reside in different types of disks and can have huge number of strings. Expressing your thoughts aloud while describing your solution is important for you to relax and for interviewee to understand. We also discussed a couple of points about organizational structure in Microsoft.
- Session 4: Another manager from Microsoft Azure asked me to ask questions to him. I had a couple of questions about the invisible parts of Azure and scalability issues in a cloud platform. We talked about Microsoft culture and completed the session.
I received an offer from Dynamics CRM team a couple of hours later in the day.
Throughout the whole process, candidates constantly receive updates from Microsoft regarding logistics and the interviews. Every candidate is provided with technical resources.
I want to list important qualities that can help you during these interviews and what employers want to see to make a hiring decision:
- Strong technical aptitude in coding and testing.
- Communication skills. Communicating well (both technically and socially) matters. Engineers communicate with their colleagues, business partners or customers everyday.
- Problem solving abilities. You can increase your problem solving abilities by attending coding competitions or experiencing product development.
- Being smart. You should be able to solve tricky questions.
- Customer focus. Applies to any position in the industry. This is especially important for Microsoft.
If you believe you have all these skills, feel free to send your resume to me.
Good Luck!
September 2013