Core Java Concepts-2
Core Java Concepts-2
Home FREE Updates Resources Write And Earn FREE EBooks Tutorials Courses Manual Testing
Top 50+ Core Java Interview Questions and Answers Join Over 200,000+ Testers
Last Updated: January 23, 2019
Get premium ebooks and testing tips.
This post on JAVA Interview Questions is prepared to help you understand the basic concepts of Java
programming for interview purposes. All the important JAVA concepts are explained here with
examples for your easy understanding.
Top FREE Training Tutorials
This tutorial covers JAVA topics like basic Java de nitions, Oops concepts, Access speci ers,
Collections, Exceptions, Threads, Serialization etc., with examples to make you get ready perfectly to Free QA Training
face any JAVA interview con dently. Selenium Tutorials
QTP/UFT Tutorials
ISTQB Free Study Guide
ISTQB Premium Study Guide
Quality Center Tutorials
LoadRunner Tutorials
JMeter Tutorials
JIRA Tutorials
VBScript Tutorials
Best Test Management Tools
Appium Studio Tutorials
Unix Tutorials
Free DevOps Training
Free JAVA Tutorials
Free Python Tutorials
101+ Interview Questions
Most Popular Java Interview Questions
Given below is a comprehensive list of most important and commonly asked basic and advanced Java
programming interview questions with detailed answers.
Adv
Q #1) What is JAVA?
Java is a collection of objects. It was developed by Sun Microsystems. There are a lot of applications,
websites and Games that are developed using Java.
Oops concepts
Object-oriented
Inheritance
Encapsulation
Polymorphism
Abstraction
Platform independent: A single program works on different platforms without any modi cation.
High Performance: JIT (Just In Time compiler) enables high performance in Java. JIT converts
the bytecode into machine language and then JVM starts the execution.
Multi-threaded: A ow of execution is known as a Thread. JVM creates a thread which is called
main thread. The user can create multiple threads by extending the thread class or by
implementing Runnable interface.
Ans: Java uses Just In Time compiler to enable high performance. JIT is used to convert the
instructions into bytecodes.
When a new object is created in a program a constructor gets invoked corresponding to the
class.
The constructor is a method which has the same name as class name.
If a user doesn’t create a constructor implicitly a default constructor will be created.
The constructor can be overloaded.
If the user created a constructor with a parameter then he should create another constructor
explicitly without a parameter.
Ans: Local variables are de ned in the method and scope of the variables that have existed inside the
method itself.
An instance variable is de ned inside the class and outside the method and scope of the variables
exist throughout the class.
Ans: All Java codes are de ned in a class. A Class has variables and methods.
Methods are the place where the exact business logic has to be done. It contains a set of statements
(or) instructions to satisfy the particular requirement.
Example:
Ans: An instance of a class is called object. The object has state and behavior.
Whenever the JVM reads the “new()” keyword then it will create an instance of that class.
Example:
The above code creates the object for the Addition class.
Inheritance
Encapsulation
Polymorphism
Abstraction
Interface
Ans: Inheritance means one class can extend to another class. So that the codes can be reused from
one class to another class.
Existing class is known as Super class whereas the derived class is known as a sub class.
Example:
1 Super class:
2 public class Manupulation(){
3 }
4 Sub class:
5 public class Addition extends Manipulation(){
6 }
Inheritance is applicable for public and protected members only. Private members can’t be inherited.
Example:
get A(){
}
set A(int a){
if(a>0){// Here condition is applied
.........
}
}
For encapsulation, we need to make all the instance variables as private and create setter and getter
for those variables. Which in turn will force others to call the setters rather than access the data
directly.
A single object can refer the super class or sub-class depending on the reference type which is called
polymorphism.
Example:
1
Public class Manipulation(){ //Super class
2
public void add(){
3
}
4
}
5
public class Addition extends Manipulation(){ // Sub class
6
public void add(){
7
}
8
public static void main(String args[]){
9
Manipulation addition = new Addition();//Manipulation is reference type and Addition
is reference type
10 addition.add();
11 }
12 }
Using Manipulation reference type we can call the Addition class “add()” method. This ability is known
as Polymorphism.
Ans: Method overriding happens if the sub class method satis es the below conditions with the
Super class method:
The key bene t of overriding is that the Sub class can provide some speci c information about that
sub class type than the super class.
Example:
addition.add() method calls the add() method in the Sub class and not the parent class. So it
overrides the Super class method and is known as Method Overriding.
Ans: Method overloading happens for different classes or within the same class.
For method overloading, subclass method should satisfy the below conditions with the Super class
method (or) methods in the same class itself:
Example:
}
Public static void main(String args[]){
Addition addition = new Addition();
addition.add();
}
}
Here the add() method having different parameters in the Addition class is overloaded in the same
class as well as with the super class.
Ans: Multiple inheritance cannot be achieved in java. To overcome this problem Interface concept is
introduced.
An interface is a template which has only method declarations and not the method implementation.
Example:
All the methods in the interface are internally public abstract void.
All the variables in the interface are internally public static nal that is constants.
Classes can implement the interface and not extends.
The class which implements the interface should provide an implementation for all the
methods declared in the interface.
Ans: We can create the Abstract class by using “Abstract” keyword before the class name. An
abstract class can have both “Abstract” methods and “Non-abstract” methods that are a concrete
class.
Abstract method:
The method which has only the declaration and not the implementation is called the abstract method
and it has the keyword called “abstract”. Declarations are the ends with a semicolon.
Example:
Ans: The Difference between Array and Array List can be understood from the below table:
Array
Array List
Size should be given at the time of array Size may not be required. It changes the size
declaration. dynamically.
Ans: String: String variables are stored in “constant string pool”. Once the string reference changes
the old value that exists in the “constant string pool”, it cannot be erased.
Example:
String Buffer:
Here string values are stored in a stack. If the values are changed then the new value replaces
the older value.
The string buffer is synchronized which is thread-safe.
Performance is slower than the String Builder.
Example:
Once the name value has been changed to “pen” then the “book” is erased in the stack.
String Builder:
This is same as String Buffer except for the String Builder which is not threaded safety that is not
synchronized. So obviously performance is fast.
Public:
Public members are visible in the same package as well as the outside package that is for other
packages.
Public members in Class A are visible to Class B (Same package) as well as Class C (Different
package).
Private:
Private members are visible in the same class only and not for the other classes in the same package
as well as classes in the outside packages.
Private members in class A is visible only in that class. It is invisible for class B as well as class C.
Ans: Default: Methods and variables declared in a class without any access speci ers are called
default.
Default members in Class A are visible to the other classes which are inside the package and invisible
to the classes which are outside the package.
So Class A members are visible to the Class B and invisible to the Class C.
Protected:
.
Protected is same as Default but if a class extends then it is visible even if it is outside the package.
Class A members are visible to Class B because it is inside the package. For Class C it is invisible but
if Class C extends Class A then the members are visible to the Class C even if it is outside the
package.
HashMap HashTable
Iterator is used to iterate the values Enumerator is used to iterate the values
Allows one null key and multiple null values Doesn’t allow anything that is null
HashSet TreeSet
Inserted elements are in random order Maintains the elements in the sorted order
Abstract Class:
Abstract classes have a default constructor and it is called whenever the concrete subclass is
instantiated.
Contains Abstract methods as well as Non-Abstract methods.
The class which extends the Abstract class shouldn’t require implementing all the methods,
only Abstract methods need to be implemented in the concrete sub-class.
Abstract Class contains instance variables.
Interface:
Ans: Collection is a framework that is designed to store the objects and manipulate the design to
store the objects.
Searching
Sorting
Manipulation
Insertion
Deletion
A group of objects is known as collections. All the classes and interfaces for collecting are available
in Java utile package.
Q #25) What are all the Classes and Interfaces that are available in the collections?
Ans: Given below are the Classes and Interfaces that are available in Collections:
Interfaces:
Collection
List
Set
Map
Sorted Set
Sorted Map
Queue
Classes:
Lists:
Array List
Vector
Linked List
Sets:
Hash set
Linked Hash Set
Tree Set
Maps:
Hash Map
Hash Table
Tree Map
Linked Hashed Map
Queue:
Priority Queue
Ans:
Ordered:
It means the values that are stored in a collection is based on the values that are added to the
collection. So we can iterate the values from the collection in a speci c order.
Sorted:
Sorting mechanism can be applied internally or externally so that the group of objects sorted in a
particular collection is based on properties of the objects.
Ans: Values added to the list is based on the index position and it is ordered by index position.
Duplicates are allowed.
Array List:
Example:
Output:
From the output, Array List maintains the insertion order and it accepts the duplicates. But not
sorted.
Vector:
Example:
Output:
[cherry,apple,banana,kiwi,apple]
Vector also maintains the insertion order and accepts the duplicates.
Linked List:
Example:
Output
[ banana,cherry,apple,kiwi,banana]
Ans: Set cares about uniqueness. It doesn’t allow duplications. Here “equals ( )” method is used to
determine whether two objects are identical or not.
Hash Set:
Example:
Output:
Example:
Output:
Maintains the insertion order in which they have been added to the Set. Duplicates are not allowed.
Tree Set:
Example:
Output:
TreeSet sorts the elements in an ascending order. And duplicates are not allowed.
Ans: Map cares about unique identi er. We can map a unique key to a speci c value. It is a key/value
pair. We can search a value, based on the key. Like set, Map also uses “equals ( )” method to
determine whether two keys are same or different.
Hash Map:
Example:
Output:
Hash Table:
Example:
Output:
Example:
Output:
TreeMap:
Sorted Map.
Like Tree set, we can construct a sort order with the constructor.
Example:
Output:
It is sorted in ascending order based on the key. Duplicate keys are not allowed.
Priority Queue: Linked list class has been enhanced to implement the queue interface. Queues can be
handled with a linked list. Purpose of a queue is “Priority-in, Priority-out”.
Hence elements are ordered either naturally or according to the comparator. The elements ordering
represents their relative priority.
Ans: An Exception is a problem that can occur during the normal ow of an execution. A method can
throw an exception when something wails at runtime. If that exception couldn’t be handled, then the
execution gets terminated before it completes the task.
If we handled the exception, then the normal ow gets continued. Exceptions are a subclass of
java.lang.Exception.
1 try{
2 //Risky codes are surrounded by this block
3 }catch(Exception e){
4 //Exceptions are caught in catch block
5 }
Checked Exception:
These exceptions are checked by the compiler at the time of compilation. Classes that extend
Throwable class except Runtime exception and Error are called checked Exception.
Checked Exceptions must either declare the exception using throes keyword (or) surrounded by
appropriate try/catch.
Unchecked Exception:
These exceptions are not checked during the compile time by the compiler. The compiler doesn’t
force to handle these exceptions.
It includes:
Arithmetic Exception
ArrayIndexOutOfBounds Exception
A risky code is surrounded by try block. If an exception occurs, then it is caught by the catch block
which is followed by the try block.
Example:
1 class Manipulation{
2 public static void main(String[] args){
3 add();
4 }
5 Public void add(){
6 try{
7 addition();
8 }catch(Exception e){
9 e.printStacktrace();
10 }
11 }
12 }
At the end of the method, we can declare the exception using throws keyword.
Example:
1 class Manipulation{
2 public static void main(String[] args){
3 add();
4 }
5 public void add() throws Exception{
6 addition();
7 }
8 }
try:
When a risky code is surrounded by a try block. An exception occurring in the try block is caught by a
catch block. Try can be followed either by catch (or) nally (or) both. But any one of the blocks is
mandatory.
catch:
nally:
This is followed either by try block (or) catch block. This block gets executed regardless of an
exception. So generally clean up codes are provided here.
Ans: Exception is rst thrown from the method which is at the top of the stack. If it doesn’t catch,
then it pops up the method and moves to the previous method and so on until they are got.
Example:
From the above example, the stack looks like as shown below:
If an exception occurred in the addition() method is not caught, then it moves to the method add().
Then it is moved to the main() method and then it will stop the ow of execution. It is called
Exception Propagation.
Ans:
Final variable:
Once a variable is declared as nal, then the value of the variable could not be changed. It is like a
constant.
Example:
Final method:
A nal keyword in a method that couldn’t be overridden. If a method is marked as a nal, then it
can’t be overridden by the subclass.
Final class:
If a class is declared as nal, then the class couldn’t be subclassed. No class can extend the nal
class.
Ans: In Java, the ow of a execution is called Thread. Every java program has at least one thread
called main thread, the Main thread is created by JVM. The user can de ne their own threads by
extending Thread class (or) by implementing Runnable interface. Threads are executed concurrently.
Example:
Extending a Thread class and override the run method. The thread is available in java.lang.thread.
Example:
The disadvantage of using a thread class is that we cannot extend any other classes because we have
already extend the thread class. We can overload the run () method in our class.
Another way is implementing the runnable interface. For that we should provide the implementation
for run () method which is de ned in the interface.
Example:
Ans: Join () method is used to join one thread with the end of the currently running thread.
Example:
From the above code, the main thread started the execution. When it reaches the code t.start() then
‘thread t’ starts the own stack for the execution. JVM switches between the main thread and ‘thread
t’.
Once it reaches the code t.join() then ‘thread t’ alone is executed and completes its task, then only
main thread started the execution.
It is a non-static method. Join () method has overloaded version. So we can mention the time
duration in join () method also “.s”.
Ans: A yield () method moves the currently running thread to a runnable state and allows the other
threads for execution. So that equal priority threads have a chance to run. It is a static method. It
doesn’t release any lock.
Yield () method moves the thread back to the Runnable state only, and not the thread to sleep (),
wait () (or) block.
Example:
Ans: wait () method is used to make the thread to wait in the waiting pool. When a wait () method is
executed during a thread execution then immediately the thread gives up the lock on the object and
goes to the waiting pool. Wait () method tells the thread to wait for a given amount of time.
Then the thread will wake up after notify () (or) notify all () method is called.
Wait() and the other above-mentioned methods do not give the lock on the object immediately until
the currently executing thread completes the synchronized code. It is mostly used in synchronization.
Example:
Ans: Given below are few differences between notify() method and notifyAll() method
notify() notifyAll()
This method is used to send a signal to wake up a This method sends the signal to wake up all
single thread in the waiting pool. the threads in a waiting spool.
Q #44) How to stop a thread in java? Explain about sleep () method in a thread?
Sleeping
Waiting
Blocked
Sleep:
Sleep () method is used to sleep the currently executing thread for the given amount of time. Once
the thread is wake up it can move to the runnable state. So sleep () method is used to delay the
execution for some period.
It is a static method.
Example:
So it delays the thread to sleep 2 milliseconds. Sleep () method throws an uninterrupted exception,
hence we need to surround the block with try/catch.
Ans: If we need our class to extend some other classes other than the thread then we can go with
the runnable interface because in java we can extend only one class.
If we are not going to extend any class then we can extend the thread class.
Ans: Start() method creates new thread and the code inside the run () method is executed in the new
thread. If we directly called the run() method then a new thread is not created and the currently
executing thread will continue to execute the run() method.
Ans: Multiple threads are executed simultaneously. Each thread starts their own stack based on the
ow (or) priority of the threads.
Example Program:
On the 1st line execution, JVM calls the main method and the main thread stack looks as shown
below.
Once the execution reaches, t.start () line then a new thread is created and the new stack for the
thread is also created. Now JVM switches to the new thread and the main thread are back to the
runnable state.
Now, the user thread executed the code inside the run() method.
Once the run() method has completed, then JVM switches back to the main thread and the User
thread has completed the task and the stack was disappeared.
JVM switches between each thread until both the threads are completed. This is called Multi-
threading.
New
Runnable
Running
Non-runnable (Blocked)
Terminated
New:
In New state, Thread instance has been created but start () method is not yet invoked. Now the
thread is not considered alive.
Runnable:
The Thread is in runnable state after invocation of the start () method, but before the run () method is
invoked. But a thread can also return to the runnable state from waiting/sleeping. In this state the
thread is considered alive.
Running:
The thread is in running state after it calls the run () method. Now the thread begins the execution.
Non-Runnable(Blocked):
The thread is alive but it is not eligible to run. It is not in runnable state but also, it will return to
runnable state after some time.
Terminated :
Once the run method is completed then it is terminated. Now the thread is not alive.
Ans: Synchronization makes only one thread to access a block of code at a time. If multiple thread
accesses the block of code, then there is a chance for inaccurate results at the end. To avoid this
issue, we can provide synchronization for the sensitive block of codes.
The synchronized keyword means that a thread needs a key in order to access the synchronized code.
Locks are per objects. Every Java object has a lock. A lock has only one key. A thread can access a
synchronized method only if the thread can get the key to the objects lock.
Example:
Ans: Synchronization is not recommended to implement all the methods. Because if one thread
accesses the synchronized code then the next thread should have to wait. So it makes slow
performance on the other end.
Ans: Converting a le into a byte stream is known as Serialization. The objects in the le is converted
to the bytes for security purposes. For this, we need to implement java.io.Serializable interface. It has
no method to de ne.
Variables that are marked as transient will not be a part of the serialization. So we can skip the
serialization for the variables in the le by using a transient keyword.
Ans: Transient variables are not part of the serialization process. During deserialization, the transient
variables values are set to default value. It is not used with static variables.
Example:
Q #53) Which methods are used during Serialization and Deserialization process?
Ans: ObjectOutputStream and ObjectInputStream classes are higher level java.io. package. We will use
them with lower level classes FileOutputStream and FileInputStream.
ObjectOutputStream.writeObject —->Serialize the object and write the serialized object to a le.
Ans: Volatile variable values are always read from the main memory and not from thread’s cache
memory. This is used mainly during synchronization. It is applicable only for variables.
Example:
Ans: These are the difference between serialization and deserialization in java:
Serialization Deserialization
Ans: Whenever an object is Serialized, the object is stamped with a version ID number for the object
class. This ID is called the SerialVersionUID. This is used during deserialization to verify that the
sender and receiver that are compatible with the Serialization.
Conclusion
These are some of the core JAVA interview questions that cover both the basic and advanced Java
concepts for programming as well as developer interview, and these are ones which have been
answered by our JAVA experts.
I hope that this tutorial would have given you a great insight into JAVA core coding concepts in detail.
The explanations given above will really enrich your knowledge and increase your understanding of
JAVA programming.