The most difficult question asked was to prove the upper bound on the number of nodes in a balanced binary tree. In order to prove it, the interviewer was looking for me to provide an inductive proof (this question caught me extremely off guard, have not done proofs in like three years). Definitely one of the more difficult interviews I have had, but I was very unprepared. My phone interviewer told me to expect an intense onsite coding interview where I was going to be expected to write an iOS application (experience is in mobile applications and I was interviewing for Yahoo Sports mobile). As a result, I spent a lot of time studying/practicing OOP and writing objective-c code. Much to my surprise when I was invited onsite, my interview was simply whiteboard coding questions. Most of the questions were binary tree and graph algorithm questions. In retrospect, I could have done much better on this interview if I were not misled by the previous engineer. Deep copy of a graph, dijkstras, order level tree traversal, big integer addition (just some of the questions). In short do not rely on engineers or HR to help you, study on your own and focus on graphs and trees.
HR made it a terrible experience. Engineers were also very anti-social and seemed to only care if you get the question right without regard for your approach. I also kept getting interrupted rudely while trying to write down code which confused me a lot and made me perform even worse. No point in working for or with people like that, imagine the frustration!