Introduction
I interviewed with Microsoft for an SDE 2 (L62) position. With 6.3 years of experience as a SSE at a product-based company, I was eager to explore this opportunity. This is a detailed account of my interview process.
Application and Initial Contact
After applying through referrals, I quickly received the online assessment link. Within a week, I began preparing for four interview rounds.
Online Assessment
Question 1: This question involved manipulating a 2D matrix using prefix sums.
Question 2: This question involved sorting two lists and finding the maximum possible answer with a given K.
Round 1: DSA (1 hr)
Question 1: Given n friends, each can remain single or pair up with another. Each friend can only be paired once. Find the total number of ways friends can remain single or paired.
Question 2: This was an unseen question. Given a set of elements and a scoring function, find the subsequence that maximizes the score while satisfying a constraint. Approach: Sorting + Min heap
Question 3: Find prime numbers using the most optimized way (Sieve Theorem).
This round concluded positively.
Round 2: Low Level Design (1.5 hrs)
Question 1: Design the low-level design for a board game similar to Sudoku. Implement all classes and interfaces, including the functionality to fill all cells. Approach: I wrote all classes and fully functional code for filling all cells.
Question 2: Design a generic cache class using OOP principles for flexibility and extensibility. Extend this class and implement an LRU cache. Approach: I discussed possible algorithms and wrote fully functional code for both questions.
This round went well. Personal verdict: Strong Hire
Round 3: Principal Architect, High Level Design (1 hr)
Question: Design Cricbuzz. This involved addressing various requirements and scale issues, answering follow-up questions precisely.
This round went very well. Personal verdict: Strong Hire
Round 4: Hiring Manager, DSA + High Level Design (2 hrs)
Question 1: I discussed a problem statement from my current project and its technical solution in detail. This included the problem's scope, business case, coding, deployment, and potential improvements. I also answered questions about NFRs and the high-level architecture, including Kafka and its selection rationale.
Question 2: Print 1 to 100 using three threads. Write the implementation of a thread-safe singleton class.
Question 3: Given the root of a binary tree, return the zigzag level order traversal of its nodes' values.
Question 4: Design an OTP service with multiple OTP generation locations. Each requesting service should receive a unique OTP per user and service. Approach: I spent most of the time discussing high-level design, covering scalability, unique OTP generation, database design, and microservice considerations.
While I struggled slightly with the threading question, I successfully addressed the other problems. Personal verdict: Hire
Result After the final round, I received a ""hire"" confirmation a week later.