It all started with a friend forwarding my resume to Directi. The HR guys contacted me the next day over the phone and I had a general chat about the company the position and what to expect. I was asked to submit a level 3/4 problem on the careers page after which an interview would be scheduled. That was a Friday. Over, the weekend I submitted the solution to the ARRAYTRM problem and on Tuesday the following week I received a call for telephonic interviews. I had two interviews lined up for me, the first being an algorithm interview and the next one being a tech interview. At exactly, the mentioned time I received a call from the concerned person and the questions were as follows:
Interview #1 [Telephonic] => Algorithm Round:
1) The interviewer asked me about my thesis problem (it was a published work) and my proposed solution. This was followed by an interesting discussion on the same. Interestingly, this is the only interview to date where I was asked about my Masters problem
2) The next question was, there are N nuts and N bolts, all unique pairs of Nuts and Bolts. You cant compare Nut with Nut and a Bolt with Bolt. Now ,how would you figure out matching pairs of nut and bolt from the given N Nuts and Bolts.
3) There is a frog who can make jumps of length 3,5,7. There are stones in a river at distances a1, a2… an. The other end of the stream is n distance away. Can the frog cross the stream. What if the frog can make jumps backwards ?
I guess there was another question which I cant recall at this stage. Also, there was a short bit of discussion on my work at MSR. To wrap things up, I asked the interviewer about Skenzo and he briefly explained to me its working !
Interview #2 [Telephonic] => Technical Round:
This was a tech-round and the interviewer asked loads of questions (Loads and Loads of them)
It started with DS:
Difference between hash-table and BST
Difference between B-Tree and BST
Then moved to DB
1) Types of Indexes. If there is a table Employee(Name), how would you retrieve all names starting with ‘a’, ending with ‘a’. Do both queries have same speed of execution. What can be done so that both are equally fast ?
2) What is Normalization ?
3) ACID properties
OS:
Loads of questions (~25-30) covering processes, threads, synchronization, deadlocks, virtual memory. Virtually everything that could be asked was asked.
Interview #3 [Telephonic] => Pair-programming round:
1) Implement sort for a very large file. [Write a complete working code]. The interviewer shared a doc on collabedit.com and was able to see what I coded in real-time.
2) A discussion about my previous job experience.
Interview #4:
1) What you want to do in life ?
2) Consider a huge feed of data like the case of twitter or facebook. Now, how would you go about implementing search (ads) based on keywords. So someone tweets (Want to buy watch) – ads to be shown should be relevant.
3) Given n people live in n houses and at some instant all of them disappear and reappear in some other house. What is the probability that no two meet each other.
4) Number of squares in a nxn grid
5) How does database implement concurrency and consistency in both distributed and local settings.
The interview process was unique in a way that it made you think rather than answering standard interview questions.The next day they made an offer and the iPad that accompanied it was the perfect icing on the cake !
Comments
Welcome to DirectI buddy.
can u pls tell the solution for nut and bolt problem
@Amit:
Go ahead as follows:
1) Pick the first nut. Partition the bolts into those smaller than the nut, larger than the nut and equal to the nut (fitting the nut). Only one bolt matches, the nut to be fit. Now, there are say k bolts smaller than the smaller than the nut and k’ bolts larger than the nut. Create a tree with the root node as the nut-bolt combination and put the smaller bolts in the left subtree and the larger ones in the right subtree.
2) For the next node, traverse the tree similar to the manner we traverse a binary search tree. If the bolt at that node is smaller, (i.e. the nut is larger) traverse right else left. On reaching the leaf node, find the desired bolt and split the bolts available at node in a manner similar to 1.
3) Repeat 2 for all nodes.