I recently completed an interview process for a Senior Engineer position at Microsoft. The process consisted of an initial online assessment and three technical rounds. Here is a summary of my experience:
Round 1: Data Structures and Algorithms (DSA) This round focused on DSA, but also included questions about REST API concepts and async/await. I was presented with two DSA problems:
A doubly linked list problem, which I solved optimally. However, the interviewer insisted on the complexity being expressed as O(n) instead of O(L), where L represents the length of the list.
A string-related problem. Due to time constraints (spent discussing REST and async concepts), I initially offered a 2<sup>n</sup> solution, followed by an optimized dynamic programming approach with memoization. Despite solving the problems, the interviewer seemed dissatisfied, and the interaction was somewhat challenging. I believe this round resulted in a "No Hire" decision.
Round 2: Low-Level Design (LLD) I was asked to design a system for a Sudoku game. I provided a comprehensive design, which the interviewer appeared satisfied with. Towards the end, the interviewer asked how the design could be adapted for a Chess game. While I believe knowing this expectation beforehand would have been beneficial, the overall outcome for this round was "Hire."
Round 3: System Design & DSA This round was conducted by an Engineering Leader. I addressed a medium-level DSA problem and implemented a solution with O(n log n) time complexity. Unfortunately, I made a mistake when discussing the time complexity. For the High-Level Design (HLD) question, I was asked to design a service to return data for the last 5 minutes. My design was sound, but I overlooked the "last" keyword and stored all records instead of limiting it to the most recent 5-minute window. The interviewer pointed out this oversight. This round resulted in a "No Hire" decision.
Reflection: I successfully solved all the DSA problems, but I made errors in explaining time complexities and missed key details in the HLD round. The first round was also affected by the interviewer's demeanor. Despite my best efforts, I was not successful. However, I gained valuable insights and will use this experience to improve my performance in future interviews.