Microsoft SDE2 L61 interview experience

microsoft logo
microsoft
SDE IIOffer
March 28, 20243 reads

Summary

I successfully navigated a multi-round interview process for an SDE2 L61 position at Microsoft, ultimately receiving an offer. The process included comprehensive coding challenges, a system design interview, and a final behavioral assessment.

Full Experience

I secured an interview at Microsoft through a referral and was directly contacted by HR, bypassing the initial coding test. My interviews were originally scheduled for February 2024 but were postponed three times by HR, which inadvertently gave me extra time to prepare.

Round 1 (1-1.5 hrs): Coding & Data Structures

This round felt like a screening given I didn't have a prior coding test. After a basic introduction, we discussed my resume briefly. The interviewer then delved into fundamental data structures:

  • What is a HashMap, and its time complexities for insert, delete, and get operations? I approached this by explaining the underlying implementation.
  • What is a BST? I answered this, and then was given a coding question.
  • The question involved connecting all nodes to their right neighbors in a tree. The interviewer mentioned it was a complete BST, which simplified the problem significantly. I wrote my solution in Codility, dry-ran it with test cases, and explained the time complexity. The interviewer seemed to be testing my confidence even when I gave correct answers.
  • Next, we discussed Heaps. I explained its implementation and derived the time complexities for insertion and deletion. When asked about building a heap from an array, I stated O(n log n) and defended it, though the interviewer seemed to be checking my conviction rather than correcting the answer.

The round concluded after I asked a few questions about Microsoft's culture.

Round 2 (1.5 hrs): Coding

After a quick introduction, we jumped straight into a coding question on Codility:

  • The problem was to find the maximum width of a tree. The tree could be non-complete, and the width was defined as the length between the first and last node on each level. I initially took a wrong approach but quickly pivoted to the correct method using 2i and 2i-1 for child indexing. I had to implement the full solution, including creating test cases, and I was fortunate that both my attempts ran without compilation errors, allowing more time for logic explanation.

Again, I asked some culture-related questions at the end.

Round 3 (1.5 hrs): System Design & Coding

Two days later, HR scheduled my third round. This was a proper design interview with a very experienced interviewer. After an intro and a resume deep dive, he started with a coding question:

  • Sum of integers given as a linked list (arbitrarily long). I discussed several approaches and started coding an O(n) solution. I identified a trailing '9's edge case that I intended to add, but due to time, we moved on.
  • He then asked if I knew OS or networking, to which I replied no, explaining my non-CSE background and focus on coding and design.
  • The main system design question was to design a library system. I clarified whether he wanted HLD or LLD first, starting with HLD as requested. I covered metadata, features, CAP theorem, database choices (SQL/NoSQL), scalability, and typical client-server request flows. We walked through a user scenario and discussed scaling strategies.

It took a week for HR to get back, and I assumed I was rejected due to my non-CSE background. However, I was pleasantly surprised to learn all three rounds had positive feedback, and I was moving to the final AA (As Appropriate) round.

Round 4 (1.5 hrs): AA (Behavioral)

Typically, the AA round addresses areas where previous rounds might have shown weakness. For me, however, it was purely behavioral. The interviewer asked questions about myself, my resume, my work, and my working style.

I received an offer 2-3 days after this final round.

Interview Questions (7)

Q1
HashMap Fundamentals
Data Structures & AlgorithmsEasy

Discuss what a HashMap is, its underlying implementation, and analyze the time complexities for insert, delete, and get operations.

Q2
Binary Search Tree (BST) Fundamentals
Data Structures & AlgorithmsEasy

Explain what a Binary Search Tree (BST) is.

Q3
Connect Nodes to Right Neighbors in a Complete BST
Data Structures & AlgorithmsEasy

Connect all nodes in a complete Binary Search Tree to their right neighbors. This means populating a 'nextRight' pointer for each node, linking it to the node immediately to its right on the same level.

Q4
Heap Fundamentals
Data Structures & AlgorithmsEasy

Explain what a Heap is, its implementation, and the time complexities for insertion and deletion. Also, discuss the time complexity for building a heap from an array.

Q5
Maximum Width of Binary Tree
Data Structures & AlgorithmsMedium

Find the maximum width of a binary tree. The tree is not necessarily complete, and the width is defined as the length between the first and last non-null node on each level. The approach should involve using 2i and 2i-1 for getting child numbers from a parent node.

Q6
Sum of Numbers Represented by Linked Lists
Data Structures & AlgorithmsMedium

Implement a function to sum two numbers represented by linked lists, where each node contains a single digit. The numbers can be arbitrarily long.

Q7
Design a Library Management System
System DesignHard

Design a library management system. Initially, focus on High-Level Design (HLD), then proceed to Low-Level Design (LLD) if time permits. Consider metadata, features, CAP theorem, database choices (SQL/NoSQL), scalability, and client-server request flow.

Preparation Tips

I took advantage of the HR-induced postponements, which gave me additional time to prepare. This extra window was particularly useful for learning about system design concepts before my third round.

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!