Nokia Networks R&D Engineer Off Campus Drive for 2020 passed out students. This drive consisted of four rounds
First Round: AMCAT Online Test Round
This round consisted of a set of questions from the topics
- English (Comprehension and others)
- Quantitative Aptitude
- Reasoning Ability
- Coding (2 basic level questions that could be coded only in C/C++)
The platform was such that I had to carefully select an answer. I couldn’t navigate back to the previous questions once proceeded to the next question (except for Coding ones). No negative marking.
2 days later, I was called for the second round.
Second Round: Technical Round by an Engineer on basics of C/C++
It was a grilling 1½ hour interview. The interviewer was very friendly and polite. After a basic introduction of each other, she asked me about a particular project from the list of 4 projects I had mentioned on my resume. All of my projects were coded on either Java or Python. I had used C++ only for competitive coding and told her about it. I was then asked to rate on my C/C++ knowledge. Then she proceeded to ask the following questions:
- What is a pointer? What does the ‘*’ symbol indicate(related to pointer)?
- What is the output if you print a pointer variable?
- What is the difference between “declaration” and “definition” of a variable?
- What is a reference variable in C++?
- Difference between call by value and call by reference.
- Dynamic Memory Allocation in C and how its done.
- What’s difference between “malloc()” and “calloc()” function?
- Explain in detail the Memory Layout of C Program. Crossed questioned on roles of various levels
- What’s the difference between “stdio.h” and <stdio.h>?
- What’s a static variable? Difference between static variable and global variable.
- What value of the uninitialized static variable will be shown when it is printed?
- What’s a class? Basics of OOPS.
- What’s a constructor? What does it return when called?
- What’s a copy constructor?
- Give an example of inheritance in C++ (had to write code)
- What’s the diamond problem in C++?
- What’s a static function? How can we call a function without creating its object?
- What are access specifiers? What’s the default access specifier in C++ when no specific specifier is mentioned? Scope of each specifier.
- I was given a basic C++ programming problem to code. If a linked list is provided ( for eg: 10 -> 20 -> 30 -> 40 -> 50 -> 60). Starting with first index as 0, if an input index value is given as n, make new linked list starting with the nth index of the given list and ending with the previous one. (In the above example if n=4, then new list would be 50 -> 60 -> 10 -> 20 -> 30 -> 40)
- How will you read/write a private variable of an object? (using Getter and Setter functions)
She asked me if I would be comfortable switching to C/C++ from Java, for which I said “yes”.
Third Round: Managerial Round by a senior member of a team.
This interview took about an hour. He was very friendly as well. After a basic introduction round, he asked me about my competitive programming journey during college (mentioned in the resume) and asked about the most challenging problem I had solved. He cross-questioned me on several aspects like what were the corner/unique test cases I had considered etc. After a brief discussion on it, he asked me the following
- Basics of pointers (again)
- Suppose there is a function that performs dynamic memory allocation(DMA) and a function that deallocates an assigned memory. There are multiple threads that perform DMA and there are corresponding threads that would deallocate the memory. In a case of a non-synchronized system where the parallel implementation of threads is possible, a problem can arise that memory deallocation threads are run even before their corresponding DMA thread is implemented completely. How can one avoid this problem?
- Write a pseudo code that finds a middle element of a given linked list only in one iteration.
The second question took the maximum time of about 30 minutes, as several aspects/ concepts were discussed. The asked me the following:
- Why Software Engineer?
- Where do you see yourself in 10 years?
- What, according to you is a difficult situation in your professional life and how will you handle it?
- Suppose a challenging project is given where a lot of learning about that domain is needed to build the product. How will you handle the situation?
- Any plans for a master’s?
He then asked me if I had any questions. I asked about more details of my role and cross-questioned as well.
Fourth Round (HR Round): A senior HR person took this round. After a brief introduction about each other for about a minute, he asked me the following:
- Suppose a client asks you to make a tool that calculates EMI on a given set of inputs(salary, interest rate, time period, etc.), what all will I be asking the client
- A peer/ senior of yours keeps interrupting you every time you try to speak in a meeting. How will you handle such a situation?
He then discussed the challenges of the role etc. I was selected for the role.
Tips: Brush your basics of C/C++ knowledge as much as possible. Have good/pleasant communication skills, explain step by step, and be honest about the answers (especially technical ones). For some questions, I hadn’t known the answer, and interviewers themselves gave a hint with which I could arrive at the answer.
Overall it was a smooth experience.