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
Research and Development Engineer Sr | Synopsys | March 2024
Summary
I completed a multi-round interview process for a Research and Development Engineer Sr position at Synopsys in March 2024, which included a phone screen and three subsequent technical rounds heavily focused on data structures, algorithms, and code analysis.
Full Experience
Background
Bachelors of Technology from Tier 2 Company: Oracle Years of Experience: 3.5 years
Phone Screen
-
Sort a million numbers stored in an array Quick Sort
-
Sort a million numbers stored in a linked list Merge Sort
Round 1
-
Middle of a linked list https://leetcode.com/problems/middle-of-the-linked-list/description/
-
Remove duplicates in a sorted array https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/
-
Multiply two numbers without using multiplication operator
Round 2
-
Single Element in a sorted array https://leetcode.com/problems/single-element-in-a-sorted-array/description/
-
Min Days to make m bouqets https://leetcode.com/problems/minimum-number-of-days-to-make-m-bouquets/description/
Round 3
- A tool (master) runs 'm' unit testcases on 'x' distributed machines (slave). For simplicity, consider each slave has equal number of testcases to run.Every slave writes log message in its own file based on timestamp. For example - 00:01 pass - testcase_id 00:05 pass - testcase_id 01:10 fail - testcase_id 02:17 fail - testcase_id
Your task is to enhance the tool such that user will get one consolidated log file. https://leetcode.com/problems/merge-k-sorted-lists/description/
-
Inorder Traversal of a Binary Tree https://leetcode.com/problems/binary-tree-inorder-traversal/description/
-
Tell what the following code snippets do
int myFunc_X1()
{
int a1, a2 = 0, a3 = 1, a4, a5;
scanf("%d", &a1);
for(a5 = 0; a5 < a1; a5++) {
a4 = a2 + a3;
a2 = a3;
a3 = a4;
}
printf("%f\n", ((float)a2)/a3);
return 0;
}
// Sample run
//
//
//
int myFunc_X2(int a1)
{
int a2 = 0, a3, a4;
a4 = a1;
while (a4 != 0) {
a3 = a4 % 10;
a2 = a2 * 10 + a3;
a4 /= 10;
}
if (a2 == a1) {
return 1;
}
return 0;
}
// Sample run
//
//
//
int myFunc_X3(int n)
{
int i, m;
if ((n & 1) == 0) {
return 0;
}
i = n;
m = 0;
while(i != 0)
i >>= 1, m++;
m = (m+1)>>1;
for (i = 3; i <= (2<<m); i += 2) {
if (n % i == 0)
return 0;
}
return 1;
}
// Sample run
//
//
//
int myFunc_X4(int m, int n)
{
int t;
do {
if (m < n)
m += n, n = m - n, m -= n;
m = m % n;
} while(m != 0);
return n;
}
// Sample run
//
//
//
Interview Questions (10)
Sort a million numbers stored in an array
Sort a million numbers stored in a linked list
Multiply two numbers without using multiplication operator
A tool (master) runs 'm' unit testcases on 'x' distributed machines (slave). For simplicity, consider each slave has equal number of testcases to run.Every slave writes log message in its own file based on timestamp. For example - 00:01 pass - testcase_id 00:05 pass - testcase_id 01:10 fail - testcase_id 02:17 fail - testcase_id
Your task is to enhance the tool such that user will get one consolidated log file.
Tell what the following code snippets do
int myFunc_X1()
{
int a1, a2 = 0, a3 = 1, a4, a5;
scanf("%d", &a1);
for(a5 = 0; a5 < a1; a5++) {
a4 = a2 + a3;
a2 = a3;
a3 = a4;
}
printf("%f\n", ((float)a2)/a3);
return 0;
}
// Sample run
//
//
//
int myFunc_X2(int a1)
{
int a2 = 0, a3, a4;
a4 = a1;
while (a4 != 0) {
a3 = a4 % 10;
a2 = a2 * 10 + a3;
a4 /= 10;
}
if (a2 == a1) {
return 1;
}
return 0;
}
// Sample run
//
//
//
int myFunc_X3(int n)
{
int i, m;
if ((n & 1) == 0) {
return 0;
}
i = n;
m = 0;
while(i != 0)
i >>= 1, m++;
m = (m+1)>>1;
for (i = 3; i <= (2<<m); i += 2) {
if (n % i == 0)
return 0;
}
return 1;
}
// Sample run
//
//
//
int myFunc_X4(int m, int n)
{
int t;
do {
if (m < n)
m += n, n = m - n, m -= n;
m = m % n;
} while(m != 0);
return n;
}
// Sample run
//
//
//