Round 1 – Written test
In this round, we were judged on aptitude, basic concepts of core computer science, output based questions in C (all medium level).
Round 2 – Technical 1
In this round, my basic programming skills, Operating System concepts and Computer Networks concepts were tested.
Explain the logic and implementation of finding a intersection point in two linked list ( https://www.geeksforgeeks.org/write-a-function-to-get-the-intersection-point-of-two-linked-lists/).
I explained two approaches,
- Using extra space, i.e. use a HashSet, add all the elements of the first list and then add the elements from the second list. Whenever we find an element which is already present in the HashSet, we find the intersection point.
Obviously, the interviewer asked me not to use extra space. So I explained the other approach,
- Find lengths of both the linked lists and find the difference ‘d’ between both the lengths. Traverse the longer linked list by ‘d’ and then traverse both the list together and in each iteration check if both the nodes are equal. If they are equal, we have our intersection point.
He was satisfied with the answer but he did not want these many operations, so he asked me another approach. While I was thinking about the solution, he asked me if I can detect a loop in the linked list. After I told him about the loop detection using fast and slow pointers, he asked me if I can use the loop detection in the solution of the first problem. The answer to that is to connect the last node the linked list to the first node of any of the linked list which will just create a loop in the linked list and the problem boils down to finding the loop node in the linked list.
The interviewer asked me
- Priority Inversion and ways to tackle it
- To explain race condition, deadlock, critical section problem with examples
- Questions related to threads and processes
- Design the memory layout of a C program that he wrote
He asked me to explain all the layers of the TCP/IP protocol suite and went deep in the data link layer (responsibilities and methods used in it).
Project – The interviewer asked me to explain one of my projects in detail.
Round 3 – Technical 2
This round was also about coding and operating systems.
The interviewer asked me to explain and write production level code for this https://www.geeksforgeeks.org/check-for-balanced-parentheses-in-an-expression/ problem.
- A lot of questions were asked on shared memory systems (like how exactly the memory is shared between processes in different scenario)
- I don’t remember the question completely but it was something like – How to copy the contents of two clocks one of which changes every millisecond while the other changes every second in two registers without using any temporary registers. I could not answer it properly but he was satisfied with my thought process.
- A few more questions on virtual memory and paging.
The last round looked like a formality where the HR just asked me to introduce myself, asked my preferences in terms of work and location. I also asked a few questions about Qualcomm and the work I am gonna do there.
Received placement offer for the position of Engineer (Software).