I'll speak in generalities here. 1) There was a question with an optimal solution involving 3 data structures. I almost went down an optimal-ish path, but then I second-guessed myself and tried to solve the problem with different pairs of data structures, which wasn't optimal. Lesson learned: don't be afraid to explore paths that seem outlandish to you at first. 2) The system design question (there are many potential examples for such a question, e.g. "design a scalable online bookstore") thoroughly tested many of the concepts I learned in distributed systems. Granted, I was interviewing for such a position, but it really drove home how valuable my distributed systems class was. 3) I wasn't expecting *nix-related stuff at all. I'm really glad I took an operating systems class where we were required to implement a lot of fundamental tools.