Microsoft SDE Intern Interview Experience
💼 LTIMindtree Interview Experience (On-Campus) | Fresher | 2026
Salesforce SMTS | Interview Experience | Rejected
JPMC | SDE2 (Associate) - Java Backend - Interview Experience + Compensation
Microsoft - SDE2 - Coding Round
Microsoft Azure | SSE | Bangalore | Oct 2021 | OFFER
Summary
I successfully interviewed for a Software Engineer (SSE) position at Microsoft Azure in Bangalore in October 2021 and received an offer. The process included a Codality test with easy DSA problems, followed by multiple onsite rounds covering data structures, algorithms, system design (TinyURL HLD/LLD), code review, project discussions on scalability and fault tolerance, and a final hiring manager discussion with behavioral questions.
Full Experience
I had a comprehensive interview experience for the SSE role at Microsoft Azure in Bangalore, India. The process started with a Codality test which included three easy coding questions:
- One involved string manipulation to check if all 'a' characters appear before all 'b' characters.
- Another required debugging a given binary search implementation with a maximum of three corrections allowed.
- The third was an object-oriented programming (OOO) question.
Following the Codality test, I proceeded to several F2F technical rounds.
F2F-1
This round focused on data structures and algorithms. I was given a problem involving a circular list: 'Given a list of numbers and an integer m, I had to simulate repeatedly jumping m positions from the current index and removing the next element until only one remained.' I proposed a solution using a circular doubly linked list to efficiently handle removals and circular jumps. I also discussed an optimization to reduce iterations for m values larger than the current list size by using the modulo operator (m % list_size) in each step, as the list size changes.
F2F-2
This round involved a code review exercise, where I had to analyze a provided code snippet and suggest improvements. This round also included a System Design question on implementing TinyURL, requiring both High-Level Design (HLD) and Low-Level Design (LLD) discussions, with an emphasis on Object-Oriented principles.
F2F-3
This round delved into my previous projects, with the interviewers particularly keen on understanding my experience with scalability, availability, and fault tolerance in my past work. Another algorithm question was posed: 'Given a list of connected triangles, identify and return all boundary edges.' I solved this by maintaining a map to count the occurrences of each edge across all triangles; edges with a count of one were identified as the boundary edges.
Hiring Manager Round
The final round with the Hiring Manager was primarily a discussion about my previous projects and standard behavioral questions, often framed as 'Tell me about a time when...' scenarios.
I am pleased to share that I received an offer for the SDE2 position.
Interview Questions (8)
Given a string, return true if all 'a' characters appear before all 'b' characters.
Examples:
'aaabbb'= true'abb'= true'abab'= false'bbb'= true
The code for binary search was given. I had to do some corrections in it (maximum 3 corrections allowed).
It was an OOO (Object-Oriented Programming) question.
Given a list of numbers and an integer m, you start at index 0. In each step, you jump m positions forward in a circular manner. After landing on a new position, you remove the element immediately following it (also in a circular manner). This process continues until only one element remains in the list. Return the last remaining element.
Example: List -> [1, 3, 5, 4, 2] and m = 2, Output -> [2]
Trace:
[1, 3, 5, 4, 2]-> (From index 0, jump 2 to '5' at index 2. Remove element after '5', which is '4' at index 3.) ->[1, 3, 5, 2][1, 3, 5, 2]-> (From '5' at index 2, jump 2 in new list of size 4. Index 2 -> (2+2)%4 = 0, which is '1'. Remove element after '1', which is '3' at index 1.) ->[1, 5, 2][1, 5, 2]-> (From '1' at index 0, jump 2 in new list of size 3. Index 0 -> (0+2)%3 = 2, which is '2'. Remove element after '2', which is '1' at index 0.) ->[5, 2][5, 2]-> (From '2' at index 1, jump 2 in new list of size 2. Index 1 -> (1+2)%2 = 1, which is '2'. Remove element after '2', which is '5' at index 0.) ->[2]The last element is '2'.
I was given a piece of code and asked to perform a code review, identifying potential issues and suggesting improvements.
The task was to implement TinyURL. This involved a High-Level Design (HLD) discussion and a Low-Level Design (LLD) implementation, with a specific focus on Object-Oriented Programming (OOO) principles.
Given a list of connected triangles, the problem is to return all boundary edges.
Example Input:
[[P1(0,0), P2(0,1), P3(1, 0)], [...], ..]
For simplicity, with coordinates removed, the input can be thought of as:
[[P1, P2, P3], [...], ..]
The key insight to solve this question is that a boundary edge will be an edge which is a part of only 1 triangle.
Standard 'Tell me about a time when...' behavioral questions.