I applied online and received an email stating that Microsoft would like to interview me as they were coming to my university's campus in a week.
The on-campus interview was a 30-minute session with a manager from the Office 365 team. The interview began with personality questions, followed by computer science "trivia" covering basic concepts like object-oriented programming.
Next, we moved on to a whiteboard technical question. We spent most of the time on this question, but did not move on to writing code on the whiteboard. Instead, we discussed potential solutions, providing examples and talking through their space and time complexities. As time ran short, more "trivia" was asked, this time about data structures, followed by questions for the interviewer, and that concluded the session.
Four days later, I received an email informing me that I had advanced to the second round in Redmond, WA.
The on-site interview consisted of four 45-minute one-on-one interviews with various individuals from the Azure Cloud team. Each interview followed a similar structure to the on-campus one: the first five minutes were for a personality question, followed by a technical question for the majority of the time, and optional questions for the interviewer at the end.
Each of the on-site interviewers began the conversation by introducing themselves and discussing their positions on their respective teams. Three interviewers were from the Azure Storage division: one engineering manager and two engineers. The fourth interviewer was an engineer from the Azure Health Division, who helps maintain the backbone of platform updates.
Two of the four whiteboard questions involved Binary Trees. The third question was array-based, and the fourth was a task scheduling question. After a basic answer was provided for each question (with or without written code on the board), the interviewer would ask about the drawbacks of the solution and whether its efficiency could be improved in terms of time or space complexity. They then began modifying the original question to impose more restrictions (e.g., solving the problem with O(1) space complexity).
As we left the interview room, the interviewer would either take a picture of the code on the board or erase the board.
Oddities about my personal experience:
In my first interview of the day, after the question was asked and we began developing examples, I struggled to identify a pattern to formulate an answer. The interviewer then proceeded to create more test cases. However, during this process, both the interviewer and I became confused multiple times while trying to find a "solution" for the test cases. Miscommunication occurred frequently, and we never moved on to coding the solution before time expired.
All four interviewers maintained a monotonic tone during the coding question, providing few visual or auditory responses to indicate whether I was performing well. However, each interviewer showed interest in my personal background and asked multiple questions for additional details while explaining personal questions before having to move on.
Although inquired about, none of the interviewers seemed to note or care about data validation for their respective questions.
Given an array of n elements, which contains elements from 0 to n-1, with any of these numbers appearing any number of times. Return a Boolean indicating whether a duplicate exists in the list.
2nd Level/Bonus: Do this with O(1) space complexity.
3rd Level: Is there a better solution if you are allowed to modify the existing data array?
Given a binary tree, find its diameter, where the diameter is defined as the length of the longest path from one arbitrary node to another.
Given a binary tree, each node has a null "next" pointer, which points to the next node in the same level (left to right). Update the given tree so that each node has a value in its "next" field.
Level 2/Bonus: Do it in O(1) time, using iteration instead of recursion.
Given two arrays that are sorted from min to max, return the X smallest pairings based on the sum of the pairing A[i] + B[j].
Given a list of commands in the format [function name, ENTER/EXIT, time event occurs], return a list of the durations that each function occurred for, along with the name of that function. Note that the duration is inclusive of the start and end time.
Example of input: F1 ENTER 110 F2 ENTER 120 F3 ENTER 130 F3 EXIT 140 F3 ENTER 150 F3 EXIT 160 F2 EXIT 170 F1 EXIT 180
Level 2/Bonus: If you've already entered a function and you are given a command to enter a new one, it's now a sub-process of the one already started. Return the duration of each function without the time spent in sub-functions. (e.g., in the above example, F2 is a subprocess of F1, F3 is a subprocess of F2, and so on.)
The following metrics were computed from 102 interview experiences for the Microsoft Software Engineer (Internship) role in Redmond, Washington.
Microsoft's interview process for their Software Engineer (Internship) roles in Redmond, Washington is incredibly easy as the vast majority of engineers get an offer after going through it.
Candidates reported having very good feelings for Microsoft's Software Engineer (Internship) interview process in Redmond, Washington.