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
D. E. Shaw & Co. | SDE (New Grad) | India | May 2025 [Offer]
Summary
I was selected for a Software Engineer position at D. E. Shaw & Co. in India after an off-campus hiring process that included an Online Assessment, three technical rounds, and a final HR discussion.
Full Experience
Online Assessment: OA Questions
Round 1: Screening Round β
-
Introduction + Discussion about my Summer Internship Project
-
DSA Coding Question
Problem:
Design a dashboard for a Codeforces-like platform to show the top 10 programmers who have solved the most problems.
You receive a stream of updates in the form:
{'username': <number_of_problems_solved>}
At any instant, the dashboard should reflect the current top 10.
Approach:
I used an ordered multiset in C++ to:
- Keep track of users sorted by problem count.
- Insert/update user entries as new data comes in.
- Maintain only the top 10 by removing the lowest when size > 10.
- Easily iterate and display the top 10 on the dashboard.
Why not a heap?
The interviewer initially suggested a min-heap, but I explained:
- Heaps arenβt directly iterable for dashboard display.
- We'd need to pop all elements and reinsert them to display.
- A multiset is better suited for ordered iteration + updates.
He was satisfied with the explanation.
Result:
- Took me ~25 mins to implement.
- Interviewer was happy with both the reasoning and the code.
-
Questions on OOP Principles, OS and DBMS - Acid properties
-
Questions on Projects in my Resume
Round 2: Detailed Interview - I β
-
Introduction + Discussion about my Summer Internship Project
-
DSA Coding Question
Problem:
You are given two integer matrices A and B of size n Γ m.
You are allowed to perform the following operation on matrix A any number of times:
- Choose any square submatrix (of size
k Γ k, wherek β₯ 2) and transpose it in place. That is, the element at position(i, j)in the submatrix becomes the element at position(j, i)within that submatrix.
Your task is to determine whether it's possible to transform matrix A into matrix B using zero or more such operations.
Input:
-
Two integers
nandmβ the number of rows and columns. (1 β€ n, m β€ 500) -
An
n Γ mmatrixA -
An
n Γ mmatrixB
Each matrix element satisfies1 β€ A[i][j], B[i][j] β€ 10^9.
Output: Print "YES" if it's possible to transform A into B using the allowed operations, otherwise print "NO".
Approach:
The key observation is:
-
Operations only affect elements inside square submatrices.
-
If you look at the diagonals defined by
i + j = const(i.e., bottom-left to top-right), the multiset of values on these diagonals remains invariant under such operations. -
Moreover, it's possible to permute elements arbitrarily on each diagonal.
So:
-
For each diagonal index
d = i + j, collect all elements inAandBon that diagonal. -
Compare the multisets of these diagonals between
AandB.
If all corresponding diagonals match in multiset β return YES, else NO.
Result:
-
Solved in ~30 minutes.
-
Interviewer was satisfied with the diagonal-invariant observation and explanation.
- CS Questions
- OOP: Virtual functions, compile-time vs. runtime polymorphism
- CS Concepts: Webpack bundlers, design patterns, code smells
- DBMS: SQL vs. NoSQL
Round 3: Detailed Interview - II β
- System Design Question
Overview:
You run a furniture shop and are asked to design the system.
Questions asked:
-
i) Design a high-level system with relevant classes and attributes.
-
ii) Draw a class diagram showing relationships between entities like Product, Category, Inventory, Order, Payment, Customer, etc.
Result: Took around 50 minutes to complete.
- CS Questions
-
OS Questions:
- Define Deadlock
- What are the 4 necessary conditions for deadlock?
- Write a C++ program that demonstrates a deadlock using
mutex
-
DBMS Questions:
- SQL vs NoSQL β key differences
- Examples of relational databases
-
Behavioral Questions:
- What projects did you work on during your summer internship?
- What challenges did you face (technical or communication)?
- How did you collaborate with your team?
- C++ OOP and Memory Layout
-
Write a basic class in C++
-
Show different ways to invoke constructors:
- One with object as return type
- Another using a pointer (
new)
-
Memory layout questions:
- Where are pointers and objects stored in program memory?
- Discuss:
- Stack
- Heap
- Data section
- Code section
-
Given:
class Car { public: Car(int x) { /* constructor logic */ } }; Car c1 = Car(10); Car* c2 = new Car(10);- Where are
c1andc2stored?
- Where are
-
Given a function:
void func() { Car c1 = Car(10); Car* c2 = new Car(10); }- What happens to
c1andc2after the function returns?
- What happens to
- C++ Inheritance and Diamond Problem
-
Given classes
A,B,C, andD:Binherits fromACinherits fromADinherits from bothBandCA,B,Chave their ownprint()methodsDdoes not have aprint()method
-
What happens when we call
d->print()?- Which
print()function gets invoked?
- Which
-
Discussion on:
- Diamond problem
- Virtual Inheritance
- DSA Question β Stock Stream Ordering
-
You are given a stream of stock updates:
{timestamp, price, company_name, offset}- The
timestampfield is not the true arrival time. - The true time =
timestamp + offset - Each company has a fixed offset
- The
-
Your task:
- Write records to a file in correct order of true timestamp
- The file must be always consistent (i.e., no out-of-order records)
-
My Approach:
-
Use a min-heap (priority queue) to buffer incoming records.
-
Write to the file only when:
current_timestamp + min_offset > pq.top().true_timestamp- Then:
pq.pop()and write to file.
- Then:
-
Push new incoming records into the heap with:
pq.push({timestamp + offset, ...})
-
Interview Questions (15)
Design a dashboard for a Codeforces-like platform to show the top 10 programmers who have solved the most problems. You receive a stream of updates in the form:
{'username': <number_of_problems_solved>}
At any instant, the dashboard should reflect the current top 10.
You are given two integer matrices A and B of size n Γ m.
You are allowed to perform the following operation on matrix A any number of times:
- Choose any square submatrix (of size
k Γ k, wherek β₯ 2) and transpose it in place. That is, the element at position(i, j)in the submatrix becomes the element at position(j, i)within that submatrix.
Your task is to determine whether it's possible to transform matrix A into matrix B using zero or more such operations.
Input:
-
Two integers
nandmβ the number of rows and columns. (1 β€ n, m β€ 500) -
An
n Γ mmatrixA -
An
n Γ mmatrixB
Each matrix element satisfies1 β€ A[i][j], B[i][j] β€ 10^9.
Output: Print "YES" if it's possible to transform A into B using the allowed operations, otherwise print "NO".
You run a furniture shop and are asked to design the system.
Questions asked:
- i) Design a high-level system with relevant classes and attributes.
- ii) Draw a class diagram showing relationships between entities like Product, Category, Inventory, Order, Payment, Customer, etc.
Define Deadlock
What are the 4 necessary conditions for deadlock?
Write a C++ program that demonstrates a deadlock using mutex
What projects did you work on during your summer internship?
What challenges did you face (technical or communication)?
How did you collaborate with your team?
Show different ways to invoke constructors:
- One with object as return type
- Another using a pointer (
new)
Where are pointers and objects stored in program memory? Discuss:
- Stack
- Heap
- Data section
- Code section
Given:
class Car {
public:
Car(int x) { /* constructor logic */ }
};
Car c1 = Car(10);
Car* c2 = new Car(10);
- Where are
c1andc2stored?
Given a function:
void func() {
Car c1 = Car(10);
Car* c2 = new Car(10);
}
- What happens to
c1andc2after the function returns?
Given classes A, B, C, and D:
Binherits fromACinherits fromADinherits from bothBandCA,B,Chave their ownprint()methodsDdoes not have aprint()method
What happens when we call d->print()?
- Which
print()function gets invoked?
Discussion on:
- Diamond problem
- Virtual Inheritance
You are given a stream of stock updates:
{timestamp, price, company_name, offset}
The timestamp field is not the true arrival time.
The true time = timestamp + offset
Each company has a fixed offset
Your task:
- Write records to a file in correct order of true timestamp
- The file must be always consistent (i.e., no out-of-order records)