Applied online and got a phone call in a couple of days.
First phone interview was about resume, some technical questions and two coding questions followed by Q-A, lasted for about 90 minutes. The hiring manager was nice and easy to talk with. She explained me everything about the team. I told the manager that I had another offer in hand, so I would appreciate if you could expedite the process because the work sounded like it will match my background and experience. It looked like she did not bother about it because she just wanted to go with the standard procedure. So, next round was another phone screen (questions for interview at the end).
2nd round was supposed to be 45 minutes phone screen, but interviewer called in 15 minutes late and apologized but did not extend the interview by 15 minutes. Some OOP questions, basic understanding of algorithms and then a coding question (on collabedit). This is where I was surprised. I was given 15 minutes to solve and code the problem and I completed it in 10 minutes. The answer was perfect and the interviewer also confirmed that. But I was asked if I copied it from internet because the code was perfect and covered the corner cases too. Obviously, I did not copy, so I politely said no. I believe the interviewer also told that I will be recommended for on-site interviews.
Next day, I was told that I was rejected. Reason ??? they don't share. Losers! I am glad I won't be working for such a team.
Questions below (fairly easy):
1st phone interview: Given an array of integers, find the missing element in it. (there is only one missing element in the array).
1st phone interview: Given an array of integers, find the sub array with maximum sum.
2nd phone interview question: Find out if a binary tree (does not matter if its BST or not) is balanced or not. i.e. delta of left and right subtree should not be greater than 1.
Some OOP/c++ questions:
If you have an empty class like class Foo{} and you create an object of that class, what would sizeof(object) be ?
What is the difference between merge and quick sort? Complexities (best and worst case)? Explain worst case of quick sort? When would you use one over other?
What is auto_ptr (STL)? (I had c++ written on my resume, so that's the reason I was asked this question)? Can you create a vector of auto_ptrs? What kind of issues would you encounter while managing the vector of auto_ptrs?