They started with a phone interview. It lasted for an hour. Questions were asked about my research work. Then I was asked few questions on socket/POSIX threads programming.
1. What does select do?
2. How would you make a socket non-blocking?
3. What are the issues in using multi-threaded systems?
4. Describe in simple words how would you set up a TCP connection using sockets?
Then there were questions on algorithms:
1. What is a BST? Provide an algorithm to merge two BSTs.
2. Find two numbers in an array that will add up to a particular value? (O(nlgn) or better)
3. How would you access (k-3) element of a linked list?
Feedback was in a week.
My second phone interview described a custom situation in network protocol development. I was asked to design classes and illustrate how my design will handle their requirements. Ability to understand requirements, finding the right classes and handling minute details of situations were analyzed. Interview lasted around 45 min - 1 hr. Very much an architectural question which combined software design abilities beautifully.
Feedback was within couple of days.
I was called for a face to face. Mostly architectural questions, software design questions, C++, behavioral questions. I would say the whole interview process required lot of concentration from me.