I had a good albeit strange experience. Everybody was very nice throughout the entire process.
The phone screen was 45 minutes long and was completely technical. Was asked to define virtualization [which though I gave great examples of, I'm not sure I actually gave him a textbook 'definition' of which would have been something like 'abstracts the hardware implementation details from the software' or something] and then to evaluate a ten thousand node system. He just said to "evaluate" this system, and didn't really elaborate.
One question that stumped me a little was when he told me I had 2 programs. Each program takes 1 minute to run. Then he said, what can you tell me about the programs if when run together, they take 2 minutes to run, and then what can you tell me about them if together, they take 1 minute to run-- and then what can you tell me about them if when run together, they only take 30 seconds (still taking 1 minute to complete on their own.) I thought I answered the first two pretty well and then was a little stumped by the third. In retrospect, I would have probably answered that perhaps if running together they took less time than separately, then it would be because they were working on a common problem or resource, etc.
Finally was asked to describe an algorithm where I would figure out the highest occuring character in a string, then was asked to define it's complexity.
Throughout the interview I was being told that I was answering well, and thought I came up with some good conclusions. At the end of the interview, I was told that my skills were a good match for the team and was warned that during the on-site interview, I'd probably have to write code on a whiteboard.
Then, three weeks, later, I was e-mailed and told that there wasn't a good fit for my background and experience. Very strange indeed.