There were six rounds.

Short Story-

First – online (10 MCQ and 5 coding questions, 90 min)

Second – Algorithms

Third – Technical

Fourth – Data structure and Algorithm

Fifth – Data structure and Algorithm

Sixth – Project, Algorithm and Puzzle.

Long Story-

The

**first round was online coding**. It consisted of 10 mcq which were based on data structures, complexities, sql queries, operating system, aptitude, c and c++. It also consisted of 5 coding questions. Out of which two were pretty straight forward, one was medium and other two were tough. I was only able to solve 3 problems and half solved fourth. In one of the problems you had to implement a binary search tree. I don’t remember the exact questions, if you read geeksforgeeks then you can clear this round.The

**second round was telephonic**. I was asked two coding questions. Given a 2 dimensional array in which the rows and columns are sorted find a given element. You can find an O(m+n) solution here Search in row wise and column wise sorted matrix. The other question was given a 2 dimensional array in which the elements are either ‘x’ or ‘o’. Replace all ‘o’ with ‘x’ if the top, bottom, right and left elements are ‘x’. I did it using two traversals. In first traversal I replaced ‘o’ which satisfy the constraint with some arbitrary value ‘y’ and then replaced all ‘y’ with ‘x’ in the second traversal. I was asked if I was aware of any version control software’s. I said, I knew about git and svn. He asked me to tell the difference between git merge and rebase. He asked me how would you implement your own version control software. I told him I would implement it using MD5 algorithm. I would see if hash values are different and then point accordingly that there have been some changes in the local repository. He did not want me to tell the entire design, he was satisfied with my answer and time was up for the interview.**The third round was theoretical**. He asked me about system calls, fork, difference between nfa and dfa, rsa algorithm, virtual function, inheritance, polymorphism, inode in unix file structure. He was testing my concepts. You need to know the basics of operating system and theory of computation to ace this interview.

In

**the fourth round was mainly data structures and algorithm based**. He asked me to tell the difference between binary search tree and binary tree. Tell the difference between binary tree and heap. How to delete a node in a binary search tree. Given two arrays of same size containing randomly arranged values. You need to rearrange the values such that if the two arrays are a and b then sum of product of corresponding values i.e. a1*b1 + a2*b2 + a3*b3 + …. + an*bn where a1,b1 are the first elements of array a and b respectively of size n. I gave an answer for this question that I will simply sort one array in ascending order and the other array in descending order and do the corresponding operations and it will give me the required result.I was called onsite for the next rounds.

In

**the fifth round which was a f2f roun**d, there was a discussion about my college projects and intern ship projects. He then moved on to ask again algorithm related questions. Given a number find the next greatest palindrome. Given a ternary search tree how will you insert, find and delete elements. The ternary search tree is implement in such a fashion that each element has three childs left,middle and right. The left value is less than the parents value, middle value is equal to parents value (middle will be present only in case of duplicate elements) and right value is greater than the parents value. The tree should be height balanced considering middle values.In the

**sixth round which was also a f2f round**, there was a discussion about my projects and whether I had any previous web development experience or not. He asked to tell me what happens when i enter a url in my browser, explain each step in detail. Then asked me search an element in sorted pivoted array without duplicates and then extended the question to search an element in sorted pivoted array with duplicates. I was asked a puzzle next which was, you have 10 bottles each bottle has 10 tablets. A tablet usually weighs one gram. One of the bottles has tablets weighing 2 grams find the bottle number when you have an weighing machine which tells you the weight you put on it and you can use it only once. I gave him the straight forward answer that I will take 1 tablet from first bottle, 2 tablets from second bottle and 3 from third bottle etc and it would tell me uniquely which bottle has 2 grams weighing tablets. Then he extended the question if there are two such bottles then how can you find them. I was not able to solve this question as the constraint was 10 tablets in each bottle. If this constraint was not present I would have taken 2 from first, 4 from second, 8 from third and then I could uniquely identify the two bottles with different weight tablets.
Share your thoughts in the comments