The recruitment process took place in three rounds.
Round 1 (Coding):
It consists of three programming questions, each with a different set of questions. Here’s what I received:
- The last non-zero digit of the factorial number. In terms of time complexity, it is expensive to find a factorial with a larger n. I optimized the solution and cleared all the test cases.
- Ceil Value Node: A node whose minimum data is greater than or equal to the value of the key. We need to find the node in BST. I took a recursive approach and cleared all the test cases.
- The difference between the maximum and minimum depth starting from the root of the binary tree. I took the recursive approach again and cleared all the test cases.
Round 2 (Technique I):
The interview took place on Skype. Recruiters focus primarily on programming issues and less on projects:
- Question about Trie – how to look up words ending with the suffix “-ing” in the dictionary. I can’t fully answer that, and the recruiter moves on to the next question.
- Given a matrix initialized with zeros. There are index-based queries – (i, j), and after each query, the i-row element will be incremented by 1 and the j-column will be the same. After all queries, we need to count the odd number of numbers in the matrix. I’m taking a naïve approach, which has a complexity of O(k x n^2). But then I optimized it based on the odd number of even + even = even odd + odd = even and only odd + even can get odd results.
- Coin exchange problem – the minimum number of coins that make up a specific total (using the greedy method).
- Reverse a list of likes, then reverse it again to get back the original list of links. I solved it using a recursive approach.
- The number of nodes at a particular level of the binary tree. This can be easily solved by hashing.
- Project introduction, awakening my role in the project.
The recruiters were supportive and the round went very smoothly. These questions leave out many of the questions that recruiters ask me to ask, and then move on.
Round 3 (Technology II):
The interview was on Skype again, but this time the recruiter’s video was turned off, which was confusing at first, but then I got used to it. This round is also focused on coding and projects.
- Explain your project, your skills and interests. I explained in detail the reasons for using the technology I was using.
- Questions about the properties of Nodejs (async, event-driven, threaded, etc.), Reactjs(HOC, lifecycle functions), JSON format, and Javascript web tokens that I use in my project. I know the answers to these questions, which makes the recruiter quite satisfied.
- Use express to create a snippet of the server’s code that identifies and shares the screen in my text editor.
- Given a matrix with a few duplicate rows. A similar line index is given in the output. I solved this by hashing the rows with an array of indexes. Although I couldn’t optimize it further, the recruiter explained the solution using Trie.
- Based on various linked lists and binary tree issues based on recursion (reverse, checking images, symmetry checking), I easily cleared and explained the sudo code with test cases.
- Doubly linked list-based problem – there are consecutive people in the queue, and they have to enter the queue in order from highest to lowest according to their height. I explained the solution and he was happy with it.
The recruiter then asked me if I had any questions, and I asked him about the technology he was working on. The recruiter was friendly and even forgave the sudden power outage during the interview. It was a great interview experience and a very enlightening experience. A few hours after the second interview, I received the information of my choice. Even when I wasn’t sure about my solution, I communicated with the recruiter about my approach, and he also gave me some tips to solve the problem.