Microsoft | SDE 1 | EMEA | April 2021 | Reject

microsoft logo
microsoft
Software EngineerEMEA2 yearsRejected
May 10, 202118 reads

Summary

I interviewed for an SDE 1 position at Microsoft in April 2021, which involved an online assessment, a technical screening, and a multi-round virtual onsite. Despite solving many problems, I was ultimately rejected.

Full Experience

I applied for a Software Engineer role with over two years of experience and received an interview email approximately two weeks later. The process was structured as follows:

  1. An online test consisting of three tasks to be completed within 120 minutes.
  2. A 30-minute technical interview call with a Senior Engineer.
  3. A virtual onsite interview, comprising four interviews over Microsoft Teams, ideally scheduled for one day.

For the online assessment, I faced three questions:

  1. A problem requiring me to write a solution that, given an integer N (in range [-8000, 8000]), returns the maximum possible value obtained by adding one '5' to it.
  2. A Bulb Switcher question, very similar to the one on LeetCode.
  3. A Max Chunks problem, similar to Max Chunks to Make Sorted II on LeetCode.

I managed to solve these questions in about an hour and subsequently received an email for the second interview within a week.

Technical Interview:

This round began with a discussion about my projects and background. Following that, there were questions about Threads, SOLID principles, OOP principles, and other resume-related topics. We then discussed trees, specifically Binary Trees, BSTs, and balanced trees, covering concepts like height and depth, and the complexity of algorithms to find them. I implemented a getWidth function for a TreeNode. A week later, I was invited to schedule a three-round interview process over two days.

Online Interview - 3 Rounds:

  1. PRINCIPAL SOFTWARE ENGINEER: This round involved questions about my current position and projects, including challenges, communication with team members and leads, and taking responsibility. After that, I was asked to find the three biggest numbers in a huge list. My approach involved using a size-3 priority queue, updating it whenever a number larger than the smallest in the queue was found. The interviewer then added more scenarios, such as handling non-distinct numbers and finding top K elements, asking me to explain my approaches for each.
  2. SENIOR SOFTWARE ENG MANAGER: Again, this round started with questions about my projects. Then, a system design question was posed: Design a platform, similar to Facebook with over a billion users and groups, to identify potential users involved in criminal activities. These users would be within groups of no more than 1000 people and have no friends outside their group. There could be many such groups. We were given lists of users and their friends. I struggled to find a general approach, although I considered identifying people with huge friend lists to mark as non-criminal users.
  3. PRINCIPAL SOFTWARE ENGINEER: This round also focused on project-related questions, such as creating a reusable framework module and helping team members use it. Following this, there was a design question for a platform like LeetCode, specifically for its competition part. I had to consider how to assess different programming languages, assign points, design servers, and enhance user experience.

A week later, I received a phone call for the fourth round with a PRINCIPAL GROUP SWE ENG MGR.

  • He asked about my greatest project, its challenges, and what I learned. Afterward, more concurrency questions came up. I was asked to explain a semaphore to someone unfamiliar with threads, which I couldn't recall. He then asked how to handle multiple threads accessing a common resource and other thread-related questions. Finally, there was a programming question from Codility: Given a singly linked list (e.g., a-b-c-d-e-f-g), rearrange it to connect elements from the head and tail alternately, resulting in a list like a-g-b-f-c-e-d. I also had to consider how to handle even-length lists. I solved it using a stack, but thought it might also be solvable with two pointers and list rotation.

The overall process was very quick compared to other big tech companies like Amazon, which often schedule interviews a month in advance and take about 2.5 months to complete. Meeting such experienced people from Microsoft was amazing. The questions often consisted of multiple parts with added scenarios, unlike Amazon where questions were often single-tap. Interviewers were very kind, explaining every case and their expectations. In contrast, my experience at Amazon, especially in the last round with an interviewer from Spain, was challenging due to the language barrier over video call. I believe the questions were explicit, but I lacked preparation in system design, so my next step is to take a course on it.

Interview Questions (9)

Q1
Add 5 to Maximize Integer Value
Data Structures & Algorithms

Given an integer N, return the maximum possible value obtained by adding one '5' additionally. The input N is in the range [-8000, 8000].

Q2
Bulb Switcher
Data Structures & AlgorithmsMedium

A coding problem conceptually similar to the LeetCode Bulb Switcher problem, where bulbs are toggled in rounds.

Q3
Max Chunks to Make Sorted II
Data Structures & AlgorithmsHard

A coding problem related to splitting an array into sorted chunks, conceptually similar to LeetCode's Max Chunks to Make Sorted II.

Q4
OOP/Concurrency/Tree Concepts
Other

Questions about Threads, SOLID, OOP principles, Binary Trees, BST, balanced trees, height and depth of a tree, and algorithm complexity to find them. I implemented a getWidth of a TreeNode function.

Q5
Find K Largest Numbers in a Huge List
Data Structures & Algorithms

Given a huge list, find the 3 biggest numbers. Discussed scenarios for non-distinct numbers and finding top K elements.

Q6
Design Platform to Identify Criminal Users in Groups
System Design

Design a platform, similar to Facebook with over a billion users and groups, to identify potential users involved in criminal activities. These users would be within groups of no more than 1000 people and have no friends outside their group. There could be many such groups. Given lists of users and their friends.

Q7
Design LeetCode Competition Platform
System Design

Design a platform like LeetCode, specifically for its competition part. Consider how to assess different programming languages, assign points, design servers, and increase user experience.

Q8
Explain Semaphore and Handle Shared Resources
Other

Explain semaphore to somebody that has no idea about threads at all. How do you handle multiple threads trying to access a common resource?

Q9
Rearrange Singly Linked List Alternating Head/Tail
Data Structures & Algorithms

Given a singly linked list (e.g., a-b-c-d-e-f-g), connect one from head and one from tail, so the final list is a-g-b-f-c-e-d. How to handle if the list is even length?

Preparation Tips

The post does not explicitly detail my preparation strategy, but I recognized a need to improve my system design skills based on the interview experience.

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!