Java interviews based tips
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