Java Viva Questions
Java Viva Questions
Example:
public class Addition{
public static void main(String[] args){
Addion add = new Addition();//Object creation
}
}
The above code creates the object for the Addition class.
get A(){
}
set A(int a){
if(a>0){// Here condition is applied
.........
}
}
For encapsulation, we need to make all the instance variables 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.
Example:
Public class Manipulation(){ //Super class
public void add(){
}
}
public class Addition extends Manipulation(){ // Sub class
public void add(){
}
public static void main(String args[]){
Manipulation addition = new Addition();//Manipulation is reference type and Addition is ref
addition.add();
}
}
Using the Manipulation reference type we can call the Addition class “add()” method. This
ability is known as Polymorphism. Polymorphism is applicable for overriding and not
for overloading.
Q #13) What is meant by Method Overriding?
Answer: Method overriding happens if the sub-class method satisfies the below
conditions with the Super-class method:
• Method name should be the same
• The argument should be the same
• Return type should also be the same
The key benefit of overriding is that the Sub-class can provide some specific information
about that sub-class type than the super-class.
Example:
public class Manipulation{ //Super class
public void add(){
………………
}
}
}
Public static void main(String args[]){
Addition addition = new Addition();
addition.add();
}
}
Here the add() method has different parameters in the Addition class is overloaded in the
same class as with the super-class.
Example:
public abstract class Manupulation{
public abstract void add();//Abstract method declaration
Public void subtract(){
}
}
• An abstract class may have a non- abstract method also.
• The concrete Subclass which extends the Abstract class should provide the
implementation for abstract methods.
Q #17) Difference between Array and Array List.
Answer: The Difference between Array and Array List can be understood from the
table below:
Array
Array List
Size should be given at the time of array Size may not be required. It changes the size
declaration. dynamically.
.
If the name-value has changed from “book” to “pen”.
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:
String Buffer name =”book”;
Once the name value has been changed to “pen” then the “book” is erased in the stack.
String Builder:
This is the same as String Buffer except for the String Builder which is not threaded safely
that is not synchronized. So obviously the performance is fast.
Public members of Class A are visible to Class B (same package) as well as Class C
(different packages).
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 are visible only in that class. It is invisible for class B as well as
class C.
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.
Protected:
.
Protected is the 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 Class C even if it is
outside the package.
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
Inserted elements are in random order Maintains the elements in the sorted order
Q #25) What are all the Classes and Interfaces that are available in the collections?
Answer: 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
• TreeMap
• Linked Hashed Map
Queue:
• Priority Queue
Q #26) What is meant by Ordered and Sorted in collections?
Answer:
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 specific order.
Sorted: Sorting mechanisms can be applied internally or externally so that the group of
objects sorted in a particular collection is based on the properties of the objects.
Q #27) Explain the different lists available in the collection.
Answer: Values added to the list are based on the index position and it is ordered by index
position. Duplicates are allowed.
The types of Lists are:
a) Array List:
• Fast iteration and fast Random Access.
• It is an ordered collection (by index) and not sorted.
• It implements the Random Access Interface.
Example:
public class Fruits{
public static void main (String [ ] args){
ArrayList <String>names=new ArrayList <String>();
names.add (“apple”);
names.add (“cherry”);
names.add (“kiwi”);
names.add (“banana”);
names.add (“cherry”);
System.out.println (names);
}
}
Output:
[Apple, cherry, kiwi, banana, cherry]
From the output, Array List maintains the insertion order and it accepts the duplicates. But
it’s not sorted.
b) Vector:
It is the same as Array List.
Vector also maintains the insertion order and accepts the duplicates.
c) Linked List:
• Elements are doubly linked to one another.
• Performance is slower than the Array list.
• Good choice for insertion and deletion.
• In Java 5.0 it supports common queue methods peek( ), Pool ( ), Offer ( ) etc.
Example:
public class Fruit {
public static void main (String [ ] args){
Linkedlist <String> names = new linkedlist <String> ( ) ;
names.add(“banana”);
names.add(“cherry”);
names.add(“apple”);
names.add(“kiwi”);
names.add(“banana”);
System.out.println (names);
}
}
Output:
[ banana,cherry,apple,kiwi,banana]
It maintains the insertion order in which they have been added to the Set. Duplicates are not
allowed.
c) Tree Set:
• It is one of the two sorted collections.
• Uses the “Read-Black” tree structure and guarantees that the elements will be in
ascending order.
• We can construct a tree set with the constructor by using a comparable (or)
comparator.
Example:
public class Fruits{
public static void main (String[ ]args) {
Treeset<String> names= new TreeSet<String>( ) ;
names.add(“cherry”);
names.add(“banana”);
names.add(“apple”);
names.add(“kiwi”);
names.add(“cherry”);
System.out.println(names);
}
}
Output:
[apple, banana, cherry, kiwi]
TreeSet sorts the elements in ascending order. And duplicates are not allowed.
b) Hash Table:
• Like the vector key, methods of the class are synchronized.
• Thread safety and therefore slows the performance.
• It doesn’t allow anything that is null.
Example:
public class Fruit{
public static void main(String[ ]args){
Hashtable<Sting,String> names =new Hashtable<String,String>( );
names.put(“key1”,“cherry”);
names.put(“key2”,“apple”);
names.put(“key3”,“banana”);
names.put(“key4”,“kiwi”);
names.put(“key2”,“orange”);
System.out.println(names);
}
}
Output:
{key2=apple, key1=cherry,key4=kiwi, key3=banana}
d) TreeMap:
• Sorted Map.
• Like Tree set, we can construct a sort order with the constructor.
Example:
public class Fruit{
public static void main(String[ ]args){
TreeMap<Sting,String> names =new TreeMap<String,String>( );
names.put(“key1”,“cherry”);
names.put(“key2”,“banana”);
names.put(“key3”,“apple”);
names.put(“key4”,“kiwi”);
names.put(“key2”,“orange”);
System.out.println(names);
}
}
Output:
{key1=cherry, key2=banana, key3 =apple, key4=kiwi}
It is sorted in ascending order based on the key. Duplicate keys are not allowed.
Checked Exceptions must either declare the exception using throws keyword (or)
surrounded by appropriate try/catch.
For Example, ClassNotFound Exception
b) 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
Q #33) What are the different ways to handle exceptions?
Answer: Two different ways to handle exceptions are explained below:
a) Using try/catch:
The 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:
class Manipulation{
public static void main(String[] args){
add();
}
Public void add(){
try{
addition();
}catch(Exception e){
e.printStacktrace();
}
}
}
b) By declaring throws keyword:
At the end of the method, we can declare the exception using throws keyword.
Example:
class Manipulation{
public static void main(String[] args){
add();
}
public void add() throws Exception{
addition();
}
}
Q #34) What are the advantages of Exception handling?
Answer: The advantages are as follows:
• The normal flow of the execution won’t be terminated if an exception gets handled
• We can identify the problem by using catch declaration
Q #35) What are the Exception handling keywords in Java?
Answer: Enlisted below are the two Exception Handling Keywords:
a) 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) finally (or) both. But any
one of the blocks is mandatory.
b) catch:
This is followed by a try block. Exceptions are caught here.
c) finally:
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.
Q #41) What does the yield method of the Thread class do?
Answer: 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:
public static void main (String[] args){
Thread t = new Thread ();
t.start ();
}
public void run(){
Thread.yield();
}
}
Q #42) Explain about wait () method.
Answer: wait () method is used to make the thread to wait in the waiting pool. When the
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:
public static void main (String[] args){
Thread t = new Thread ();
t.start ();
Synchronized (t) {
Wait();
}
}
Q #43) Difference between notify() method and notifyAll() method in Java.
Answer: The differences between notify() method and notifyAll() method are enlisted
below:
notify() notifyAll()
This method is used to send a signal to wake up a This method sends the signal to wake up all the
single thread in the waiting pool. threads in a waiting spool.
Q #44) How to stop a thread in java? Explain about sleep () method in a thread?
Answer: We can stop a thread by using the following thread methods:
• 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:
Thread. Sleep (2000)
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.
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.
The two stacks look as shown below.
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.
Question 50: What is difference between paint and repaint in Java Swing?
Answer : This can be a tough Java question if you are not familiar with Swing API. Well, this is
similar to start() and run() method of thread class. As calling start() method will eventually
calls run() method of Runnable interface, Calling repaint() will call paint() method in Swing.
Since painting can only be done in EDT thread, repaint() just put a paint request in EDT Queue,
later EDT thread may combine several repaint request to one and can perform
repainting. repaint() is a not a blocking method in Java and returns quickly.