Microsoft | India | SDE 2(L62) | Selected
Summary
I successfully navigated four interview rounds at Microsoft for an SDE 2 position in India, ultimately receiving a job offer. The interview process covered data structures and algorithms, system design (HLD), and behavioral aspects.
Full Experience
I directly applied through Microsoft's career portal and was contacted by a recruiter on November 24th regarding an SDE 2 (L62) opportunity in the autopatch team within the WSD organization. After discussing my interest in Microsoft and how my background aligned with the role, two initial interview rounds were scheduled.
On November 28th, I completed Round 1, which focused on caches and concurrency. The interviewer began by asking about different types of caches, after which I was tasked with implementing an LRU (Least Recently Used) cache. This involved identifying the necessary methods and data structures, writing the code, testing it with examples, and explaining its time and space complexity. I was then challenged to make the code thread-safe and subsequently implement the class as a singleton, providing explanations for my choices. The round concluded with a question on the difference between inheritance and composition.
Immediately following, I had Round 2, a system design interview. The interviewer asked me to design a URL shortener. Although initially expecting an LLD round, upon clarification, the focus shifted to High-Level Design (HLD). I proceeded by outlining functional and non-functional requirements, performing capacity estimation, defining APIs, and sketching a high-level architectural diagram. I thoroughly explained my design components and discussed strategies to mitigate DDoS attacks within the proposed system.
After these initial rounds, I received positive feedback and was informed that a third round would be scheduled. However, the first attempt at Round 3 faced a reschedule due to technical difficulties. During this attempt on November 30th, the discussion centered on my current project, where the interviewer modified key requirements and asked me to redesign it. The call dropped multiple times, leading to its rescheduling.
On December 2nd, a new recruiter reached out, informing me that my profile was being advanced by them for the CPC team under the same Hiring Manager, emphasizing that this team was data-heavy. I confirmed my interest to proceed.
On December 6th, I completed the rescheduled Round 3. This interview began with questions about my current project, followed by discussions on how I, as a backend SWE, would adjust to a data-heavy team, and what unique contributions I bring to the role. Subsequently, I was asked to design a data telemetry system.
Upon successfully clearing this round, I was moved to the final AA (As Appropriate, typically a Hiring Manager or Bar Raiser) round.
Round 4 took place on December 8th and was led by the Hiring Manager. This extensive 1.5-hour round started with a deep dive into a challenging project from my past, covering my role, design considerations, challenges faced, how I overcame them, and what I would do differently if I were to redo the project. Subsequently, the HM asked for a High-Level Design (HLD) of a car parking system. After I drew the diagram, we engaged in an in-depth discussion on various components, database selection strategies, indexing, partitioning, query optimization, handling specific queries (including writing some), and transaction management. The round concluded with behavioral questions about managing difficult colleagues and resolving disagreements within a team.
On December 9th, I contacted the recruiter and received positive feedback, indicating that an offer was imminent. Over the next few days, I was asked to submit documents, had discussions regarding other offers and salary expectations, and was informed about a delay due to a system migration requiring a new job ID. Finally, on December 23rd, the recruiter called to congratulate me, discuss my preparation strategy, present the offer details (salary, locations, benefits), and confirm that the official offer would be extended that day. I received and accepted the offer on December 24th.
Interview Questions (4)
The interviewer asked about different types of caches I was familiar with, then requested an implementation of an LRU (Least Recently Used) cache. I had to identify the methods required and the appropriate data structures to use. After implementing the code, I tested it with examples and explained its time and space complexity. Following this, I was asked to make my code thread-safe. Subsequently, I was challenged to implement the LRU cache class as a singleton, and explain the different reasons why one might choose to make it a singleton. The round concluded with a question on the difference between inheritance and composition.
I was asked to design a URL shortener. Initially thinking it would be a Low-Level Design (LLD) discussion, I clarified, and the interviewer confirmed they were looking for a High-Level Design (HLD). I was expected to cover functional and non-functional requirements, capacity estimation, API design, and a high-level architectural diagram. A follow-up question was about preventing DDoS attacks in my proposed system.
After a discussion about my current project and behavioral questions regarding adapting to a data-heavy team as a backend SWE and my unique contributions, the interviewer asked me to design a data telemetry system.
Following an extensive discussion about a challenging project I worked on (including my role, design considerations, challenges, and lessons learned), the Hiring Manager asked for a High-Level Design (HLD) of a car parking system. After I presented the diagram, we discussed different components, database selection strategies, database indexing, database partitioning, query optimization processes, how to handle various queries (including writing a few sample queries), and transaction management.