50+ Core Java Interview Questions for 1 to 3 Years Experienced Developers

Disclosure: This post includes affiliate links; I may receive compensation if you purchase products or services from the different links provided in this article.

Java Interview qustions

Hello devs, are you preparing for Java developer interviews? If Yes, here is a list of some useful Java interview questions for experienced Java programmers having experience in range of 2 to 5 years.

As an experienced developer you are expected to learn about OOP concepts, Java basics, Java Collection framework, Multi-threading and Concurrency utilities introduced in Java 5 and 6, Debugging Java application, Algorithm and Data structure, Some questions on design patterns, JVM and Garbage collection and couple of puzzles.

Actually its mix of everything you do in your day to day work.

If you are going for Java developer with some exposure on web development you will also be asked about popular Java frameworks like Spring, Hibernate, Struts 2.0 and others.

If you have more than 5 years of experience you can also expect questions about build tools like Maven, ANT and Gradle, Java best practices, Unit testing and JUnit and your experience about solving production issues.

One of the most common question I have faced is talking about the last production problem you have faced and how did you solved it.

If you are asked same question, give them step by step detail, right from analyzing problem to tactical fix to strategic solution.

In this article, I am going to share my list of Java Interview question for Java guys having 2 to 5 years of experience. Since I had similar experience couple of year ago, I know what questions are asked and keeping a list for your own always helps when you start looking for new challenge in your career.

I am not providing answers of these question in this post due to two reasons, questions are quite simple and you guys probably know the answer, second providing answer means I cannot use this post for my own preparation later, which is more important.

Though, I could write another article answering all these question if anyone request or I feel people need it.

By the way, if you are new to Java programming language or want to improve Java skills then you can also checkout sites like CodeGym, ZTM and karpado to learn Java by building Games and projects.

Grokking the Java Interview book

Java Interview Questions for 1 to 2 years Experienced

This list contains questions from different topics e.g. OOP concepts, multi-threading and concurrency, Java collections, Web services, Spring, Hibernate, Database and JDBC, it doesn't cover all topics you need to prepare.

I will add few more topics later when I have some time, for now, try to answer these questions without doing Google :)

Java Interview questions on OOP Concepts

Here are a couple of questions on OOP design, SOLID principle and baseic programming concepts

1. What is the difference between loose coupling and tight coupling?
Loose coupling allows components to interact with each other with minimal dependencies, while tight coupling creates strong dependencies between components.

2. What is the difference between cohesion and coupling?
Cohesion refers to the degree to which elements within a module belong together, while coupling refers to the degree of interdependence between modules.

3. What is Liskov Substitution principle? Can you explain with an example?
Liskov Substitution principle states that objects of a superclass should be replaceable with objects of its subclasses without affecting the correctness of the program.

For example, if you have a class hierarchy with a superclass "Shape" and subclasses "Circle" and "Square", any method that works with Shape should also work with Circle or Square without causing errors.

4. What is the difference between abstract class and interface in Java?
Abstract classes can have both abstract and concrete methods, while interfaces can only have abstract methods. Additionally, a class can implement multiple interfaces but can only extend one abstract class.

5. What is the difference between composition, aggregation, and association?
Composition implies a strong ownership relationship where the lifetime of the contained object is dependent on the container.

Aggregation implies a weaker relationship where the contained object can exist independently of the container. Association implies a relationship between two classes without any ownership or lifecycle dependency.


Java Interview questions on Collections

Now, let's see a few questions form Collections and Stream

1. Difference between List, Set, and Map in Java?
Lists maintain elements in sequential order and allow duplicates (e.g., ArrayList, LinkedList). Sets do not allow duplicates and do not guarantee order (e.g., HashSet, TreeSet). Maps store key-value pairs and do not allow duplicate keys (e.g., HashMap, TreeMap).

2. Difference between synchronized and concurrent collection in Java?
Synchronized collections use explicit locking to achieve thread-safety, allowing only one thread to modify the collection at a time. Concurrent collections use non-blocking algorithms and are designed for high concurrency, allowing multiple threads to modify the collection concurrently without explicit locking.

3. How does the get method of HashMap work in Java?
The get method of HashMap calculates the hash code of the provided key, determines the index in the underlying array based on the hash code, and then searches for the key at that index. If found, it returns the corresponding value; otherwise, it returns null.

4. How is ConcurrentHashMap different from Hashtable? How does it achieve thread-safety?
ConcurrentHashMap allows concurrent access to the map without blocking, while Hashtable uses synchronized methods to achieve thread-safety, resulting in potential performance bottlenecks. ConcurrentHashMap achieves thread-safety by dividing the map into segments, each with its lock, allowing multiple threads to modify different segments concurrently.

5. When to use LinkedList over ArrayList in Java?
Use LinkedList when frequent insertion and deletion operations are required, as LinkedList provides constant-time insertion and deletion at any position. Use ArrayList when random access and iteration are frequent, as ArrayList provides constant-time access by index.


Java Interview questions on Concurrency and Threads

Now, its time to see questions from Java multithreading and concurrency concepts:

1. How do notify and notifyAll work, and what's the difference between them? Why prefer notifyAll to notify?
Both notify and notifyAll are methods in Java used to wake up threads waiting on a monitor (i.e., waiting to acquire an object's lock). notify wakes up one randomly selected thread, while notifyAll wakes up all waiting threads. notifyAll is preferred because it ensures that all waiting threads are notified, preventing potential indefinite waiting and improving system responsiveness.

2. What is a race condition and how do you avoid it?
A race condition occurs when the outcome of a program depends on the timing or interleaving of multiple threads. To avoid race conditions, you can use synchronization mechanisms like locks, semaphores, or atomic operations to ensure that critical sections of code are executed atomically or only by one thread at a time.

3. What is a deadlock and how do you avoid it?
Deadlock occurs when two or more threads are stuck waiting for each other to release resources that they need to proceed. To avoid deadlock, you can use techniques such as resource ordering, avoiding nested locks, or using timeouts for acquiring locks. Additionally, designing code with a clear and consistent locking order can help prevent deadlocks.

4. What are some of the high-level concurrency classes provided by java.util.concurrent and how do they work?
Some high-level concurrency classes provided by java.util.concurrent include ExecutorService, ThreadPoolExecutor, CountDownLatch, Semaphore, CyclicBarrier, BlockingQueue, and ConcurrentHashMap. These classes provide thread-safe implementations of common concurrency patterns and mechanisms like thread pools, synchronization primitives, and concurrent data structures.

5. Can you implement a producer-consumer solution in Java?
Yes, here is the code:



import java.util.concurrent.ArrayBlockingQueue;

class Producer implements Runnable {
    private final ArrayBlockingQueue<Integer> queue;
    private int count = 0;

    Producer(ArrayBlockingQueue<Integer> queue) {
        this.queue = queue;
    }

    public void run() {
        try {
            while (true) {
                queue.put(produce());
                Thread.sleep(1000); // Simulate some work
            }
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }

    private int produce() {
        System.out.println("Producing: " + count);
        return count++;
    }
}

class Consumer implements Runnable {
    private final ArrayBlockingQueue<Integer> queue;

    Consumer(ArrayBlockingQueue<Integer> queue) {
        this.queue = queue;
    }

    public void run() {
        try {
            while (true) {
                consume(queue.take());
            }
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }

    private void consume(int item) {
        System.out.println("Consuming: " + item);
    }
}

public class Main {
    public static void main(String[] args) {
        ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10);
        Producer producer = new Producer(queue);
        Consumer consumer = new Consumer(queue);

        Thread producerThread = new Thread(producer);
        Thread consumerThread = new Thread(consumer);

        producerThread.start();
        consumerThread.start();
    }
}




Java Interview questions on Database, SQL, and JDBC

JDBC is used for connecting database from Java program, let's ee a few questions on Database and JDBC
1. How do you prevent SQL injection attacks?
To prevent SQL injection attacks, use parameterized queries (prepared statements) with bound parameters, input validation, and escape characters. Avoid dynamic SQL queries constructed by concatenating user input.

2. What is the difference between WHERE and HAVING clause? The WHERE clause filters rows before the grouping and aggregation process, while the HAVING clause filters aggregated data after the grouping process based on specified conditions.

3. What are transactions? What is ACID?
Transactions are a set of SQL statements that are executed as a single unit of work. ACID is an acronym for Atomicity, Consistency, Isolation, and Durability, which are properties that ensure the reliability of transactions in a database system.

4. Difference between truncate, delete, and drop clause in SQL?

  • TRUNCATE: Removes all rows from a table but retains the table structure and any associated constraints or indexes.
  • DELETE: Removes specific rows from a table based on a condition, but retains the table structure and associated constraints.
  • DROP: Deletes an entire table, including its structure, data, and associated constraints and indexes.

5. What are window functions? How do they work?
Window functions perform calculations across a set of rows related to the current row within a query result set. They allow you to perform aggregate functions (such as SUM, AVG, COUNT) over a specified window or subset of rows, defined by the OVER clause. Window functions operate on a set of rows and return a single value for each row based on that set of rows. They are often used for tasks such as ranking, aggregation, and calculating running totals.

See, Grokking the SQL Interview book if you need more questions on Database and SQL

SQL Interview questions books

Java Interview questions on Hibernate

Now, its time to see questions from Hibernate, one of the popular Java framework:

1. When is it better to use plain SQL instead of ORM?
It's better to use plain SQL when:

  • Complex queries need to be optimized for performance.
  • The database schema or query requirements are not well-supported by the ORM framework.
  • Direct control over SQL statements, database connections, or transactions is required.

2. Difference between sorted and ordered collection?
In Java, a sorted collection maintains elements in a specific order defined by a comparator or by the natural ordering of elements, while an ordered collection maintains elements in the order they were inserted.

3. How does second level cache work?
Second level cache in Hibernate stores objects in a shared cache region, typically across multiple sessions. When an entity is queried for the first time, it is fetched from the database and stored in the second level cache. Subsequent queries for the same entity can then be satisfied from the cache instead of hitting the database, improving performance.

4. What is the difference between save() and persist() in Hibernate?
Both save() and persist() methods in Hibernate are used to save an entity to the database. However, save() returns the generated identifier immediately, while persist() doesn't guarantee immediate execution of the SQL INSERT statement; it may be executed later during flush time. Additionally, persist() is part of the JPA specification, while save() is specific to Hibernate.

5. What is the difference between Hibernate and MyBatis?

  • Hibernate is a full-fledged ORM framework that maps Java objects to database tables, manages database connections, and provides various querying mechanisms. MyBatis, on the other hand, is a lightweight persistence framework that uses SQL mapping files to map Java objects to SQL queries.
  • Hibernate is typically used for domain-driven development, where object-oriented modeling is prominent, while MyBatis is often preferred for projects where direct control over SQL queries is required, such as legacy database systems or complex SQL scenarios.
  • Hibernate provides caching mechanisms, automatic dirty checking, and transaction management, while MyBatis offers more control over SQL queries and mappings, allowing developers to write SQL queries directly.

Java Interview questions on Web Services and Microservices

Now, let's see questions form Microservice architecture and REST web services

1. Difference between SOAP-based and REST-based web services? SOAP is protocol-based with rigid structure, while REST is architectural style based on stateless communication with flexible endpoints.

2. What is SOAP Envelope?
It encapsulates the entire SOAP message and defines its structure.

3. How to implement security in RESTful web service?
Implement SSL/TLS for encryption and authentication.

4. What is Payload in REST?
It's the data transmitted in the body of the HTTP request or response.

5. What is Microservices? It's an architectural style where applications are composed of small, independent services.

6. What is the difference between Microservices and REST? Microservices refer to architectural design, while REST is an architectural style for networked applications.

7. What is the difference between Monolithic and Microservices?
Monolithic has single codebase, while Microservices have multiple, independent components; Monolithic can have higher latency.

8. What problem does SAGA pattern solve?
It manages distributed transactions in Microservices architecture.

9. What is service discovery in Microservices?
It's the mechanism for locating services dynamically within a Microservices architecture.

10. What are common Microservices Patterns you have used in your project?
Service Registry, Circuit Breaker, API Gateway.


Java and Spring Interview Preparation Material

Before any Java and Spring Developer interview, I always read the Grokking the Java Interview and Grokking the Spring boot Interviw

Here are few more questions from these books:

Java object oriented questions

and,

Spring boot interview questions

And, if you are new to Java then you can also checkout sites like CodeGym, ZTM and karpado to learn Java by building Games and projects.

 
Thank you guys for now. You can find the answers in web easily but if there are enough interest, I can also update the post. Let me know if you have also asked these questions before. If anyone knows answer, can also post as comment.

Good luck for your Java Interview.

By the way, if you are new to Java programming language or want to improve Java skills then you can also checkout following best Java courses to get better:

    5 Difference between BufferedReader and Scanner class in Java? Example

    Hello guys, welcome to my blog. Today, we'll discuss another interesting Java interview question, BufferedReader vs Scanner. It's not only important from an interview point of view but also to work efficiently with Java. Even though both BufferedReader and Scanner can read a file or user input from the command prompt in Java, there are some significant differences between them. One of the main differences between BufferedReader and Scanner class is that the former class is meant to just read String or text data while the Scanner class is meant to both read and parse text data into Java primitive types like int, short, float, double, and long.

    How to join two threads in Java? Thread.join() example

    You can join two threads in Java by using the join() method from java.lang.Thread class. Why do you join threads? because you want one thread to wait for another before starts processing. It's like a relay race where the second runner waits until the first runner comes and hands over the flag to him. Remember, unlike sleep(), join() is not a static method so you need an object of java.lang.Thread class to call this method. Now, who calls and who wants, and which thread dies? for example, if you have two threads in your program main thread and the T1 which you have created. 

    How to stop a thread in Java? Example

    Today we're going to learn about how to stop a thread in Java. It's easy to start a thread in Java because you have a start() method but it's difficult to stop the thread because there is no working stop() method. Well, there was a stop() method in Thread class, when Java was first released but that was deprecated later. In today's Java version, You can stop a thread by using a boolean volatile variable.  If you remember, threads in Java start execution from the run() method and stop, when it comes out of the run() method, either normally or due to any exception. You can leverage this property to stop the thread. 

    Can You Create Instance of Abstract class in Java? Answer

    Hello Java Programmers, how are you doing? Hope you are doing well. It's been a long since  I shared a core Java interview question in this blog, so let's start with that. Earlier I have shared one of the frequently asked questions in Java, can we make an abstract class final in Java and my readers really liked it and asked for more such questions. So, today I am going to talk about whether you can create an instance of an Abstract class in Java or not? This is another interesting core Java question that you will find on telephonic interviews, a written test that has multiple-choice questions and most notably Oracle certified Java programmer certification like OCAJP 8  and OCAJP 11.

    ArrayList vs Vector in Java? Interview Question Answer

    ArrayList vs Vector in Java
    ArrayList and Vector are the two most widely used Collection classes in Java and are used to store objects in an ordered fashion. Every Java programmer which is introduced to Java Collection Framework either started with Vector or ArrayList. For beginners Difference between Vector and ArrayList in Java and LinkedList vs ArrayList are the two most popular Java Interview questions. ArrayList vs Vector is not only important from an interview perspective but also on the effective use of Java Collection API. 

    Difference between static and non static nested class in Java? Example

    Static vs. non Static class in Java
    In Java, you can make a class either static or non-static. Now, what is the difference between making a class static vs. non-static? Well, there is a lot of difference between them. First of all, there are two kinds of classes in Java, one is called a top-level class, and the other is called a nested class. As the name suggested, a top-level class is a class that is declared in the .java file and not enclosed under any other class. On the other hand, a nested class is declared inside another class. The class which enclosed nested class is known as Outer class. 

    Difference between throw vs throws in Java? Answer

    throw vs throws in Java
    throw and throws are two Java keywords related to the Exception feature of the Java programming language. If you are writing a Java program and familiar with What is Exception in Java, it's a good chance that you are aware of What is throw and throws in Java. In this Java tutorial, we will compare throw vs throws and see some worth noting differences between throw and throws in Java. Exception handling is an important part of the Java programming language which enables you to write robust programs. There are five keywords related to Exception handling in Java like try, catch, finally, throw, and throws.

    2 Ways to solve FizzBuzz in Java? [Example]

    Hello guys, if you are learning to code or preparing for interviews and looking how to solve the FizzBuzz problem in Java then you have come to the right place. Earlier, I have shared 75 programming exercises and in this article, I will teach you how to solve the FizzBuzz problem in Java. FizzBuzz is one of the most frequently asked questions on programming interviews and used to filter candidates on Coding interviews who can't code. It looks extremely simple but it's tricky for those programmers or coders who struggle to structure their code or lack the ability to convert a simple algorithm into code. 

    [Solved] How to Check If a Given String has No Duplicate Characters in Java? Unique Example

    Hello guys, if you are looking to solve the classic problem "checking if a String has all Unique characters" or not then you have come to the right place. Earlier, I have shown you how to reverse String in place, and in this article, I will show you how to check for unique and duplicate characters in String.  You need to write a program to determine if a given string has all unique characters or not. For example input= "Java" then your function should return false because all characters are not unique, and if the input is "Python" then your program should return true because all characters in Python are unique.

    [Solved] 2 Ways to Find Duplicate Elements in a given Array in Java - Example

    Hello guys, today, you will learn how to solve another popular coding problem. You have given an array of objects, which could be an array of integers and or an array of Strings or any object which implements the Comparable interface. How would you find duplicate elements from an array? Can you solve this problem in O(n) complexity? This is actually one of the frequently asked coding questions from Java interviews. There are multiple ways to solve this problem, and you will learn two popular ways here, first the brute force way, which involves comparing each element with every other element, and other which uses a hash table-like data structure to reduce the time complexity of the problem from quadratic to linear, of course by trading off some space complexity.

    Top 24 Java Date, Time, and Calendar Interview Questions Answers

    The Date and Time API is a significant one for day-to-day Java development work, but many interviewers don't ask enough questions on this topic. Most of the questions are based on either Java Collection framework like  HashMap, ConcurrentHashMap, or ArrayList or multi-threading concepts like volatile, synchronized, and atomic variables. This is not good, and many interviewers have realized that a good understanding of date and time API is also important for a good Java developer. That's the main reason for increasing date, time, and calendar-based Java interview questions in recent times, particularly in the last couple of years.

    Top 50 Core Java Interview Questions and Answers for Beginners

    Hello guys, If you are preparing for your next Core Java interview and looking for some common questions to practice or check your knowledge, then you have come to the right place. In this article, I'll share 50 Core Java Interview Questions from various companies. I have already discussed the answers to these questions in this blog or Javarevisited, so I have just put the link and given hint or mentioned the key point you need to know to answer these questions. First, you should try to answer it yourself, and if you cannot then go to the link and find the answer. You can also compare your answer with mine and learn a few things here and there.

    Difference between StringBuilder and StringBuffer in Java with Example

    If you are in a hurry and heading straight to interview then I won't take much of your time, In a couple of words, the main difference between StringBuffer and StringBuilder is between four parameters, synchronization, speed, thread-safety, and availability. StringBuffer is synchronized and that's why thread-safe, but StringBuilder is not synchronized, not thread-safe and that's why fast. Regarding availability, StringBuffer is available from Java 1.0 while StringBuilder was added in Java 5. 

    Top 70 Java Interview Questions for Junior Developers [1 to 2 Years Experienced]

    Java Developer Interviews are very different than traditional software developer interviews. You can clear a Java interview without even writing a single line of code, Yes, this is true, you can become a Java developer without someone asking you to write a function in a Java interview. Though it's not the case everywhere and many companies are increasingly including a coding test in their Java developer interview process, but there are many companies and start-ups where you can get a Java job without writing a single line of code. All you need to do is learn those popular Java questions, which have been asked for ages, and mostly test whether a candidate is familiar with essential Java concepts or not like abstract class and interface. 

    15 Technical Core Java Interview Questions Answers for Experienced Developers

    When the experience of a Java Programmer grows in the years e.g. when it goes from beginner years ( 2 to 4) to more experience or sort of senior level ( 5 to 7 years), Core Java Interview Questions also change a bit. Of course, basics like data structure, algorithms, and object-oriented programming remains the same, but types of questions will become more advanced and their answers will definitely need to be more detailed and accurate. I often receive queries about core Java questions asked to a senior developer with 5 to 6-year experience, or, sometimes, I am going for an interview of a senior Java developer, what kind of questions I should expect. 

    How to check if strings are rotations of each other in Java? String Rotation Example Solution

    String-based algorithmic questions are very popular in Java interviews e.g. checking if two String is the anagram of each other (see), or checking if given String is a palindrome (see), or just finding permutations of given String (see). One of such popular String-based interview questions is about to check if two Strings are a rotation of each other in Java. In order to solve this question, you should know what is String rotation? Well, A string is made of characters and you just rotate the String around any character like "programming" will become "ingprogramm" if we rotate the String on the trailing character 3 times.

    Difference between Static and Dynamic binding in Java

    Hello guys, if you are wondering what is difference between static and dynamic binding and how it affect your program execution in Java then you are at right place. When you call a method in Java, it is resolved either at compile time or at runtime, depending upon whether it's a virtual method or a static method. When a method call is resolved at compile time, it is known as static binding, while if method invocation is resolved at runtime, it is known as Dynamic binding or Late binding. Since Java is an object-oriented programming language and by virtue of that it supports Polymorphism. Because of polymorphism, a reference variable of type Parent can hold an object of type Child, which extends Parent.

    What is transient variable in Java? Serialization Example

    What is a transient variable in Java?
    transient variable in Java is a variable whose value is not serialized during Serialization and which is initialized by its default value during deserialization, for example for object transient variable it would be null. This behavior can be customized by using a custom Serialized form or by using the Externalizable interface. A transient variable is used to prevent any object from being serialized and you can make any variable transient by using the transient keyword. You cannot make a local variable transient through and it's only the member variables which can be transient. 

    Difference between HashSet and HashMap in Java? Answered

    HashSet and HashMap in Java
    Hello friends, if you have given Java developer interview then there is good chance that you may have come across questions like Difference between HashSet vs HashMap or HashSet vs TreeSet etc. In this article, we are going to discuss differnece between HashMap and HashSet, two of the popular Collection classes from JDK. The HashSet vs HashMap is a classical Java Collection interview question that focuses on What are differences between HashSet and HashMap in terms of features, usage, and performance. If you are in Java programming even for a year or so, you are likely to be familiar with What is HashSet in Java and What is HashMap in Java, these two are the most popular collection classes.