Microsoft Interview Experience for SDE – II
During my career transition, Microsoft emerged as one of my prospective employers. A recruiter contacted me in mid-July to outline the hiring process and forthcoming steps. This post aims to encapsulate my comprehensive interview experience with Microsoft.
Note: My recollection of the interview questions isn’t perfect due to nerves, so I’ve collaborated with a colleague who recently underwent a similar interview to provide a thorough summary.
Round 1: (Online Coding)
The initial round involved two coding challenges. A score above 50% was necessary for shortlisting. The first problem of medium complexity was a variation of the stock buying and selling dilemma, akin to the one found [here](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/).
The second challenge was as follows:
Given two arrays of bits (sequences in base -2):
– Array A, length M, representing integer X
– Array B, length N, representing integer Y
For instance:
Input: A -> 011001011101011 (5730), B -> 001001111101 (-2396)
Output: 0101100010111 (Sum = 3334)
I solved the first problem completely and achieved 75% on the second.
Round 2: (DSA/Algorithm Virtual Interview)
This round featured two DSA challenges. It began with an introduction and a brief about my current role and the technologies I utilize. The first problem was a moderately difficult LinkedList question as Identify and repair a broken node in a circularly doubly linked list that isn’t correctly pointing to its next and previous nodes and the second was a simpler task to Construct a binary tree from a series of inputs, then perform and print a level-order traversal.
Round 3: (Design Interview)
Although scheduled for 60 minutes, this discussion extended to approximately 90 minutes. The focus was on high-level design and pseudocode for a given problem, which was to Design a user-friendly alarm system with functionalities to create, update, and delete alarms, including a mechanism to alert users at the set time. For this, I had to outline the High-Level Design (HLD) and the APIs for CRUD operations. Resources like [this one](https://www.focuslk.com/designing-an-alarm-clock/) are available for reference.
My colleague faced a different design challenge:
- Create a high-traffic coding contest platform capable of handling a surge of submissions at closing time, estimated at around 10^6 transactions per second.
- Design problems have no definitive solutions; it’s crucial to list requirements clearly and communicate your thought process to the interviewer.
Round 4: (Hiring Manager Round)
The final round commenced with an introduction, followed by database-related inquiries and behavioral questions. The technical questions were:
- Advantages & Disadvantages of SQL and NoSQL databases.
- The appropriate database choice for processing user payments.
- Scenarios favoring NoSQL databases.
- The feasibility of adding a new column to a large SQL table.
- Crafting a query to identify the top five highest-earning employees from Bangalore with over three years of service.
I trust this post will be valuable to those preparing for their interviews.
Thank you! ?