Microsoft Interview Experience: Round 2 & 3
Summary
I recently interviewed with Microsoft, undergoing two technical rounds. The second round focused on data structures and algorithms, covering problems like word search in a grid and binary search in a rotated array. The third, and final, round was a system design interview where I was asked to design an ordering service. Unfortunately, I was not selected, primarily due to my performance in the system design round.
Full Experience
After successfully clearing the first round, I received an invitation for the second round, which was conducted by a female interviewer. She informed me that we would be solving two questions within the hour, which I acknowledged. The first problem presented was a classic: given a grid of characters and a target word, determine if the word exists within the grid. The word could be formed by moving horizontally, vertically, or a combination of both. My chosen approach involved a Breadth-First Search (BFS), initiating the search from all grid locations that contained the first letter of the target word. A crucial detail I implemented was to mark an index as visited only after it was dequeued, rather than upon pushing. This strategy is vital to ensure that a single index can be part of multiple potential paths being explored. As soon as I found the last letter of the word along any valid path, I returned true. I would classify this as an easy-medium difficulty question.
The second problem she posed was a very common and well-known algorithm: binary search in a rotated sorted array. For this, the solution primarily involves carefully applying specific conditions to correctly update the left (l) and right (r) pointers.
I received the results of this interview approximately two weeks later, confirming that I would be moving forward to the third and final round. Given it was the last stage, I naturally felt a bit nervous. The round began with the interviewer introducing himself; he was a very senior figure at Microsoft, with two decades of experience. He presented a system design question, tasking me with designing an ordering service for Microsoft that would enable companies to purchase licenses for various services. Being relatively new to system design concepts, I found myself unable to construct the solution in the structured manner the interviewer likely expected. However, I did engage in a thorough discussion about various aspects and components of such a service. This round also lasted for about an hour.
The final verdict was that I was not selected. My performance in the system design round was identified as the primary reason for this outcome, as I felt unprepared for that particular challenge.
Interview Questions (3)
Given a grid of characters and a word, determine if the word exists in the grid. The word can be found by moving horizontally, vertically, or in a mix of both directions. The interviewer asked me to find this word.
Perform binary search in a rotated sorted array. This was described as a very standard and famous question.
Design an ordering service for Microsoft. This service should enable companies to buy licenses for various Microsoft services.
Preparation Tips
My primary takeaway from this experience, particularly regarding the system design round, is that I need more preparation in that area, as my lack of readiness contributed to my rejection. Additionally, from having completed a couple of technical rounds at larger companies, I've observed that a significant portion of their questions revolves around Graphs and Trees. These topics seem to be preferred as they allow for more in-depth discussions with candidates.