Synopsys R&D Engineer L1 Interview Experience

synopsys logo
synopsys
R&D Engineer L1Offer
June 3, 20242 reads

Summary

I interviewed for an R&D Engineer L1 position at Synopsys, which involved three technical rounds focusing on DSA, system design, and advanced OOP concepts, followed by an HR round. I successfully received an offer.

Full Experience

My interview journey for the R&D Engineering role at Synopsys began with an initial online assessment, followed by three technical rounds and a final HR round. I'm a fresher with a BE in ETCE from a Tier 1 college.

Technical Round I

The first technical round was conducted by a mid-senior level employee and lasted about an hour. After a brief introduction, the interviewer presented two DSA questions. The first was a medium-level dynamic programming problem, a twisted variation of the classic coin change problem. I initially explained a brute-force recursive approach and then optimized it, coding the solution and performing a dry run. The second DSA question involved a binary tree problem, which was quite similar to the "Amount of Time to Infect a Binary Tree" problem on LeetCode. I described my approach, wrote the complete code, and executed a dry run with sample test cases. Additionally, I was asked several OOP questions, specifically whether a constructor or a destructor can be virtual, and was required to explain the reasoning behind my answers. The round concluded with a puzzle.

Technical Round II

Approximately an hour and a half, the second technical round was led by a senior-level engineer. After a self-introduction and a brief discussion about my first round experience, I was surprised with a real-life design problem instead of a typical algorithmic question. This problem focused on optimizing the declaration of a variable across several nested function calls to ensure maximum efficiency in terms of accessibility and performance. Despite initial nervousness, I gathered my thoughts and analyzed the problem. The interviewer asked for my chosen data structure and the rationale. I deduced that an n-ary tree could represent the situation, with each function call as a node. After detailing my approach, I coded the solution, demonstrating efficient variable declaration. Following this, I tackled a medium-level linked list question by explaining my approach and coding the solution. This round also ended with a logical puzzle.

Technical Round III

A week after the second round, I had my third technical interview, lasting about an hour and conducted by another senior-level engineer. It began with a self-introduction. The interviewer then delved deep into Object-Oriented Programming (OOP) concepts. I was asked to describe the four pillars of OOP—encapsulation, abstraction, inheritance, and polymorphism—providing suitable code examples for each. We then moved to more advanced topics such as the virtual table (vtable), the diamond problem, and complex questions on runtime polymorphism, which really tested my understanding and application. Later, a design-based problem was presented: a scenario about a 2010 survey on infected and healthy people. The challenge was to track changes over the years, given infection spread through acquaintances, and to identify the most appropriate data structure. I suggested using a graph to model the relationships and infection spread, explained my logic, and then coded the solution.

HR Interview

The final round was an HR interview, which took place after the third technical round. This interview primarily assessed my soft skills, cultural fit, and overall suitability for the R&D Engineering role within Synopsys.

Verdict: Selected

Interview Questions (6)

Q1
Twisted Coin Change Variation
Data Structures & AlgorithmsMedium

I was asked a medium-level dynamic programming problem, described as a twisted variation of the classic coin change problem. I first explained a brute-force recursive approach and was then asked to optimize it. I proceeded to code the solution in a compiler and performed a dry run to demonstrate its functionality.

Q2
Time to Infect Binary Tree (Variation)
Data Structures & Algorithms

I was given a binary tree problem, which was similar to the LeetCode problem 'Amount of Time to Infect a Binary Tree'. I described my approach, wrote the complete code, and executed a dry run with provided sample test cases.

Q3
Virtual Constructor and Destructor
Other

I was asked several Object-Oriented Programming (OOP) questions, specifically: Can a constructor be virtual? Can a destructor be virtual? I had to explain the reasoning behind my answers for both.

Q4
Optimize Variable Declaration in Nested Functions
System Design

I was presented with a real-life design problem focused on optimizing the declaration of a variable used across several nested function calls. The goal was to place the variable in the most efficient location for both accessibility and performance. I was asked which data structure would be most appropriate and encouraged to explain my logic. I deduced that the situation could be represented using an n-ary tree, where each function call acted as a node, allowing me to track variable scope and dependencies.

Q5
OOP Pillars, VTable, and Diamond Problem
Other

I was asked to describe the four pillars of Object-Oriented Programming (OOP)—encapsulation, abstraction, inheritance, and polymorphism—and provide suitable code examples for each. The interviewer then delved into more advanced OOP topics, including the virtual table (vtable), the diamond problem, and complex questions related to runtime polymorphism, challenging my understanding and application of these concepts.

Q6
Infection Spread Modeling with Graph
System Design

I was presented with a design-based problem: a 2010 survey collected data on infected and healthy individuals. The challenge was to track how many people remained healthy and how many became infected over the years, given that infected individuals could transmit the infection to their acquaintances. I had to identify the most appropriate data structure for this problem.

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!