The interview process consists of 5 rounds:
I was referred by a friend. Each round included a mix of coding and systems questions, generally in the easy to medium difficulty range. For coding questions, they were more interested in your approach and thinking rather than requiring executable code.
They are also interested in the depth of your fundamental knowledge.
a[5] = [10, 12, 3, 4, 15] int* const exp1 = &a; int const* exp2 = &a;
for (int i = 0; i < 5; i++) { print("Value %d", *exp1++); print("Value %d", *exp2++); }
What will be the output?
int main() { while (1) { char* m = malloc(100); if (m == NULL) { print("Unable to allocate memory"); } } return 0; }
What will this code print? When will it stop? Which memory is allocated (Virtual or Physical)? Memory hierarchy of OS? How malloc works
Round 1 Q 2
string m = "aabababbaababab"; string n = "aab";
Find the count of all substrings of n which are in m. e.g., aab, aba, baa = 2 + 4 + 1 = 7
Given two unsigned 32-bit integers, write a function to find their average without using any extra space and return a 32-bit unsigned int.
Define a stack with normal operations such as push, pop, top, and a new operation max which always returns the maximum element in the stack.
Given a 2D array, assume that we are reading it in row-major order and column-major order. Which would be better/faster?
Define memory hierarchy in OS.
Given a sorted array A = {1, 2, 3, 4, 5}, the array can be rotated by k elements. e.g., K=2: A = {4, 5, 1, 2, 3} K=1: A = {5, 1, 2, 3, 4} K=4: A = {2, 3, 4, 5, 1}
Give an O(log n) solution to find element X in the array (The element will always be present in the array).
Modified level order traversal: print elements in a zig-zag order.
Implement Stack using an array.
Round 4 Q 2
Lowest Common Ancestor in a Binary Search Tree.
Round 4 Q 3
Given an array A = {12, 11, 13, 9, 10, 55, 32, 54}. Find the largest subarray which contains all consecutive elements. eg: {12, 11, 13, 9, 10}
Round 5 Q 1
Discussion on Mutex and Semaphore.
Round 5 Q 2
Questions on my previous work experience and debugging methods.
Round 5 Q 3
Discussion on Locks and Deadlocks.
Round 5 Q 4
Given a sequence S = 0102030405... Given 3 threads as follows:
Design a synchronization mechanism so that we get the above sequence.
Round 5 Q 5
Design a Stack class apart from push, pop, top, and isEmpty. One more operation is allowed: findMin, which returns the minimum element at any given time.
Round 5 Q 6
The following metrics were computed from 1 interview experience for the Nvidia Sr. Software Engineer role in India.
Nvidia's interview process for their Sr. Software Engineer roles in India is extremely selective, failing the vast majority of engineers.
Candidates reported having very good feelings for Nvidia's Sr. Software Engineer interview process in India.