Process: Screening -> Tech Round 1 -> Tech Round 2 -> HR -> 20 Min 40 Question Aptitude -> Selection
Screening Round: There were nearly thousand students who applied for this round. It was a computer-based Algo DS test, we were provided with three questions and have 2.30 hrs to complete them. All questions were easy to easy-medium level and I was able to complete it within 40-45 mins. Many of my friends also completed it in the same time range.
Technical Round 1: Nearly 80-90 students got shortlisted for this round, basically everyone who solved all the three questions got selected for the technical round.
This round lasted for nearly 60-70 mins, the interviewer was very nice maybe this was the reason I remember his name(It was Anoop in case you wondering), The interview started with general introduction, then he looked at my resume and asked me about my experience in DS and Algo and competitive coding(he asked me because I have mentioned it in my resume). After the introduction and some React question(again he asked me because I have mentioned it in my resume), the real DS Algo interview started.
First Question: Given an array, find the second maximum element.
Answer: Gave him an O(N log N) sorting approach, he asked me to optimize it, given an O(n) + O(log N) approach using heap, again he asked me to optimize it, in the last I gave him a simple O(n) solution using for loop. I also gave him an O(n) solution using a stack.
Second Question: Print postorder traversal of a tree.
Answer: On giving him the solution of a given tree, he asked me to write code for it, I gave him the simple recursive solution, he asked me to give the iterative approach, I wrote it using two stacks.
Third Question: Given a tree, connect all the adjacent nodes at the same level in a binary tree. he showed me the structure of the tree which contained an extra “next” pointer.
Answer: Took some good time thinking, then gave him a trivial solution that was using DFS with a level or height parameter to keep track of levels and storing it in a vector of vectors according to its level. He then told me to remove the extra space of vectors.
Took again some time and given him a solution using a queue of type std::pair<treenode*, int>, he again asked me to remove std::pair, I took some time but was not able to come with a proper approach, I told him that I am unable to come with something to keep track of levels without using std::pair, then he asked whether I want some hint from him, I took it, he told me “use some kind of delimiter”, I immediately told him that we can use NULL to keep track of levels and then simply assign next values according to queue insertion. He seemed happy and asked me if I had some questions for him and told me to wait outside. Link of Question.
Technical Round 2: Nearly 30-40 students got shortlisted for this round(just my approximate don’t know the exact figures)
This time the interviewer was rude and started asking questions even before I was seated, he started with questions of OOPS, asked me about Data Abstraction and Encapsulation, which I was able to answer. Then he gave me a long use case, he spoke for nearly a minute, all while roaming here and there instead of being seated, I lost him in between but waited for him to finish it and asked then him to repeat it or explain me on paper, he told me to leave it and gave me a question of DS and Algo.
Question: Find whether n! is divisible by 10^k or not, where n and k are variables. (This time again he was very unclear but I asked him again and again to make sure that I understand the question correctly, he seemed frustrated but I asked it anyway XD).
Answer: I told him that basically, we need to find the number of zeroes in n!, if it is greater than or equal to k than it will be divisible by 10^k otherwise not. Also, I gave him an brute-force approach which was taking O(n) time, he asked me to remove the loop. Thus, I gave him an optimized approach to solve it using simply counting number of trailing zeroes of n! .
The next question was of Dynamic Programming he asked me to give an efficient approach for finding the maximum length of a common substring in two string. But even before I gave him any solution, he changed the question and asked me to write the code for insertion in AVL tree. After thinking for some time I told him that I forgot about the rotations involved in AVL tree, but if he can provide me with some hints about it, I can write the code for it easily (as it simply uses BST insertion with some rotations to keep it balanced).
He told me to leave the question and asked me some puzzles which I was unable to answer properly, and that concluded the interview and he asked me to wait outside.
Status: REJECTED in Second Technical Round!
In case you wondering 8 got selected for Internship offer of EagleView.