I applied through a recruiter. The process took 2 weeks. I interviewed at Ooyala (Mountain View, CA) in Mar 2011
Interview
Speaking purely in terms of technical knowledge and skills, the engineering team is filled with some really smart people. This is the only positive remark I have for the company.
I had two technical phone screens which went really well. After the phone screens, I was invited to the office in Mountain View for a full interview loop. The interview questions were of average difficulty and overall the interviews went really well.
What's very disappointing is the hiring manager and recruiter. When they invited me for onsite interviews, in order to save time and effort, I initiated in-depth conversations with the recruiter and the hiring manager with regards to the requirements for the position and whether my background, experience and skill set were a good fit. The hiring manager convinced me that I was a great fit for the position. However. the outcome of the onsite interview was that my experience/background was not a match for the position. I felt that my time and efforts were not valued and hence I am strongly not inclined to recommend Ooyala.
Interview questions [4]
Question 1
[Phone screen] Given an array of integers, list out all elements that add up to a given sum X.
[On-site] Social networking sites such as LinkedIn and Facebook have a feature where given any two members, then can display a graph showing how they are connected and what is the degree of separation. Given a large database of members (millions of records), write a program to compute the degree of separation between any two members and list all the members that connect the given members. Complexity should be better than O(n^2).
[On-site] You are given a 10-digit number. List all possible valid words (in the English language) that can be formed when the number is typed on a phone pad (i.e. 1 maps to ABC, 2 to DEF etc.). You have access to a dictionary that provides a isWord() function which returns true if a word is valid.
Now assume that instead of the dictionary, you are given a list of valid words. You no longer have access to the isWord() function. How would you modify your algorithm?
[On-site] Implement a URL shortening service similar to tiny URL. Provide DB schema, software architecture. How would you optimize the system? What are some points of failures? How would you scale? [leads to having multiple hosts] How would keep all of the hosts in sync?