Taro Logo

Compiler Engineer Interview Experience - Pune, India

September 1, 2021
Negative ExperienceNo Offer

Process

Horrific interview process. No respect for the candidate, and they can reschedule your interview at any time. They don't care if you are waiting on the interview call and the interviewer is on leave.

Questions

My Background:

I worked in the compiler frontend (Clang) during my thesis, developing a compiler-like tool for static analysis of the C language. Essentially, it was a linter for the C programming language.

Hiring Manager Round:

He worked in the GPU compiler optimization team at NVIDIA. We discussed topics related to compiler optimizations. He asked questions about compiler optimizations such as loop optimizations and peephole optimizations, as I knew he was from the optimization team and had prepared for these topics in advance. However, I clearly stated that I had never worked in the optimization field. Note: Compiler optimization is part of the compiler backend, which also requires architecture-related knowledge.

First Round [Coding]:

Q1: Print all permutations of a string? I asked him to change the question since I had not revised backtracking for this interview. He was humble enough to change the question.

Q2: Merge sort on a linked list with detailed runtime analysis? I answered the question successfully but made a mistake in the runtime analysis. I implemented the approach of dividing the linked list into two halves, merging the two halves, and recursively applying quicksort. I told him it was O(n^2), which was incorrect. However, he did not realize I had made a mistake in the analysis, and he kept suggesting a method to reduce it to O(n log n), which was also incorrect.

Q3: How to implement a hash map? Possible approaches in defining the hash function for mapping keys?

Second Round [Coding]:

Q1: Find the minimum element in a binary tree?

Q2: C code to extract words from a sentence and copy them to a 2D array where each row contains a word. The code was a little complex. He was copying the strings by splitting the whole sentence and also performed memory manipulation with realloc to handle insufficient memory if the allocated memory was less than required.

Example: I/p: Nvidia is a cool organization.

O/p: Nvidia is a cool organization

Q3: There is a 3x3 matrix for storing apps, like: A1 A2 A3 A4 A5 A6 A7 A8 A9 You need to maintain the top 9 apps in this matrix. How will you do it? He did not mention anything further. I didn't ask any questions and proceeded with a solution, which was a mistake. I said I would use a priority queue. Then he asked how a priority queue would work, so I explained the insertion and deletion of nodes in a heap for 20 minutes. Then he said, "Oh, but it won't maintain the order, right?" I was confused. He asked if I could think of other data structures for this.

After another 10 minutes of thinking, I suggested storing it using a linked list and a map. Essentially, this is the standard LRU cache problem, which I had seen the day before but couldn't recall at the moment. I explained how I would implement it, and he didn't ask me to code it. This interview concluded.

Third Round [Design Skills]:

Q1: How do you reduce cache misses when multiplying two very large matrices? I couldn't answer this as I had no idea how caching would work in this scenario.

Q2: Then he asked a long, cryptic compiler-related problem. It goes like this...

Let's say compiler A calls compiler B's "invoke" module 15 times, performing some steps where the percentage of time consumed is indicated: Initializing a compiler instance: 15% Preprocessing: 25% Syntax analysis: 25% Optimizations: 35%

How will you minimize the time consumed? What is the takeaway from this problem? Do I need to reduce the 15% to 10%? What does it mean to reduce the time? It took me 25 minutes to clarify the problem with the interviewer. He essentially wanted to know if the compiler instance should be initialized for all 15 calls or if preprocessing needs to be done repeatedly.

After I finally understood the problem, I answered all his questions successfully. I suggested using an if check to see if the compiler is already initialized. We could pass the compiler instance as an argument to the invoke function. We could store a map for preprocessor-related data and use flags to indicate if syntax analysis had already been performed. He then asked a follow-up question about removing if conditions, to which I replied by checking the map size and similar logic. So, I handled his questions well.

Fourth Round [Clang Knowledge]:

This was the most sensible interview. She asked me for all the details about my project, how I approached the problem, and what data structures and design patterns I used. She was primarily interested in the work, and since I had completed my project thoroughly, I knew every detail she asked about it.

Compiler Director Round [Cultural Fit]:

He asked questions about my project and some things like why I wanted to join this difficult and boring field. Basically, after his demotivation, I decided I didn't want to join this field.

Was this helpful?

Interview Statistics

The following metrics were computed from 1 interview experience for the Nvidia Compiler Engineer role in Pune, Maharashtra.

Success Rate

0%
Pass Rate

Nvidia's interview process for their Compiler Engineer roles in Pune, Maharashtra is extremely selective, failing the vast majority of engineers.

Experience Rating

Positive0%
Neutral0%
Negative100%

Candidates reported having very negative feelings for Nvidia's Compiler Engineer interview process in Pune, Maharashtra.

Nvidia Work Experiences