Taro Logo

Senior Systems Software Engineer Interview Experience - Bengaluru, Karnataka

July 1, 2018
Positive ExperienceGot Offer

Process

It felt good attempting the interview. The quality of questions was very good.

They touched on the fundamentals only, but were tricky and sometimes difficult.

I was interviewed for an automotive team. They tested thoroughly on:

  • C
  • Computer architecture
  • OS
  • Hardware

Questions

For Automotive team:

Telephone:

  • Form a function to find the max/min of 2 integers without using comparison operators.
  • What is a static function in C?
  • What is the significance of the volatile keyword in C?
  • What are the different types of scheduling? What type is used by a Linux OS?
  • What are the different stages of a process? How is a scheduler linked to these stages?
  • What is priority inversion?
  • Explain the JPEG format.
  • Let’s say there is a system with only one timer. You want to write a multi-threaded program where each thread wants to use a function called “sleep(input)” to sleep for the given input time. How do you ensure that every thread sleeps for the intended amount of time with only a single available timer in the system? (Hint: Can you imagine a data structure and logic to hold this requirement?)

Round 2:

  • Let’s say I give you any number of queues and two functions, enqueue and dequeue, to perform the respective tasks. Can you design a stack with queues? Come up with two designs. Make the push operation costly in one design and the pop operation costly in another.
  • Can you define the node structure of a singly linked list?
  • Can you make the node heterogeneous, i.e., the data in the node can be of any type (char, int, float, double, structure, structure of structures, etc.)?
  • What is a semaphore, and a binary semaphore?
  • What is a mutex? What is the difference between a mutex and a binary semaphore?
  • Let’s say I have a linked list. There is one writer who can delete any node in the list, and there are n readers who read the content from the list. How do you design a synchronization scheme to achieve this?
  • Can you describe Round Robin (RR) scheduling in detail? Let’s say process P1 is in the ready queue at time t=0ms. Process P2 enters the ready queue at time t=2ms. Process P1 takes 2ms to complete. Explain the scenarios when the time slice is 1ms, 2ms, and 3ms for the RR scheduler.
  • What are the different segments of memory in the controller?
  • Where is dynamic memory allocated? If I am interested in allocating 32KB of memory dynamically, is it contiguous in memory? If yes, why? If no, why?
  • What is virtual memory? Explain with a detailed diagram.

Round 3:

  • What is an NVMe BAR address?
  • Explain the process of bootloading.
  • Explain the architecture of a generic flash controller, considering an NVMe front end and a Flash back end. Discuss various design considerations.
  • Why are NVMe submission and retrieval queues needed?
  • Explain inter-process communication (IPC) and the need for it.

Round 4:

Declare:

  • Pointer to an integer
  • Array of pointers
  • Pointer to an array
  • Function pointers
  • Array of function pointers

Puzzle:

  • Let’s say there is a 6x6 matrix of shelves. Can you place 14 bottles on these shelves such that every row and every column has an even number of bottles?

  • There are two 32-bit numbers, A & B. Write a macro to mask n bits (towards the right) of position p of A to B.

  • Let’s say you are in charge of booting the system and getting it up and running. Your source code in the eMMC drive needs to be loaded into RAM, and then the reset vector trigger should start the main code. Unfortunately, booting failed. How will you debug this? What steps will you take? Assume you have an eMMC from a customer company. You have the privilege to ask questions to the customer company; what do you ask them if you need to?

Round 5:

  • What is the role of an ADC?
  • Let’s say I have an SPI bus and I connected an ADC to it, which reads analog signals and provides digital output to the uP scope. How will you design your sampling system?
  • Explain different signals you have analyzed using digital signal analyzers. When did you use analog oscilloscopes in your career?
  • Can you design the concept of a C++ functionality for a fraction class in C? The design should maintain the numerator and denominator as private but expose functions to print the fraction and modify it. This should cover public and private variables and functions. (Hint: Static)

Round 6:

  • There are 3 bags with 2 balls in each. The balls in the bags are WW, WB, and BB, respectively. If I pick a ball from a bag and find that it is W, what is the probability that the next ball I pick from the same bag is also W?

  • I have a structure: c Struct data { U32 data; Struct data next; };

I have memory where my data is being written. How will you detect if some other process has come and corrupted your data? (Hint: What do you add to the structure to achieve this goal?)

Round 7:

  • I have a singly linked list. I want to delete a node, and I am given the node's address. How will you do it in O(1) time complexity?
  • Write C code to find the number of 1s in a given number. Can you optimize it?
  • Let’s say you are capturing images at 30 frames per second on a host CPU. You are given a discrete GPU to process these images. You have a DMA to transfer the images from CPU RAM to GPU. How are you going to design this system?
  • Can you explain cache algorithms?
  • Explain priority inversion with an example of 3 threads.

Was this helpful?

Interview Statistics

The following metrics were computed from 3 interview experiences for the Nvidia Senior Systems Software Engineer role in Bengaluru, Karnataka.

Success Rate

33%
Pass Rate

Nvidia's interview process for their Senior Systems Software Engineer roles in Bengaluru, Karnataka is fairly selective, failing a large portion of engineers who go through it.

Experience Rating

Positive67%
Neutral33%
Negative0%

Candidates reported having very good feelings for Nvidia's Senior Systems Software Engineer interview process in Bengaluru, Karnataka.

Nvidia Work Experiences