Combination of algorithms/data structures, Java concurrency and garbage collection, and system design. I'd say it was 40% coding, 40% design, and 20% Java. The coding questions were either easy to medium level questions but on the "easy" ones there are a few tricks thrown in to check your attention to detail. You have to make sure you check your corner cases and ensure the correctness of your code. The interviewer hinted at issues in my code after my initial attempt and I was able to identify and fix them. So if you make a mistake it's not the end. For the design questions, I focused on performance and security aspects of the system in question. Overall not overly easy and not terribly tough either, meaning that I think it does a good job at making sure you're a competent developer.