Core Java Interview Questions (Ganesh)
Core Java Interview Questions (Ganesh)
The program compiles properly but at runtime it will give "Main method not
public." message.
Pass by reference means, passing the address itself rather than passing the
value. Pass by value means passing a copy of the value.
hashCode()
Or
What gives java it’s “write once and run anywhere” nature?
All Java programs are compiled into class files that contain byte codes.
These byte codes can be run in any platform and hence java is said to be
platform independent.
Expain the reason for each keyword of public static void main(String
args[])?
static: Java environment should be able to call this method without creating
an instance of the class , so this method must be declared as static.
void: main does not return anything so the return type must be void
The argument String indicates the argument type which is given at the
command line and arg is an array for string given during command line.
Or
How is it possible for two String objects with identical values not to be
equal under the == operator?
The == operator compares two objects to determine if they are the same
object in memory i.e. present in the same memory location. It is possible for
two String objects to have the same value, but located in different areas of
memory.
Output
== comparison : true
== comparison : true
Using equals method : true
false
Using equals method : true
What if the static modifier is removed from the signature of the main
method?
Or
What is the difference between final, finally and finalize? What do you
understand by the java final keyword?
Or
Or
Or
Global variables are globally accessible. Java does not support globally
accessible variables due to following reasons:
* The global variables breaks the referential transparency
* Global variables creates collisions in namespace.
A while statement (pre test) checks at the beginning of a loop to see whether
the next loop iteration should occur. A do while statement (post test) checks
at the end of a loop to see whether the next iteration of a loop should occur.
The do statement will always execute the loop body at least once.
There are three main principals of oops which are called Polymorphism,
Inheritance and Encapsulation.
Example
int i = 1000;
Or
Example
long i = 700.20;
The Java Virtual Machine is software that can be ported onto various
hardware-based platforms.
Or
Or
Access specifiers are keywords that determine the type of access to the
member of a class. These keywords are for allowing privileges to parts of a
program such as functions and variables. These are:
• Public: accessible to all classes
• Protected: accessible to the classes within the same package and any
subclasses.
• Private: accessible only to the class to which they belong
• Default: accessible to the class to which they belong and to subclasses
within the same package
The 8 primitive types are byte, char, short, int, long, float, double, and
boolean.
Or
Or
Or
A static variable is associated with the class as a whole rather than with
specific instances of a class. Each object will share a common copy of the
static variables i.e. there is only one copy per class, no matter how many
objects are created from it. Class variables or static variables are declared
with the static keyword in a class. These are declared outside a class and
stored in static memory. Class variables are mostly used for constants. Static
variables are always called by the class name. This variable is created when
the program starts and gets destroyed when the programs stops. The scope of
the class variable is same an instance variable. Its initial value is same as
instance variable and gets a default value when its not initialized
corresponding to the data type. Similarly, a static method is a method that
belongs to the class rather than any object of the class and doesn't apply to
an object or even require that any objects of the class have been instantiated.
Static methods are implicitly final, because overriding is done based on
the type of the object, and static methods are attached to a class, not an
object. A static method in a super class can be shadowed by another static
method in a subclass, as long as the original method was not declared final.
However, you can't override a static method with a non-static method. In
other words, you can't change a static method into an instance method in a
subclass.
What is the difference between the boolean & operator and the &&
operator?
It uses those low order bytes of the result that can fit into the size of the type
allowed by the operation.
In declaration we only mention the type of the variable and its name without
initializing it. Defining means declaration + initialization. E.g. String s; is
just a declaration while String s = new String ("bob"); Or String s = "bob";
are both definitions.
In Java the arguments (primitives and objects) are always passed by value.
With objects, the object reference itself is passed by value and so both the
original reference and parameter copy both refer to the same object.
The process of converting one data type to another is called Casting. There
are two types of casting in Java; these are implicit casting and explicit
casting.
The String array is empty. It does not have any element. This is unlike C/C+
+ where the first element by default is the program name. If we do not
provide any arguments on the command line, then the String array of main
method will be empty but not null.
How can one prove that the array is not null but empty?
Yes. While starting the application we mention the class name to be run. The
JVM will look for the main method only in the class whose name you have
mentioned. Hence there is no conflict amongst the multiple classes having
main method.
Static variable are loaded when class loader bring the class to the JVM. It is
not necessary that an object has to be created. Static variables will be
allocated memory space when they have been loaded. The code in a static
block is loaded/executed only once i.e. when the class is first initialized. A
class can have any number of static blocks. Static block is not member of a
class, they do not have a return statement and they cannot be called directly.
Cannot contain this or super. They are primarily used to initialize static
fields.
No the program fails to compile. The compiler says that the main method is
already defined in the class.
Add two variables and assign the value into First variable. Subtract the
Second value with the result Value. and assign to Second variable. Subtract
the Result of First Variable With Result of Second Variable and Assign to
First Variable. Example:
It is nothing but data hiding. Encapsulation may be used by creating 'get' and
'set' methods in a class (JAVABEAN) which are used to access the fields of
the object. Typically the fields are made private while the get and set
methods are public. Encapsulation can be used to validate the data that is to
be stored, to do calculations on data that is stored in a field or fields, or for
use in introspection (often the case when using javabeans in Struts, for
instance).
Does JVM maintain a cache by itself? Does the JVM allocate objects in
heap? Is this the OS heap or the heap maintained by the JVM? Why
Yes, the JVM maintains a cache by itself. It creates the Objects on the
HEAP, but references to those objects are on the STACK.
Phantom memory is false memory. Memory that does not exist in reality.
A static method can be synchronized. If you do so, the JVM will obtain a
lock on the java.Lang. Class instance associated with the object. It is similar
to saying:
synchronized(XYZ.class) {
}
What is difference between String and StringTokenizer?
Example:
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
Output:
Hello
World
B. Packages
Or
No. It is by default loaded internally by the JVM. The java. Lang package is
always imported by default.
2.Can I import same package/class twice? Will the JVM load the
package twice at runtime?
One can import the same package or same class multiple times. Neither
compiler nor JVM complains anything about it. And the JVM will internally
load the class only once no matter how many times you import the same
class.
3.Does importing a package imports the sub packages as well? E.g. Does
importing com.bob.* also import com.bob.code.*?
No you will have to import the sub packages explicitly. Importing
com.bob.* will import classes in the package bob only. It will not import any
class in any of its sub package’s.
Or
5.Are the imports checked for validity at compile time? e.g. will the code
containing an import such as java.lang.BOB compile?
Yes the imports are checked for the semantic validity at compile time. The
code containing above line of import will not compile. It will throw an error
saying, cannot resolve symbol.
C. classes
Two methods may not have the same name and argument list but different
return types.
String objects are immutable whereas String Buffer objects are not. String
Buffer unlike Strings support growable and modifiable strings.
Or
super.method(); is used to call a super class method from a sub class. To call
a constructor of the super class, we use the super(); statement as the first line
of the subclass’s constructor.
Private constructor can be used if you do not want any other class to
instantiate the class. This concept is generally used in Singleton Design
Pattern. The instantiation of such classes is done from a static public
method.
When a class defines a method using the same name, return type, and
argument list as that of a method in its superclass, the method in the subclass
is said to override the method present in the Superclass. When the method is
invoked for an object of the class, it is the new definition of the method that
is called, and not the method definition from superclass.
Restrictions placed on method overriding
• Overridden methods must have the same name, argument list, and return
type.
• The overriding method may not limit the access of the method it overrides.
Methods may be overridden to be more public, not more private.
• The overriding method may not throw any exceptions that may not be
thrown by the overridden method.
What are the Object and Class classes used for? Which class should you
use to obtain design information about an object? Differentiate between
a Class and an Object?
The Object class is the highest-level class in the Java class hierarchy. The
Class class is used to represent the classes and interfaces that are loaded by a
Java program. The Class class is used to obtain information about an object's
design. A Class is only a definition or prototype of real life object. Whereas
an object is an instance or living representation of real life object. Every
object belongs to a class and every class contains one or more related
objects.
What is a singleton class?
Or
This design pattern is used by an application to ensure that at any time there
is only one instance of a class created. You can achieve this by having the
private constructor in the class and having a getter method which returns an
object of the class and creates one for the first time if its null.
Or
Method overriding : When a method in a class has the same method name
with same arguments as that of the superclass, it is said to be method
overriding. Overriding blocks inheritance from the superclass. Overridden
methods must have same signature.
If a class is declared without any access modifiers, where may the class
be accessed?
A class that is declared without any access modifiers is said to have package
or default access. This means that the class can only be accessed by other
classes and interfaces that are defined within the same package.
The purpose of the Runtime class is to provide access to the Java runtime
system.
An unreachable object may become reachable again. This can happen when
the object's finalize() method is invoked and the object performs an
operation which causes it to become accessible to reachable object.
I want to create two instances of a class ,But when trying for creating
third instance it should not allow me to create . What I have to do for
making this?
test1()
{ cntr++;
if(cntr>2)
System.out.println("hello 2");
An Object May not have a class definition. eg int a[] where a is an array.
my is an instance.
A subclass inherits all the methods and fields (eligible one) from the base
class, so base class is constructed in the process of creation of subclass
object (subclass is also an object of superclass). Hence before initializing the
default value of sub class the super class should be initialized using the
default constructor.
What are the other ways to create an object other than creating as new
object?
1.new operator
2.class.forName: Classname obj = Class.forName("Fully Qualified class
Name").newInstance();
3. NewInstance
4.object.clone
Class: A class is a user defined data type with set of data members &
member functions
D.garbage collection
Garbage collection is one of the most important features of Java. The purpose of
garbage collection is to identify and discard objects that are no longer needed by
a program so that their resources can be reclaimed and reused. A Java object is
subject to garbage collection when it becomes unreachable to the program in
which it is used. Garbage collection is also called automatic memory
management as JVM automatically removes the unused variables/objects (value
is null) from the memory. Every class inherits finalize() method from
java.lang.Object, the finalize() method is called by garbage collector when it
determines no more references to the object exists. In Java, it is good idea to
explicitly assign null into a variable when no more in use.
In Java on calling System.gc () and Runtime.gc (), JVM tries to recycle the
unused objects, but there is no guarantee when all the objects will garbage
collected. Garbage collection is an automatic process and can't be forced. There
is no guarantee that Garbage collection will start immediately upon request of
System.gc().
It is a daemon thread.
Does garbage collection guarantee that a program will not run out of
memory?
Garbage collection does not guarantee that a program will not run out of
memory. It is possible for programs to use up memory resources faster than
they are garbage collected. It is also possible for programs to create objects
that are not subject to garbage collection.
E.
Java Object Serialization Interview Questions
Or
One should make sure that all the included objects are also serializable. If
any of the objects is not serializable then it throws a
NotSerializableException.
Or
Or
A transient variable is a variable that may not be serialized i.e. the value of
the variable can’t be written to the stream in a Serializable class. If you don't
want some field to be serialized, you can mark that field transient or static.
In such a case when the class is retrieved from the ObjectStream the value of
the variable is null.
Volatile modifier applies to variables only and it tells the compiler that the
variable modified by volatile can be changed unexpectedly by other parts of
the program.
What is Externalizable?
6.
Or
Map m = Collections.synchronizeMap(hashMap);
A Set stores elements in an unordered way and does not contain duplicate
elements, whereas a list stores elements in an ordered way but may contain
duplicate elements.
Difference between Vector and ArrayList? What is the Vector class?
The Collections API is a set of classes and interfaces that support operations
on collections of objects.
Example of classes: HashSet, HashMap, ArrayList, LinkedList, TreeSet and
TreeMap.
Example of interfaces: Collection, Set, List and Map.
The Set interface provides methods for accessing the elements of a finite
mathematical set. Sets do not allow duplicate elements.
a.
Vector
b.
ArrayList
c.
LinkedList
d.
None of the above
ArrayList and Vector both use an array to store the elements of the list.
When an element is inserted into the middle of the list the elements that
follow the insertion point must be shifted to make room for the new element.
The LinkedList is implemented using a doubly linked list; an insertion
requires only the updating of the links at the point of insertion. Therefore,
the LinkedList allows for fast insertions and deletions.
This class offers constant time performance for the basic operations (add,
remove, contains and size), assuming the hash function disperses the
elements properly among the buckets.
Hashtable: It maps key to value. You can use non-null value for key or
value. It is part of group Map in collection.
Yes you can limit the initial capacity. We can construct an empty vector
with specified initial capacity
7.
6. An Interface can only have public members whereas an abstract class can
contain private as well as protected members.
8. The problem with an interface is, if you want to add a new feature
(method) in its contract, then you MUST implement those method in all of
the classes which implement that interface. However, in the case of an
abstract class, the method can be simply implemented in the abstract class
and the same can be called by its subclass
9. Interfaces are slow as it requires extra indirection to find corresponding
method in the actual class. Abstract classes are fast
10.Interfaces are often used to describe the peripheral abilities of a class, and
not its central identity, E.g. an Automobile class might implement the
Recyclable interface, which could apply to many otherwise totally unrelated
objects.
Note: If the various objects are all of-a-kind, and share a common state and
behavior, then tend towards a common base class. If all they share is a set of
method signatures, then tend towards an interface.
Similarities:
Neither Abstract classes nor Interface can be instantiated.
The class must provide all of the methods in the interface and identify the
interface in its implements clause.
Or
An Interface are implicitly abstract and public. Interfaces with empty bodies
are called marker interfaces having certain property or behavior. Examples:
java.lang.Cloneable,java.io.Serializable,java.util.EventListener. An interface
body can contain constant declarations, method prototype declarations,
nested class declarations, and nested interface declarations.
Abstract classes can contain abstract and concrete methods. Abstract classes
cannot be instantiated directly i.e. we cannot call the constructor of an
abstract class directly nor we can create an instance of an abstract class by
using
“Class.forName().newInstance()”
(Here we get java.lang.InstantiationException).
However, if we create an instance of a class that extends an Abstract class,
compiler will initialize both the classes. Here compiler will implicitly call
the constructor of the Abstract class. Any class that contain an abstract
method must be declared “abstract” and abstract methods can have
definitions only in child classes. By overriding and customizing the abstract
methods in more than one subclass makes “Polymorphism” and through
Inheritance we define body to the abstract methods.
Basically an abstract class serves as a template. Abstract class must be
extended/subclasses for it to be implemented. A class may be declared
abstract even if it has no abstract methods. This prevents it from being
instantiated. Abstract class is a class that provides some general
functionality but leaves specific implementation to its inheriting classes.
Example: Vehicle is an abstract class and Bus Truck, car etc are specific
implementations
No! You cannot make an instance of an abstract class. An abstract class has
to be sub-classed. If you have an abstract class and you want to use a method
which has been implemented, you may need to subclass that abstract class,
instantiate your subclass and then call that method.
In Java Interface defines the methods but does not implement them.
Interface can include constants. A class that implements the interfaces is
bound to implement all the methods defined in Interface.
Example of Interface:
Abstract class's can have a constructor, but you cannot access it through the
object, since you cannot instantiate abstract
class. To access the constructor create a sub class and extend the abstract
class which is having the constructor.
Example
public abstract class AbstractExample {
public AbstractExample(){
System.out.println("In AbstractExample()");
}
}
If interface & abstract class have same methods and those methods
contain no implementation, which one would you prefer?
Obviously one should ideally go for an interface, as we can only extend one
class. Implementing an interface for a class is very much effective rather
than extending an abstract class because we can extend some other useful
class for this subclass.
8.
Java Exceptions Questions
User defined Exceptions are custom Exception classes defined by the user
for specific purpose. A user defined exception can be created by simply sub-
classing an Exception class or a subclass of an Exception class. This allows
custom exceptions to be generated (using throw clause) and caught in the
same way as normal exceptions.
Example:
A catch clause can catch any exception that may be assigned to the
Throwable type. This includes the Error and Exception types. Errors are
generally irrecoverable conditions
Throwable
Does the code in finally block get executed if there is an exception and a
return statement in a catch block?
Or
The finally clause is used to provide the capability to execute code no matter
whether or not an exception is thrown or caught. If an exception occurs and
there is a return statement in catch block, the finally block is still executed.
The finally block will not be executed when the System.exit(0) statement is
executed earlier or on system shut down earlier or the memory is used up
earlier before the thread goes to finally block.
try{
//some statements
}
catch{
//statements when exception is caught
}
finally{
//statements executed whether exception occurs or not
}
Does the order of placing catch statements matter in the catch block?
9.
Java Swing Interview Questions
Name the containers which use Border Layout as their default layout?
A component can handle its own events by implementing the required event-
listener interface and adding itself as its own event listener.
The paint() method supports painting via a Graphics object. The repaint()
method is used to cause paint() to be invoked by the AWT painting thread.
Or
Or
GridLayout: The elements of a GridLayout are of equal size and are laid out
using the square of a grid.
validate()
The Frame class extends Window to define a main application window that
can have a menu bar.
The preferred size of a component is the minimum component size that will
allow the component to display normally.
The Panel and Applet classes use the FlowLayout as their default layout.
10.
Java Threads Interview Questions
What are three ways in which a thread can enter the waiting state?
Or
What are different ways in which a thread can enter the waiting state?
When a task invokes its yield() method, it returns to the ready state, either
from waiting, running or after its creation. When a task invokes its sleep()
method, it returns to the waiting state from a running state.
You have two ways to do so. First, making your class "extends" Thread
class. The other way is making your class implement "Runnable" interface.
The latter is more advantageous, cause when you are going for multiple
inheritance, then only interface can help. . If you are already inheriting a
different class, then you have to go for Runnable Interface. Otherwise you
can extend Thread class. Also, if you are implementing interface, it means
you have to implement all methods in the interface. Both Thread class and
Runnable interface are provided for convenience and use them as per the
requirement. But if you are not extending any class, better extend Thread
class as it will save few lines of coding. Otherwise performance wise, there
is no distinguishable difference.
A thread is in the ready state after it has been created and started.
What is mutual exclusion? How can you take care of mutual exclusion
using Java threads?
After a thread is started, via its start() method of the Thread class, the JVM
invokes the thread's run() method when the thread is initially executed.
The wait(), notify() and notifyAll() methods are used to provide an efficient
way for thread inter-communication.
Or
When two threads are waiting for each other and can’t proceed until the first
thread obtains a lock on the other thread or vice versa, the program is said to
be in a deadlock.
Can Java object be locked down for exclusive use by a given thread?
Or
What happens when a thread cannot acquire a lock on an object?
The sleep method is used when the thread has to be put aside for a fixed
amount of time. Ex: sleep(1000), puts the thread aside for exactly one
second. The wait method is used to put the thread aside for up to the
specified time. It could wait for much lesser time if it receives a notify() or
notifyAll() call. Ex: wait(1000), causes a wait of up to one second. The
method wait() is defined in the Object and the method sleep() is defined in
the class Thread.
What is daemon thread and which method is used to create the daemon
thread?
Daemon threads are threads with low priority and runs in the back ground
doing the garbage collection operation for the java runtime system. The
setDaemon() method is used to create a daemon thread. These threads run
without the intervention of the user. To determine if a thread is a daemon
thread, use the accessor method isDaemon()
When a standalone application is run then as long as any user threads are
active the JVM cannot terminate, otherwise the JVM terminates along with
any daemon threads which might be active. Thus a daemon thread is at the
mercy of the runtime system. Daemon threads exist only to serve user
threads.
Or
Or
Or
What is synchronization?
When you expect that your shared code will be accessed by different threads
and these threads may change a particular data causing data corruption, then
they are placed in a synchronized construct or a synchronized method.
Yes, a lock can be acquired on a class. This lock is acquired on the class's
Class object.
This thread pool engine can be locked i.e. if some internal operation is
performed on the pool then it is preferable that the thread engine be locked.
Locking ensures that no new threads are issued by the engine. However, the
currently executing threads are allowed to continue till they come back to
the passivePool.
Yes. Every thread maintains its own separate stack, called Runtime Stack
but they share the same memory. Elements of the stack are the method
invocations, called activation records or stack frame. The activation record
contains pertinent information about a method like local variables.
11.
Java Wrapper Classes Interview Questions
Following table lists the primitive types and the corresponding wrapper
classes:
Primitive Wrapper
Boolean java.lang.Boolean
Byte java.lang.Byte
Char java.lang.Character
double java.lang.Double
Float java.lang.Float
Int java.lang.Integer
Long java.lang.Long
Short java.lang.Short
Void java.lang.Void