Core Java Interview Question Page 9
Question: What are the uses of Serialization?
Answer: In some types of applications you have to write the code to serialize objects, but in many cases serialization is performed behind the scenes by various server-side containers.
These are some of the typical uses of serialization:
- To persist data for future use.
- To send data to a remote computer using such client/server Java technologies as RMI or socket programming.
- To "flatten" an object into array of bytes in memory.
- To exchange data between applets and servlets.
- To store user session in Web applications .
- To activate/passivate enterprise java beans.
- To send objects between the servers in a cluster.
Question: what is a collection ?
Answer: Collection is a group of objects. java.util package provides important types of collections. There are two fundamental types of collections they are Collection and Map. Collection types hold a group of objects, Eg. Lists and Sets where as Map types hold group of objects as key, value pairs Eg. HashMap and Hashtable.
Question: For concatenation of strings, which method is good, StringBuffer or String ?
Answer: StringBuffer is faster than String for concatenation.
Question: What is Runnable interface ? Are there any other ways to make a java program as multithred java program?
Answer: There are two ways to create new kinds of threads:
- Define a new class that extends the Thread class
- Define a new class that implements the Runnable interface, and pass an object of that class to a Thread's constructor.
- An advantage of the second approach is that the new class can be a subclass of any class, not just of the Thread class.
Here is a very simple example just to illustrate how to use the second approach to creating threads: class myThread implements Runnable { public void run() { System.out.println("I'm running!"); } } public class tstRunnable { public static void main(String[] args) { myThread my1 = new myThread(); myThread my2 = new myThread(); new Thread(my1).start(); new Thread(my2).start(); }
Question: How can i tell what state a thread is in ?
Answer: Prior to Java 5, isAlive() was commonly used to test a threads state. If isAlive() returned false the thread was either new or terminated but there was simply no way to differentiate between the two.
Starting with the release of Tiger (Java 5) you can now get what state a thread is in by using the getState() method which returns an Enum of Thread.States. A thread can only be in one of the following states at a given point in time.
NEW |
A Fresh thread that has not yet started to execute. |
RUNNABLE |
A thread that is executing in the Java virtual machine. |
BLOCKED |
A thread that is blocked waiting for a monitor lock. |
WAITING |
A thread that is wating to be notified by another thread. |
TIMED_WAITING |
A thread that is wating to be notified by another thread for a specific amount of time |
TERMINATED |
A thread whos run method has ended. |
The folowing code prints out all thread states. public class ThreadStates{ public static void main(String[] args){ Thread t = new Thread(); Thread.State e = t.getState(); Thread.State[] ts = e.values(); for(int i = 0; i < ts.length; i++){ System.out.println(ts[i]); } } }
Question: What methods java providing for Thread communications ?
Answer: Java provides three methods that threads can use to communicate with each other: wait, notify, and notifyAll. These methods are defined for all Objects (not just Threads). The idea is that a method called by a thread may need to wait for some condition to be satisfied by another thread; in that case, it can call the wait method, which causes its thread to wait until another thread calls notify or notifyAll.