Top 21 Frequently Asked Java Interview Questions Answers

If you have been to couple of Java interviews then you know that there are some questions which keep repeating e.g. difference between == and equals() method and may of it's popular cousins like HashMap vs Hashtable, ArrayList vs LinkedList, difference between equals() and hashCode(), or difference between Comparator and Comparable in Java. I call them frequently asked Java interview questions, and I suggest every Java developer to make a list of them for their own reference and revision. I am sure many Java programmer already has such list of questions handy, if not this is a good time to find and make your own list. These are the questions which you simply can't afford to miss, especially at freshers level. They appear at various stage of Java interviews. Most likely you will see them on telephonic round, where Interviewer just want to filter candidates between who knows Java and who doesn't.

Good thing about them is that they are so common that everyone knows about it. Though for freshers it could be little difficult. but as your experience grows these frequently asked questions become much easier to answer.

Some programmers also prefer to collect frequently asked Java questions based upon topics e.g. common questions from threads, strings, collections and other popular Java interview topics, some of them are already shared by me. In this list, I am sharing some of the most frequently asked questions from Java interviews.

By the way, when you look the list, you will see some of the classics are missing e.g. difference between String and StringBuffer, but there are many like that, and that is task for you to collect as many as possible and keep them handy to avoid searching from them just before interview. I will also add some more questions on this list but for now let's start with these 21 questions.




Frequently Asked Core Java Question and Answer

Frequently Asked Java Interview Questions AnswersHere is my list of some of the most common questions from Java interviews. You will mostly see these questions on telephonic round of your interview, but it is also asked a lot of time during face to face interviews. It's not limited to any particular company as well, in fact all major IT companies in India e.g. TCS, CTS, Infosys, Tech Mahindra, HCL, Oracle Financial Services, and major investment banks like Barclays Capital, Morgan Stanley, Goldman Sachs, Credit Suisse asked these kind of fact based question on their Java recruitment drives. By the way, some questions are really easy, and some are real tough, so it's mixed of both, but one thing is common, they are the most frequently asked questions from Java interviews.


1)  How Java achieves platform independence?
Answer : When we say Java is platform independent which means Java programs are not dependent on any platform, architecture or operating system like windows or Linux. Java achieve this by using Java virtual machine, when Java programs are compiled they are converted to .class file which is collection of byte code and directly understandable  by JVM. So the same Java program can run on any operating system only JVM can differ according to OS but all JVM can understand converted byte code that's how Java achieve platform independence. For a more detailed answer of this question, see here.


2)  What is ClassLoader in Java?
Answer : This was one of advanced question few years ago, but in span of two to three years, this has become very common. When a Java program is converted into .class file by Java compiler  which is collection of byte code  class loader is responsible to load that class file from file system,network or any other location. This class loader is nothing but also a class from which location they are loading the class according to that class loaders are three types :
  1.Bootstrap
  2.Extension
  3.System class loader .
to learn more classloaders in Java, see my article how classloader works in Java.


3)  Write a Java program to check if a number is Even or Odd?
Answer : This question is not particularly related to Java and also asked on other programming interviews e.g. C, C++ or C#. I have included this in my list of frequently asked questions from Java interviews because I have seen it more often than not.

import java.util.Scanner;

class TestEvenOdd {
 public static void main(String arg[]){
   int num;
   //Read a number
   Scanner input = new Scanner(System.in);
   System.out.println("Enter a number to check its Even or Odd");
   num = input.nextInt();
   // Conditional operator
   System.out.println((num%2)==0 ? "even number":"odd number");
  }
}


4)  Difference between ArrayList and HashSet in Java?
Answer : If I say that this is one of the most most frequently asked question to Java programmers, then it would not be wrong. Along with questions like ArrayList vs LinkedList and ArrayList vs Vector, this question is most common on various Java interviews. Here are some important differences between these two classes :

  1. ArrayList implements List interface while HashSet implements Set interface in Java.
  2. ArrayList is an ordered collection and maintains insertion order of elements while HashSet is an unordered collection and doesn't maintain any order.
  3. ArrayList allow duplicates while HashSet doesn't allow duplicates.
  4. ArrayList is backed by an Array while HashSet is backed by an HashMap instance.
  5. One more difference between HashSet and ArrayList is that its index based you can retrieve object by calling get(index) or remove objects by calling remove(index) while HashSet is completely object based. HashSet also doesn't provide get() method.



5)  What is double checked locking in Singleton?
Answer : Interviewer will never stop asking this question. It's mother of all frequently asked question in Java. Singleton means we can create only one instance of that class,in term of singleton DCL is the way to  ensure that at any cost only  one instance is created in multi-threaded environment its possible that simultaneously two thread trying to create instance of singleton class in that situation we cant sure that only one instance is created so avoid this situation using double checked locking by using synchronized block where we creating the object.

Code Example :
class SingletonClass {
  private DCL dcl = null;
  public DCL getDCL() {
    if (dcl == null) {
      synchronized {
        if (dcl == null)
          dcl = new DCL();
      }
    }
    return dcl;
  }
}
To learn more about why double checked locking was broken before Java 1.5, see this article.

6)  How do you create thread-safe Singleton in Java?
Answer : This is usually follow-up of previous Java question. There are more than one ways to do it. You can  create thread safe Singleton class in Java by creating the one and only instance during class loading. static fields are initialized during class loading and Classloader will guarantee that instance will not be visible until its fully created.


7)  When to use volatile variable in Java?
Answer : Volatile keyword is used with only variable  in Java and it guarantees that value of volatile variable will always be read from main memory and not from Thread's local cache. So we can use volatile to achieve synchronization because its guaranteed that all reader thread will see updated value of volatile variable once write operation completed, without volatile keyword different reader thread may see different values. Volatile modifier also helps to prevent reordering of code by compiler and offer visibility guarantee by happens-before relationship. See this article to learn more about volatile in Java.


8)  When to use transient variable in Java?
Answer : Transient in Java is  used to indicate that the variable should not be serialized. Serialization is a process of saving an object's state in Java. When we want to persist and object's state by default all instance variables in the object is stored. In some cases, if you want to avoid persisting some variables because we don’t have the necessity to transfer across the network. So, declare those variables as transient. If the variable is declared as transient, then it will not be persisted. This is the main purpose of the transient keyword, to learn more about transient variable in Java, see this tutorial.


9)  Difference between transient and volatile variable in Java?
Answer : This is again follow-up of previous two Java questions. You will see this question on top 10 on any list of Java frequently asked question. Here are some of the important difference between them.
Transient variable : transient keyword is used with those instance variable which will not participate in serialization process.we cannot use static with transient variable as they are part of instance variable.
Volatile variable : volatile keyword is used with only variable  in Java and it guarantees that value of volatile variable will always be read from main memory and not from Thread's local cache, it can be static.
to learn more differences and answer this question in detail, see here.


10) Difference between Serializable and Externalizable in Java?
Answer : If I say this is one of the most frequently asked Java question on both face-to-face and telephonic interview then it would be an exaggeration. Serialization is a default process of  serializing or persisting  any object's state in Java. It's triggered by implementing Serializable interface which is a marker interface (an interface without any method). While Externalizable is used to customize and control default serialization process which is implemented by application. Main difference between these two is that Externalizable interface provides complete control to the class implementing the interface whereas Serializable interface normally uses default implementation to handle the object serialization process.
Externalizable interface has two method writeExternal(ObjectOutput) and readExternal(ObjectInput) method which are used to handle customized object serialize process and in terms of performance its good because everything is under control. to learn more about this classical question, see this answer as well.


11) Can we override private method in Java?
Answer : No, we cannot override private methods in Java as if we declare any variable ,method as private that variable or method will be visible for that class only and also if we declare any method as private than they are bonded with class at compile time not in run time so we cant reference those method using any object so we cannot override private method in Java.


12) Difference between Hashtable and HashMap in Java?
Answer : This is another frequently asked question from Java interview. Main difference between HaspMap and Hashtable are following :

  • HashMap allows null values as key and value whereas Hashtable doesn't allow nulls.
  • Hashtable is thread-safe and can be shared between multiple threads whereas HashMap cannot be shared between multiple threads without proper synchronization.
  • Because of synchronization, Hashtable is considerably slower than HashMap, even in case of single threaded application.
  • Hashtable is a legacy class, which was previously implemented Dictionary interface. It was later retrofitted into Collection framework by implementing Map interface. On the other hand, HashMap was part of framework from it's inception.
  • You can also make your HashMap thread-safe by using Collections.synchronizedMap() method. It's performance is similar to Hashtable.
See here to learn more and understand when to use Hashtable and HashMap in Java



13) Difference between List and Set in Java?
Answer : One more classic frequently asked question. List and set both are very useful interfaces of  collections in Java and  difference between these two is list allows duplicate element but set don't allows duplicate elements another difference is list maintain the insertion order of element but set is unordered collection .list can have many null objects but set permit only one null element. This question is some time also asked as difference between Map, List and Set to make it more comprehensive as those three are major data structure from Java's Collection framework. To answer that question see this article.


14) Difference between ArrayList and Vector in Java
Answer : One more favourite of Java Interviewers, there is hardly any interview of junior Java developers, on which this question doesn't appear. In four and five round of interview, you will definitely going to see this question in some point of time. Vector and ArrayList both implement the list interface but main difference between these two is vector is synchronized and thread safe but list is not because of this list is faster than vector.


15) Difference between Hashtable and ConcurrentHashMap in Java?
Answer : Both Hashtable and ConcurrentHashMap is used in multi-threaded environment because both are therad-safe but main difference is on performance Hashtable's performance become poor if the size of Hashtable become large because it will be locked for long time during iteration but in case of concurrent HaspMap  only specific part is locked because concurrent HaspMap works on segmentation and other thread can access the element without iteration to complete. To learn more about how ConcurrentHashMap achieves it's thread-safety, scalability using lock stripping and non blocking algorithm, see this article as well.


16) Which two methods you will override for an Object to be used as Key in HashMap?
Answer : equals() and hashCode() methods needs to be override for an object to be used as key in HaspMap. In Map objects are stored as key and value.  put(key ,value) method is used to store objects in HashMap at this time hashCode() method is used to calculate the hash-code of key object and both key and value object is stored as map.entry.if two key objects have same hash-code then only value object is stored in that same bucket location but as a linked list value is stored and if hash code is different then another bucket location is created. While retrieving get(key) method is used at this time hash code of key object is calculated and then equals() method is called to compare value object. to learn more about how get() method of HashMap or Hashtable works, see that article.


17) Difference between wait and sleep in Java?
Answer:  Here are some important differences between wait and sleep in Java

  1. wait() method release the lock when thread is waiting but sleep() method hold the lock when thread is waiting.
  2. wait() is a instance method and sleep is a static method .
  3. wait method is always called from synchronized block or method but for sleep there is no such requirement.
  4. waiting thread can be awake by calling notify() and notifyAll() while sleeping thread can not be awaken by calling notify method.
  5. wait method is condition based while sleep() method doesn't require any condition. It is just used to put current thread on sleep.
  6. wait() is defined in java.lang.Object class while sleep() is defined in java.lang.Thread class


18) Difference between notify and notifyAll in Java?
Answer : main difference between notify and notifyAll is notify method will wake up  or notify only one thread and notifyall will notify all threads. If you are sure that more than one thread is waiting on monitor and you want all of them to give equal chance to compete for CPU, use notifyAll method. See here more differences between notify vs notifyAll.


19) What is load factor of HashMap means?
Answer : HashMap's performance depends on two things first initial capacity and second load factor whenever we create HashMap initial capacity number of bucket is created initially and load factor is criteria to decide when we have to increase the size of HashMap when its about to get full.


20) Difference between PATH and Classpath in Java?
Answer : PATH is a environment variable in Java which is used to help Java program to compile and run.To set the PATH variable we have to include JDK_HOME/bin directory in PATH environment variable and also we cannot override this variable. On the other hand,  ClassPath variable is used by class loader to locate and load compiled Java codes stored in .class file. We can set classpath we need to include all those directory where we have put either our .class file or JAR file which is required by your Java application,also we can override this environment variable.


21) Difference between extends Thread and implements Runnable in Java
This is the 21st frequently asked question in my list. You will see this question as first or second on multi-threading topic. One of the main point to put across while answering this question is Java's multiple inheritance support. You cannot more than one class, but you can implement more than one interface. If you extend Thread class just to override run() method, you lose power of extending another class, while in case of Runnable, you can still implement another interface or another class. One more difference is that Thread is abstraction of independent path of execution, while Runnable is abstraction of independent task, which can be executed by any thread. That's why it's better to implement Runnable than extending Thread class in Java. If you like to dig more, see this answer.


That's all on this list of 20 most frequently asked Java interview questions and answers. By the way, this is not just the only list you got here, I have shared a lot of interview questions on topic wise e.g. you can find frequently asked questions from Thread, Collections, Strings and other important Java classes. Apart from coding questions, these fact based Java programming language questions are very important to do well on any interview. It's even more important for freshers and less experienced developer because they are usually asked these questions more frequently than experienced developers. By the way, you are most welcome to contribute in this list.


12 comments:

  1. Can you please share a list of frequently asked Java programs on Interviews as well?

    ReplyDelete
    Replies
    1. Interesting question, some of the frquently asked programs on Java interviews are :
      - reverse string without using stringbuffer
      - writing code to avoid deadlock
      - four ways to loop over map
      - multi-threaded version of getInstance() method of Singleton class
      - count number of 1 in an integer number
      - converting string to bytes

      etc.

      Delete
  2. Great article. In #5, the Singleton example - you may want to show the private constructor method for the SingletonClass. As written, you could create multiple instances of the SingletonClass, each with their own DCL object.

    ReplyDelete
  3. Couple of core Java questions which have seen more frequently on interviews are :

    - can two unequal object has same hashcode?
    - can we create instance of abstrat class?
    - how do you make an object immutable?
    - difference on comparing String over == and equals?
    - difference between comparator and comparable?

    I like to contribute because I have benefitted a lot from your side :) Thank you very much for your time and effort.

    ReplyDelete
  4. I love Java interviews, most of the time you will see these repeated, frequently asked question, which even a kid can answer. If you are an experienced Java developer, having worked for more than 4 years in industry, you don't need to worry about FREQUENTLY asked, MOST asked, TOP 20, you already know answers, better spend you time learning DataStructure, Algorithm, Programming or Design.

    ReplyDelete
  5. If you are a Java Developer of just couple of month of experience but has a computer science degree, I would say to prepare well for DS and Algo, you can check some sample Data structure questions here, once you are good at that, just prepare some basic Java questions for telephonic round. Once you are done that you are ready, but if you want more confidence, you should check this Mega list of Java questions, which contains core Java questions including multi-threading, exception handling, collections, GC, design pattern and OOP questions from last 5 years of Java interviews. This will help you to clear any Java job interview, at least for small companies.

    ReplyDelete
  6. Can you please share some Java interview questions from Citiback, RBS and Morgan Stanley India Mumbai for Java developers with 5+ years experience?

    ReplyDelete
  7. What is difference between class and function?

    ReplyDelete
    Replies
    1. class is an object oriented construct which is blue print to create object, which can have both state and behavior, while function is just a block of code which is named for reuse.

      Delete
  8. At 12...6+ JVMs are smart enough to detect there's no contention on certain locks and they may apply lock elision. In single threaded applications you may actually get no locking at all on a Hashtable

    ReplyDelete
  9. For more interview questions based on different levels of experience, visit site http://myjavainterview.com/introduction/

    ReplyDelete