Research and Development Engineer Sr | Synopsys | March 2024

synopsys logo
synopsys
· Research and Development Engineer Sr· 3.5y exp
July 26, 2025 · 28 reads

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

  1. Sort a million numbers stored in an array Quick Sort

  2. Sort a million numbers stored in a linked list Merge Sort

Round 1

  1. Middle of a linked list https://leetcode.com/problems/middle-of-the-linked-list/description/

  2. Remove duplicates in a sorted array https://leetcode.com/problems/remove-duplicates-from-sorted-array/description/

  3. Multiply two numbers without using multiplication operator

Round 2

  1. Single Element in a sorted array https://leetcode.com/problems/single-element-in-a-sorted-array/description/

  2. Min Days to make m bouqets https://leetcode.com/problems/minimum-number-of-days-to-make-m-bouquets/description/

Round 3

  1. 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/

  1. Inorder Traversal of a Binary Tree https://leetcode.com/problems/binary-tree-inorder-traversal/description/

  2. 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)

1.

Sort a Million Numbers in an Array

Data Structures & Algorithms

Sort a million numbers stored in an array

2.

Sort a Million Numbers in a Linked List

Data Structures & Algorithms

Sort a million numbers stored in a linked list

3.

Middle of the Linked List

Data Structures & Algorithms

Middle of a linked list

4.

Remove Duplicates from Sorted Array

Data Structures & Algorithms

Remove duplicates in a sorted array

5.

Multiply Two Numbers Without Multiplication Operator

Data Structures & Algorithms

Multiply two numbers without using multiplication operator

6.

Single Element in a Sorted Array

Data Structures & Algorithms

Single Element in a sorted array

7.

Minimum Number of Days to Make M Bouquets

Data Structures & Algorithms

Min Days to make m bouqets

8.

Consolidate Distributed Log Files

Data Structures & Algorithms

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.

9.

Inorder Traversal of a Binary Tree

Data Structures & Algorithms

Inorder Traversal of a Binary Tree

10.

Analyze Code Snippets

Other

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
//
//
//

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!