Microsoft India Senior Software Engineer L63

microsoft logo
microsoft
Senior Software Engineer L63India4.5 yearsRejected
November 4, 202523 reads

Summary

I applied directly for a Senior Software Engineer L63 role at Microsoft and underwent several technical and managerial rounds. Despite successfully navigating algorithm-based coding, system design, and behavioral questions, the hiring manager raised concerns about my years of experience, ultimately suggesting a role downgrade.

Full Experience

Microsoft India Senior Software Engineer L63 Interview Experience

I applied directly via the portal for a Senior Software Engineer (L63) role. The interviews were scheduled to be conducted within a single day. The recruiter initially shared invites for the first two interviews, and upon clearing those, I received invites for the remaining rounds.

Round 1: Data Structures & Algorithms and System Design Discussions

This round started with a coding problem:

  • Problem: Given a list of packages with dependencies, where dependency[i] = [a, b] means package 'a' requires package 'b' to be installed before it. I needed to provide the order in which these packages would be installed.

Since I finished the coding problem early, the interviewer moved on to some open-ended system design discussions. We covered:

  • How to reduce system latency.
  • Strategies to handle high throughput.
  • Techniques to improve scalability and fault tolerance.

Round 2: Custom Trie Problem

The interviewer spent the first 15 minutes discussing a complex problem I had solved previously, focusing on how I identified the issue and arrived at the solution. Following this, I was given a coding problem:

  • Problem: Implement two functions: addWord(string word) to add a word to the dictionary, and getWords(string pattern) to return the three lexicographically smallest words that start with the given pattern.
  • Follow-up: Handle cases where the pattern contains a dot (.), representing a wildcard where any character (a–z) can appear at that position. The solution still needed to return the three smallest lexicographical matches efficiently.

Round 3: High-Level System Design (HLD)

This round focused on High-Level Design. I was asked to design a Key-Value store similar to DynamoDB. The interviewer was excellent, engaging in a collaborative discussion rather than a direct interrogation. He listened closely to my responses, asked probing questions, and explored alternative approaches and in-depth concepts. I truly enjoyed this round, despite feeling nervous with all the questions. The interviewer gave me positive feedback, mentioning I had good knowledge of system design, which made my day.

Round 4: Hiring Manager Round

The hiring manager reviewed my resume and noted that I had less experience for the L63 role. They quickly asked if I was open to a downgrade. I was asked to describe my strengths and weaknesses from the perspective of my manager, peers, and myself. Additionally, I had to draw a detailed diagram for one of my current projects, including its throughput, latency, and other relevant details. We also discussed the project in depth. Generic questions were asked, such as the difference between a thread and a process, an explanation of the CAP theorem, and some network protocol-related questions.

I felt I answered all questions fairly well. However, at the end of the interview, the hiring manager provided feedback that I might not meet the bar for L63 and reiterated the question about considering a downgrade. This felt quite disheartening after performing well in all the preceding rounds, to be low-balled due to my years of experience.

Interview Questions (9)

Q1
Course Schedule II / Package Installation Order
Data Structures & Algorithms

Given a list of packages with dependency on other packages. You need to provide the order in which you would install these packages. The list of package was such that dependancy[i] = [a, b], which meant that package a requires package b to be installed before it.

Problem link provided for reference: https://leetcode.com/problems/course-schedule-ii/

Q2
Reduce System Latency
System Design

Discussion on techniques and strategies to reduce system latency.

Q3
Handle High Throughput
System Design

Discussion on methods to handle high throughput in a system.

Q4
Improve Scalability and Fault Tolerance
System Design

Discussion on techniques to improve system scalability and fault tolerance.

Q5
Trie with Wildcard Pattern Matching and Lexicographical Smallest
Data Structures & Algorithms

Implement two functions: addWord(string word) which adds the word to the dictionary, and getWords(string pattern) which returns the three lexicographically smallest words that start with the given pattern.

Follow-up: If the pattern contains a dot (.), it represents a wildcard where any character (a–z) can appear at that position. We need to handle this case efficiently and still return the three smallest lexicographical matches.

A similar problem link was mentioned: https://leetcode.com/problems/implement-trie-prefix-tree/

Q6
Design a Key-Value Store (DynamoDB-like)
System Design

High-Level Design (HLD) for a Key-Value store similar to Amazon DynamoDB. The discussion focused on the design principles, alternatives, and in-depth aspects of such a system.

Q7
Strengths and Weaknesses
Behavioral

Discuss strengths and weaknesses from the perspective of my manager, peers, and myself.

Q8
Difference between Thread and Process
Other

Explain the difference between a thread and a process.

Q9
CAP Theorem
System Design

Explain the CAP theorem.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!