Microsoft Senior Software Engineer Interview
Round 1: Face-to-face interview (DSA + behavioral)
Course schedule (topological sort) - completed within 20 minutes The rest was general discussion about my current role.
Round 2: Face-to-face interview (System design + coding)
Design Elastic search, assuming no detailed knowledge of Lucene index. How to scale and guarantee fault tolerance? Follow up: How to search for the most important words in a data stream. I clarified the definition of "importance." The interviewer defined it as the most frequently used word. I proposed a short method using count-min sketch and a longer method using MapReduce or Flink for aggregation. I also discussed duplicate prevention using Kafka transactions and Flink. Follow up: Some words like 'I', 'am', 'he', 'she' are common but may not be important. How to handle that? I did not have a complete solution besides using a pre-generated offline list of words to skip in the data pipeline. I also mentioned that word meanings vary depending on context.
Last 10 minutes: Coding question on intervals, similar to Merge Intervals. Given a list of meetings with start and end times, find conflicting meetings. Follow up: Find the maximum number of meetings that can be scheduled. I did not complete the follow up due to time constraints, but the interviewer was satisfied with my approach.
Round 3: DSA + API Design + Design pattern + behavioral
Started with API design. Discussion of my achievements. Last 30 minutes: LRU cache - solved in 20 minutes. Last 10 minutes: Thread-safe Singleton implementation.
Round 4: Hiring manager
Behavioral questions for 40 minutes. Coding for 10 minutes: Move all zeros in an array to the top without changing the order of non-zero numbers (similar to Dutch national flag problem). Due to time constraints, I provided an O(n^2) solution.
All four rounds were sequential; passing each round was required to proceed to the next.
Feedback: I received a call from the recruiter the next day stating that the team would no longer hire for senior roles in a certain region. They offered me an SDE2 position, which I declined. I requested to interview with other Azure teams.