Initial interview was a phone interview with a recruiter. He asked some very basic questions about C++, the sort of things anyone who's used the language should know - although there was one question that his answer key had slightly wrong, but since he wasn't a technical person, there was no point in debating it.
Second phone interview was with a technical assessment person. He asked for information on what I had done at my previous job, then asked how I had applied concepts and design patterns. He also went into more detail on knowledge of C++ and how to actually code a pattern (in my case, a singleton).
Third interview was via Skype and collabedit. Two fairly basic questions: 1) reverse a string in place; 2) create a stack using a linked list, then use the stack to perform arithmetic operations using postfix notation. Pretty sure I messed up slightly on the second one; thinking back on it, I think he wanted the input to be a string, which I didn't do. On the other hand, the linked list/stack implementation worked perfectly, so it was really more just misunderstanding the question. I probably should have asked for clarification but I was a little nervous. After those two questions, he gave me a third question, which is one of the more ridiculous questions I've seen asked:
Given a sorted array of strings, some of which are blank, create and code an algorithm to find the location of a string using a binary search. E.g., for ["apple", "", "", "ball", "", "", "", "child", "dog", ""] the code should return 4.
I had 30 minutes to do the first two, and 15 to do the third. Not impressed by the third question at all, since it's a fairly brutal misapplication of a binary search. My solution was to modify a binary search using quicksort to recursively search through the array (without sorting it); not sure if there's a better solution that conforms to a binary search but using a binary search in this case is not the ideal method.
Received a call the next day that the interview process would not continue.