Lots of people have probably read these, but Steve Yegge wrote some great posts about interview loops on his old Amazon blog.
http://steve.yegge.googlepages.com/five-essential-phone-scre...
http://steve.yegge.googlepages.com/why-phone-screens-matter
http://steve.yegge.googlepages.com/what-you-need-to-know
Here's an excerpt from that last one that is on point:
"My point today is that although I don't feel you need to have a Computer Science degree in order to be a good developer, I do believe that there is a set of learnings, which you normally acquire in the course of a CS degree, that I would consider to be part of the core set of ideas that are 'software common sense'. If you don't know them, then I will feel that you lack common sense.
"In our CS degree, we saw a lot of proofs, and had to work through many of them by hand. I feel that this was to some extent unnecessary, since it obscured the importance of the things we were proving by putting us all to sleep. Being able to prove something does allow you to reason through it to assure yourself of its correctness, and to derive it from first principles if you've forgotten it. But in everyday programming, you don't need to do proofs. You ought to have a feel for the outline of the proof, the sort of intuitive derivation of a rule, so you can reason through it with yourself and with others. But you don't need to be ultra-formal about it unless you happen to love proofs, as some folks do.
"Instead, you need to be aware of the major findings and learnings of Computer Science, and the rough reasons for them. I realize this opinion is going to displease two audiences: CS theory folks, who will think it's too weak, and professional programmers with no CS degree, who will think it's too strong. But it's my opinion and I'll stick with it."