Java Interviews are a little bit different than traditional programming interviews on tech giants and product based companies like Google, Amazon, Microsoft, or Facebook. First, even though it has questions from Data Structure and Algorithms like String or Array, you can still manage to clear Java interviews if you are not an expert on them. The questions are a little bit easier and more practical than those companies. Another very important thing about Java interviews are questions based upon Java programming language and JDK API. Since Java is also an Object-oriented programming language, you will find lots of OOP questions there.
Since Java is primarily used as an application programming language, the focus is aligned accordingly with questions mostly focusing on API, Java concepts, and design patterns.
Also, Java interviews change a lot depending upon the candidate's experience. For example, junior developers with 1 to 2 or 3 to 4 years of experience will see more questions on topics like Java fundamentals, API, data structure and algorithms.
More senior developers like Java programmers with 5 to 6 years of experience will find more questions on concurrent programming, Java concurrency API, JVM internals, GC tuning, and Java Performance.
So your preparation should be aligned with your experience and not just focused on common programming questions.
Also, Java EE interviews are totally different than core Java interviews because core Java interviews are mostly focused on core Java concepts like Concurrency, Collections, and JVM internals, while Java EE interviews are based upon framework like JSF, Spring, Hibernate and others.
As I told, the importance of topics depends upon the candidate's experience. I would ask more questions from Java fundamentals like String, Collections, equals() and hashcode and OOP concept to a fresher or Junior Java developers of 2 years experience, but those topics will be too trivial for Java developer of 4 to 5 years experience.
For those, I prefer to ask Concurrency, JVM internals, Garbage Collection, testing, and design patterns. Another thing which decides which topic you should prepare for your interview is the Job description.
Also, there is no better guide than Job description to prepare for relevant topics.
For example, if you are going to work for a core Java multi-threading based application then you should prepare well for core Java topics like multi-threading and concurrency, Java Collections, Generics, Enum, GC Algorithms and JVM internals.
Similarly, if you are going to work for Java Web Service application than preparing about REST and SOAP, XML, JSON, and other relevant topics.
For Java, web application developers, JSP, Servlet, Spring, and Hibernate are more important than multi-threading and JVM internals. Similarly for an Android developer, apart from knowledge of Java fundamentals, knowing Android API is more important.
Nevertheless here is the list of topics I suggest to any Java developer who is serious about interviews.
Java Fundamentals Object-Oriented Concepts Data Structure and Algorithms Multithreading, concurrency, and thread basics Date type conversion and fundamentals Garbage Collection Java Collections Framework Array String GOF Design Patterns SOLID design principles Abstract class and interface Java basics e.g. equals and hashcode Generics and Enum Java IO and NIO Common Networking protocols Data structure and algorithm in Java Regular expressions JVM internals Java Best Practices JDBC Date, Time and Calendar XML Processing in Java JUnit Programming questions