Pages

Subscribe Twitter Twitter

Monday, August 2, 2010

COREJAVA INTERVIEW QUESTIONS6

Collections Frame Work

Q)
Collection classes Collection Interfaces Legacy classes Legacy interface
Abstract collection Collection Dictionary Enumerator
Abstract List List Hash Table
Abstract Set Set Stack
Array List Sorted Set Vector
Linked List Map Properties
Hash set Iterator
Tree Set
Hash Map
Tree Map

Collection Classes

Abstract collection 

Abstract List 

Abstract Set 

Array List  Array List extends AbstractList and implements the List interface. ArrayList is a variable length of array of object references, ArrayList support dynamic array that grow as needed. A.L allows rapid random access to element but slow for insertion and deletion from the middle of the list.

 ArrayList is a replacement for Vector.

Linked List  Extends AbstactSequentialList and implements List interface. L.L provides optimal sequence access, in expensive insertion and deletion from the middle of the list, relatively slow for random access.

Methods>> void addFirst (Object obj), addLast (Object obj), Object getFirst (), Object getLast ().

Hash Set  HashSet extends AbstractSet implements Set interface, it creates a collection that uses HashTable for storage, H.S does not guarantee the order of its elements, if u need storage go for TreeSet

Methods>> add (), remove (), size ().

Tree Set  Extends Abstract Set implements Set interface. Objects are stored in sorted, ascending order. Access and retrial times are quite fast.

Hash Map  Extends Abstract Map and implements Map interface. H.P does not guarantee the order of elements, so the order in which the elements are added to a H.P is not necessary the order in which they are ready by the iterate.

 HashMap is similar to Hashtable.

Tree Map  implements Map interface, a TreeMap provides an efficient means of storing key/value pairs in sorted order and allows rapid retrieval.

Collection Interfaces

Collection  Collection is a group of objects, collection does not allow duplicate elements.

Methods>> boolean add (Object obj), boolean addAll (Collection c), Iterator iterator (),
boolean remove(Object obj), boolean removeAll(Collection c).

List  List will extend collection, List stores a sequence of elements that can contain duplicates, elements can be accessed their position in the list using a zero based index.

Methods>> void add(int index, Object obj), boolean addAll(int index, Collection c), Object get(int index), int indexOf(Object obj), int lastIndexOf(Object obj), ListIterator iterator(), Object remove(int index).

Set  Set will extend collection, Set cannot contain duplicate elements.

Sorted Set  Extends Set to handle Sorted Sets.
Methods>> Object last (), Object first ().

Map  Map maps unique key to value in a map for every key there is a corresponding value and you will lookup the values using keys. Map cannot contain duplicate “key” and “value”. In map both the “key” & “value” are objects.

Methods>> Object get (Object k), Object put (Object k, Object v).

Iterator  Before accessing a collection through an iterator you must obtain one if the collection classes provide an iterator () method that returns an iterator to the start of the collection. By using iterator object you can access each element in the collection, one element at a time.
Ex: - ArayList arr = new ArrayList ();
Arr.add (“c”);
Iterator itr = arr.iterator ();
While (itr.hashNext ())
{
Object element = itr.next ();
}

List Iterator  List Iterator gives the ability to access the collection, either forward/backward direction

Legacy Classes

Dictionary  is an abstract class that represent key/value storage repository and operates much like “Map” once the value is stored you can retrieve it by using key.

Hash Table  HashTable stores key/value pairs in hash table, HashTable is Synchronized when using hash table you have to specify an object that is used as a key, and the value that you want to linked to that key. The key is then hashed, and the resulting hash code is used as the index at which the value is stored with the table. Use H.T to store large amount of data, it will search as fast as vector.

Methods>> boolean containsKey(Object key), boolean containsValue(Object value), Object get(Object key), Object put(Object key, Object value)

Stack  is a sub class of vector, stack includes all the methods defined by vector and adds several of its own.

Vector  vector holds any type of objects, it is not fixed length and vector is synchronized. We can store primitive data types as well as objects. Default length of vector is up to 10.

Methods>> final void addElement(Object element), final int size(), final int capacity(), final boolean removeElementAt(int index), final void removeAllElements().

Properties  is a subclass of HashTable, it is used to maintain the list of values in which the “key/value” is String.

Legacy Interfaces

Enumeration  Define methods by which you can enumerate the elements in a collection of objects. Enumeration is synchronized it having 2 methods hasMoreElements(), nextElement().

Q) Array
Array of fixed length of same data type, we can store primitive data types as well as class objects.
 Arrays are initialized to the default value of their type when they are created, not declared, even if they are local variables

Q) Diff Iterator & Enumeration
Iterator is not synchronized and enumeration is synchronized. Both are interface, Iterator is collection interface which extends from ‘List’ interface. Enumeration is a legacy interface, Enumeration having 2 methods ‘Boolean hasMoreElements()’ & ‘Object NextElement()’. Iterator having 3 methods ‘boolean hasNext()’, ‘object next()’, ‘void remove()’.

Q) List Iterator
It is an interface, List Iterator extends Iterator to allow bi-directional traversal of a list and modification of the elements. Methods are ‘hasNext()’, ‘ hasPrevious()’.

Q) Diff HashTable & HashMap
 Both provide key/value to access the data. The H.T is one of the original collection class in java. H.M is part of new collection frame work.
 H.T is synchronized and H.M is not.
 H.M permits null values in it while H.T does not.
 Iterator in the H.M is fail safe while the enumerator for the H.T is not.






Exception Handling

Object


Throwable

Error Exception

AWT Error Virtual Machine Error
Compile time.Ex Runtime Exception
(checked) (Unchecked)

OutOfMemory.E StackOverFlow.E EOF.E FilenotFound.E
Arithmetic.E NullPointer.E Indexoutof
Bound.E
ArrayIndexoutOfBound.E StirngIndexoutOfBound

Q) Diff Exception & Error
Exception and Error both are subclasses of the Throwable class.

ExceptionException is generated by java runtime system (or) by manually. An exception is a abnormal condition that transfer program execution from a thrower to catcher.
Error Will stop the program execution, Error is a abnormal system condition we cannot handled these.

Q) try, catch, throw, throws

Try  This is used to fix up the error, to prevent the program from automatically terminating, try-catch is used to catching an exception that are thrown by the java runtime system.

Throw  is used to throw an exception explicitly.

Throws  A Throws clause list the type of exceptions that a methods might through.

Q) Checked & UnChecked Exception :-
Checked exception is some subclass of Exception. Making an exception checked forces client programmers to deal with the possibility that the exception will be thrown. eg, IOException thrown by java.io.FileInputStream's read() method•

Unchecked exceptions are RuntimeException and any of its subclasses. Class Error and its subclasses also are unchecked. With an unchecked exception, however, the compiler doesn't force client programmers either to catch the exception or declare it in a throws clause. In fact, client programmers may not even know that the exception could be thrown. eg, StringIndexOutOfBoundsException thrown by String's charAt() method• Checked exceptions must be caught at compile time. Runtime exceptions do not need to be. Errors often cannot be.


Checked Exceptions Un checked exception
ClassNotFoundException ArithmeticException
NoSuchMethodException ArrayIndexOutOfBoundException
NoSuchFieldException ClasscastException
InterruptedException IllegalArgumentException
IllegalAccessException IllegalMonitorSateException
CloneNotSupportedException IllegalThreadStateException
IndexOutOfBoundException
NullPointerException
NumberFormatException
StringIndexOutOfBounds

OutOfMemoryError --> Signals that JVM has run out of memory and that the garbage collector is unable to claim any more free memory.
StackOverFlow --> Signals that a stack O.F in the interpreter.
ArrayIndexOutOfbound --> For accessing an array element by providing an index values <0 or > or equal to the array size.
StringIndexOutOfbound --> For accessing character of a string or string buffer with index values <0 or > or equal to the array size.
Arithmetic Exception --> such as divide by zero.
ArrayStore Exception --> Assignment to an array element of incompatible types.
ClasscastException --> Invalid casting.
IllegalArgument Exception --> Illegal argument is used to invoke a method.
Nullpointer Exception --> If attempt to made to use a null object.
NumberFormat Exception --> Invalid conversition of string to numeric format.
ClassNotfound Exception --> class not found.
Instantion Exception --> Attempt to create an object of an Abstract class or Interface.
NosuchField Exception --> A request field does not exist.
NosuchMethod Exception --> A request method does not exist.

Q) Can I catch an exception and give my own error message?
A) Yes, you can catch servlet errors and give custom error pages for them, but if there are exceptional conditions you can anticipate, it would be better for your application to address these directly and try to avoid them in the first place. If a servlet relies upon system or network resources that may not be available for unexpected reasons, you can use a RequestDispatcher to forward the request to an error page.

RequestDispatcher dispatcher = null;
request.getRequestDispatcher (/err/SQL.jsp);
try {
// SQL operation
}
catch (SQLException se) {
dispatcher.forward (request, response);
}
Web.xml:-


HTTP error code


java.lang.RuntimeException


/err/RuntimeException.jsp



Q) Methods in Exceptions?
A) getMessage (), toString(), printStackTrace(), getLocalizedMessage(),

Q) Primitive multi tasking
If the thread of different priorities shifting the control depends on the priority .i.e; a thread with higher priority is executed first than the thread with lower priority. This process of shifting control is known as primitive multi tasking.


All Packages

Q) Thread Class
Methods: -

getName() run()
getPriority() Sleep()
isAlive() Start()
join()

Q) Object class
All other classes are sub classes of object class; Object class is a super class of all other class.
Methods: -
void notify() void notifyAll()
Object Clone() Sting toString()
Boolean equals(Object object) Void wait()
void finalize() void wait(long milliseconds, int nanoseconds)

Q) throwable class

Methods: -
String getMessage() Void printStackTrace()
String toString() Throwable fillInStackTrace()

Q) Javax.servlet Package

Interfaces Classes Exceptions
Servlet GenericServlet ServletException
ServletConfig ServletInputStream UnavaliableException
ServletContext ServletOutputStream
ServletRequest
ServletResponse
SingleThreadModel

GenericServlet (C) public void destroy ();
public String getInitParameter(String name);
public Enumeration getInitParameterNames();
public ServletConfig getServletConfig();
public ServletContext getServletContext();
public String getServletInfo();
public void init(ServletConfig config) throws ServletException;
public void log(String msg);
public abstract void service(ServletRequest req, ServletResponse res)

ServletInputStream (C) public int readLine (byte b [], int off, int len)

ServletOutputStream (C) public void print (String s) throws IOException;
public void println() throws IOException;

Servlet (I)  public abstract void destroy ();
public abstract ServletConfig getServletConfig();
public abstract String getServletInfo();
public abstract void init(ServletConfig config) throws ServletException;
public abstract void service(ServletRequest req, ServletResponse res)

ServletConfig (I)  public abstract String getInitParameter (String name);
public abstract Enumeration getInitParameterNames();
public abstract ServletContext getServletContext();

ServletContext (I)  public abstract Object getAttribute (String name);
public abstract String getRealPath(String path);
public abstract String getServerInfo();
public abstract Servlet getServlet(String name) throws ServletException;
public abstract Enumeration getServletNames();
public abstract Enumeration getServlets();
public abstract void log(Exception exception, String msg);

ServletRequest (I)  public abstract Object getAttribute (String name);
public abstract String getParameter(String name);
public abstract Enumeration getParameterNames();
public abstract String[] getParameterValues(String name);
public abstract String getRealPath(String path);
public abstract String getRemoteAddr();
public abstract String getRemoteHost();
public abstract String getServerName();
public abstract int getServerPort();

ServletResponse (I)  public abstract String getCharacterEncoding ();
public abstract PrintWriter getWriter() throws IOException;
public abstract void setContentLength(int len);
public abstract void setContentType(String type);


Q) Javax.servlet.Http Package

Interfaces Classes Exceptions
HttpServletRequest Cookies ServletException
HttpServletResponse HttpServlet UnavaliableException
HttpSession HttpUtils
HttpSessionContext HttpSessionbindingEvent
HttpSessionBindingListener

Cookies (C)  public Object clone ();
public int getMaxAge();
public String getName();
public String getPath();
public String getValue();
public int getVersion();
public void setMaxAge(int expiry);
public void setPath(String uri);
public void setValue(String newValue);
public void setVersion(int v);

HttpServlet (C)  public void service(ServletRequest req, ServletResponse res)
protected void doDelete (HttpServletRequest req, HttpServletResponse res)
protected void doGet (HttpServletRequest req, HttpServletResponse res)
protected void doOptions(HttpServletRequest req, HttpServletResponse res)
protected void doPost(HttpServletRequest req, HttpServletResponse res)
protected void doPut(HttpServletRequest req, HttpServletResponse res)
protected void doTrace(HttpServletRequest req, HttpServletResponse res)
protected long getLastModified(HttpServletRequest req);
protected void service(HttpServletRequest req, HttpServletResponse res)

HttpSessionbindingEvent (I)  public String getName();
public HttpSession getSession();


HttpServletRequest (I)  public abstract Cookie[] getCookies();
public abstract String getHeader(String name);
public abstract Enumeration getHeaderNames();
public abstract String getQueryString();
public abstract String getRemoteUser();
public abstract String getRequestedSessionId();
public abstract String getRequestURI();
public abstract String getServletPath();
public abstract HttpSession getSession(boolean create);
public abstract boolean isRequestedSessionIdFromCookie();
public abstract boolean isRequestedSessionIdFromUrl();
public abstract boolean isRequestedSessionIdValid();

HttpServletResponse (I)  public abstract void addCookie(Cookie cookie);
public abstract String encodeRedirectUrl(String url);
public abstract String encodeUrl(String url);
public abstract void sendError(int sc, String msg) throws IOException;
public abstract void sendRedirect(String location) throws IOException;
public abstract void setHeader(String name, String value);

HttpSession (I)  public abstract long getCreationTime();
public abstract String getId();
public abstract long getLastAccessedTime();
public abstract HttpSessionContext getSessionContext();
public abstract Object getValue(String name);
public abstract String[] getValueNames();
public abstract void invalidate();
public abstract boolean isNew();
public abstract void putValue(String name, Object value);
public abstract void removeValue(String name);

HttpSessionContext (I)  public abstract Enumeration getIds();
public abstract HttpSession getSession(String sessionId);


Q) java.sql Package

Interfaces Classes Exceptions
Statement DriverManager SQL Exception
PreparedStatement Time ClassNotFoundException
CallableStatement TimeStamp Instantiation Exception
ResultSet
ResultSetMetaData
Connection
Driver

Q) java.lang Package

Interfaces Classes Exceptions
Cloneable Double, Float, Long, Integer, Short, Byte, Boolean, Character, ArithmeticException, ArrayIndexOutOfBoundOf.E, ClassCast.E, ClassNotFound.E
Runnable Class, ClassLoader IlleAcess.E, IllegalArgument.E
Comparable Process, RunTime, Void IllegalSate.E, NullPointer.E
String, StringBuffer NoSuchField.E, NoSuchMethod.E
Thread, ThreadGroup NumberFormat.E

Q) java.IO Package

Interfaces Classes Exceptions
DataInputstream BufferInputstream, BufferOutputStream
DataOutputstream BufferReader, BufferWriter
ObjectInputStream ByteArrayInputStream, ByteArrayOutputstream
ObjectOutputstream CharacterarrayReader, CharacterArayWriter
Serializable DataInputStream, DataOutputStream
Externializable Filereader, FileWriter
ObjectInputStream, ObjectOutputStream

COREJAVA INTERVIEW QUESTIONS5

Method Overriding (Runtime polymorphism)
When a method in a subclass has the same name, return type and parameters as the method in the super class then the method in the subclass is override the method in the super class.

 The access modifier for the overriding method may not be more restrictive than the access modifier of the superclass method

• If the super class method is public, the overriding method must be public
• If the superclass method is protected, the overriding method may be protected or public
• If the superclass method is package, the overriding method may be packagage, protected, or public
• If the superclass methods is private, it is not inherited and overriding is not an issue
• Methods declared as final cannot be overridden.

 The throws clause of the overriding method may only include exceptions that can be thrown by the superclass method, including it's subclasses

 Only member method can be overriden, not member variable
class Parent{
int i = 0;
void amethod(){
System.out.println("in Parent");
}
}
class Child extends Parent{
int i = 10;
void amethod(){
System.out.println("in Child");
}
}
class Test{
public static void main(String[] args){
Parent p = new Child ();
Child c = new Child ();
System.out.print("i="+p.i+" ");
p.amethod();
System.out.print("i="+c.i+" ");
c.amethod();
}
}
O/p: - i=0 in Child
i=10 in Child

Q) Static
Static variables and methods are instantiated only once per class. In other words they are class variables, not instance variables. If you change the value of a static variable in a particular object, the value of that variable changes for all instances of that class. Static methods can be referenced with the name of the class.

 When a member is declared a static it can be accessed before any object of its class are created.
 Instance variables declared as static are essentially global variables.
 If you do not specify an initial value to an instance & Static variable a default value will be assigned automatically.
 Methods declared as static have some restrictions they can access only static data, they can only call other static data, they cannot refer this or super.
 Static methods can’t be overriden to non-static methods.
 Static methods are called by the static methods only, an ordinary method can call the static methods, but static methods cannot call ordinary methods.
 Static methods are implicitly "final", because overriding is only done based on the type of the objects
 They cannot refer “this” or “super” in any way.

Q) Class variable & Instance variable & Instance methods & class methods

Instance variable  variables defined inside a class are called instance variables with multiple instance of class; each instance has a variable stored in separate memory location.

Class variables  you want a variable to be common to all classes then we crate class variables. To create a class variable put the “static” keyword before the variable name.

Class methods  we create class methods to allow us to call a method without creating a instance of the class. To declare a class method uses the “static” key word.

Instance methods  we define a method in a class, in order to use that methods we need to first create objects of the class.

Q) Static block
Static block which exactly executed exactly once when the class is first loaded into JVM. Before going to the main method the static block will execute.

Q) Static methods cannot access instance variables why?
A) Static methods can be invoked before the object is created, Instance variables are created only when the new object is created. Since there is no possibility to the static method to access the instance variables. Instance variables are called called as non-static variables.

Q) String & StringBuffer
String is a fixed length of sequence of characters, String is immutable.

StringBuffer represent growable and writeable character sequence, StringBuffer is mutable which means that its value can be changed. It allocates room for 16 addition character space when no specific length is specified. Java.lang.StringBuffer is also a final class hence it cannot be sub classed. StringBuffer cannot be overridden the equals () method.

Q) Conversions

String to Int Conversion:-
int I = integer.valueOf(“24”).intValue();
int x = integer.parseInt(“433”);
float f = float.valueOf(23.9).floatValue();

Int to String Conversion:-
String arg = String.valueOf (10);

Q) Super ()
super () always calling the constructor of immediate super class, super () must always be the first statements executed inside a subclass constructor.

Q) How will u implement 1) polymorphism 2) multiple inheritance 3) multilevel inheritance in java?
A) Polymorphism – overloading and overriding
Multiple inheritances – interfaces.
Multilevel inheritance – extending class.

Q) What are different types of inner classes?
A) Nested top-level classes- If you declare a class within a class and specify the static modifier, the compiler treats the class just like any other top-level class. Any class outside the declaring class accesses the nested class with the declaring class name acting similarly to a package. e.g., outer.inner. Top-level inner classes implicitly have access only to static variables. There can also be inner interfaces. All of these are of the nested top-level variety.

Member classes - Member inner classes are just like other member methods and member variables and access to the member class is restricted, just like methods and variables. This means public member class acts similarly to a nested top-level class. The primary difference between member classes and nested top-level classes is that member classes have access to the specific instance of the enclosing class.

Local classes - Local classes are like local variables, specific to a block of code. Their visibility is only within the block of their declaration. In order for the class to be useful beyond the declaration block, it would need to implement a more publicly available interface. Because local classes are not members the modifiers public, protected, private and static are not usable.

Anonymous classes - Anonymous inner classes extend local inner classes one level further. As anonymous classes have no name, you cannot provide a constructor.

 Inner class inside method cannot have static members or blocks

Q) Which circumstances you use Abstract Class & Interface?
--> If you need to change your design make it an interface.
--> Abstract class provide some default behaviour, A.C are excellent candidates inside of application frame work. A.C allow single inheritance model which should be very faster.

Q) Abstract Class
Any class that contain one are more abstract methods must also be declared as an abstract, there can be no object of an abstract class, we cannot directly instantiate the abstract classes. A.C can contain concrete methods.
Any sub class of an Abstract class must either implement all the abstract methods in the super class or be declared itself as Abstract.

 Compile time error occur if an attempt to create an instance of an Abstract class.
 You cannot declare “abstract constructor” and “abstract static method”.
 Abstract class can have static, final method.
 An abstract method also declared private, native, final, synchronized, or strictfp.
 An abstract method declared in a non-abstract class
 A class can be declared abstract even if it does not actually have any abstract methods. Declaring such a class abstract indicates that the implementation is somehow incomplete and is meant to serve as a super class for one or more subclasses that will complete the implementation.

Abstract class A {
Public abstract callme ();
void callmetoo () {
}
}

class B extends A(
void callme(){
}
}

class AbstractDemo{
public static void main(string args[]){
B b = new B();
b.callme();
b.callmetoo();
}
}

Q) Interface
Interface is similar to class but they lack instance variable, their methods are declared with out any body. Interfaces are designed to support dynamic method resolution at run time. All methods in interface are implicitly abstract, even if the abstract modifier is omitted. Interface methods have no implementation;

 Interface can be extended, Interface can be implemented.
 An interface body may contain constant declarations, abstract method declarations, inner classes and inner interfaces.
 All methods of an interface are implicitly abstract, public, even if the public modifier is omitted.
 Interface methods cannot be declared protected, private, strictfp, native or synchronized.
 All Variables are implicitly final, public, static fields
 A compile time error occurs if an interface has a simple name the same as any of it's enclosing classes or interfaces.
 top-level interfaces may only be declared public, inner interfaces may be declared private and protected but only if they are defined in a class.

 A class can only extend one other class.
 A class may implements more than one interface.
 Interface can extend more than one interface.

Interface A
{
final static float pi = 3.14f;
}

class B implements A
{
public float compute(float x, float y)
{
return(x*y);
}
}

class test{
public static void main(String args[])
{
A a = new B();
a.compute();
}
}

Q) Diff Interface & Abstract Class?
 Abstract classes may have some executable methods and methods left unimplemented. Interface contains no implementation code.
 An abstract class can have nonabstract methods. All methods of an Interface are abstract.
 An abstract class can have instance variables. An Interface cannot.
 An abstract class can define constructor. An Interface cannot.
 An abstract class can have any visibility: public, private, protected. An Interface visibility must be public (or) none.

Q) What are some alternatives to inheritance?
A) Delegation is an alternative to inheritance. Delegation means that you include an instance of another class as an instance variable, and forward messages to the instance. It is often safer than inheritance because it forces you to think about each message you forward, because the instance is of a known class, rather than a new class, and because it doesn’t force you to accept all the methods of the super class: you can provide only the methods that really make sense. On the other hand, it makes you write more code, and it is harder to re-use (because it is not a subclass).


Q) When we use Abstract class?
A) Let us take the behaviour of animals, animals are capable of doing different things like flying, digging,
Walking. But these are some common operations performed by all animals, but in a different way as well. When an operation is performed in a different way it is a good candidate for an abstract method.

Public Abstarctclass Animal{
Public void eat(food food)
{
}
public void sleep(int hours)
{
}
public abstract void makeNoise()
}

public Dog extends Animal
{
public void makeNoise()
{
System.out.println(“Bark! Bark”);
}
}

public Cow extends Animal
{
public void makeNoise()
{
System.out.println(“moo! moo”);
}
}

Q) Serializable & Externalizable
Serializable --> is an interface that extends serializable interface and sends data into streams in compressed format. It has 2 methods writeExternal (objectOutput out), readExternal (objectInput in).

Externalizable  is an Interface that extends Serializable Interface. And sends data into Streams in Compressed Format. It has two methods, writeExternal (ObjectOuput out) and readExternal (ObjectInput in).

Q) Internalisation & Localization
Internalisation -- Making a programme to flexible to run in any locale called internalisation.
Localization -- Making a programme to flexible to run in a specific locale called Localization.

Q) Serialization
Serialization is the process of writing the state of the object to a byte stream; this is useful when ever you want to save the state of your programme to a persistence storage area.

Q) Synchronization
Synchronization is a process of controlling the access of shared resources by the multiple threads in such a manner that only one thread can access one resource at a time. (Or) When 2 are more threads need to access the shared resources they need to some way ensure that the resources will be used by only one thread at a time. This process which is achieved is called synchronization.

(i) Ex: - Synchronizing a function:
public synchronized void Method1 () {
// Appropriate method-related code.
}

(ii) Ex: - Synchronizing a block of code inside a function:
public myFunction () {
synchronized (this) {
// Synchronized code here.
}
}

(iii) Ex: - public Synchronized void main (String args [])
But this is not the right approach because it means servlet can handle one request at a time.

Q) Different level of locking using Synchronization?
A) Class level, Object level, Method level, Block level

Q) Monitor
A monitor is a mutex, once a thread enters a monitor, all other threads must wait until that thread exist the monitor.

Q) Diff = = and .equals ()?
A) ==  Compare object references whether they refer to the same instance are not.
equals ()  method compare the characters in the string object.

Q) Marker Interfaces (or) Tagged Interfaces :-
An Interface with no methods. Is called marker Interfaces, eg., Serializable, SingleThread Model, Cloneable.

Q) URL Encoding & URL Decoding
URL Encoding is the method of replacing all the spaces and other extra characters into their corresponding Hex Characters and URL Decoding is the reverse process converting all Hex Characters back their normal form.

Q) URL & URLConection

URL is to identify a resource in a network, is only used to read something from the network.
URL url = new URL (protocol name, host name, port, url specifier)

URLConnection can establish communication between two programs in the network.
URL hp = new URL (“www.yahoo.com”);
URLConnection con = hp.openConnection ();

Q) Runtime class
Runtime class encapsulate the run-time environment. You cannot instantiate a Runtime object. You can get a reference to the current Runtime object by calling the static method Runtime.getRuntime ()

Runtime r = Runtime.getRuntime ()
Long mem1;
mem1 = r.freeMemory ();
mem1 = r.totalMemory ();

Q) Execute other programs
You can use java to execute other heavy weight process on your multi tasking operating system, several form of exec () method allows you to name the programme you want to run.
Runtime r = Runtime.getRuntime ();
Process p = null;
try{
p = r.exce (“notepad”);
p.waiFor ()
}

Q) System class
System class hold a collection of static methods and variables. The standard input, output, error output of the java runtime are stored in the in, out, err variables.

Q) Class
Class encapsulate the run-time state of an object or interface. Methods in this class are

static Class forName(String name) throws ClassNotFoundException getClass()
getClassLoader() getConstructor()
getField() getDeclaredFields()
getMethods() getDeclearedMethods()
getInterface() getSuperClass()

Q) Native Methods
Native methods are used to call subroutine that is written in a language other than java, this subroutine exist as executable code for the CPU.

Q) Cloneable Interface
Any class that implements the cloneable interface can be cloned, this interface defines no methods. It is used to indicate that a class allow a bit wise copy of an object to be made.

Q) Clone
Generate a duplicate copy of the object on which it is called. Cloning is a dangerous action.

Q) Comparable Interface
Classes that implements comparable contain objects that can be compared in some meaningful manner. This interface having one method compare () the invoking object with the object. For sorting comparable interface will be used.
Ex: - int compareTo (Object obj)

Q) Class
Encapsulate the run time state of an object (or) interface. You cannot explicitly declare a class object, by using getClass () method you can do that.
Class a = x.getClass ();

Methods>> getClasses (), getConstructor (), getInterface (), getMethods (), getSuperclass (), getName ().

Q) java.lang.Reflect (package)
Reflection is the ability of software to analyse it self, to obtain information about the field, constructor, methods & modifier of class. You need this information to build software tools that enables you to work with java beans components.

Q) InstanceOf
Instanceof means by which your program can obtain run time type information about an object.
Ex: - A a = new A ();
a instanceof A;

Q) java pass arguments by value are by reference?
A) by value

Q) java lack pointers how do I implements classic pointer structures like linked list?
A) using object reference.

Q) java.Exe
Micro soft provided sdk for java, which includes “jexegentool”. This converts class file into an “.Exec” form. Only disadvantage is user needs a M.S java V.M installed.

Q) bin & Lib in jdk?
bin contains all tools such as javac, appletviewer and awt tool.
lib contains API and all packages.

COREJAVA INTERVIEW QUESTIONS4


Core Java
Java Material Interview Reference

Q) OOPS concepts

Polymorphism
Ability to take more than one form, In java we achieve this using Method Overloading (compile time polymorphism), Method overriding (runtime polymorphism)

Inheritance
Is the process by which one object acquires the properties of another object.

Encapsulation
Wrapping of data and function into a single unit called encapsulation. Ex:- all java programs.

Abstraction
Nothing but representing the essential futures without including background details.

Dynamicbinding
Code associated with a given procedural call is not known until the time of the call at runtime. Dynamic binding is nothing but late binding.

Q) class & object?
class

 class is a Template that describes the Kind of State(The Instance Variables) and Behavior (Methods)
 class is a blue print of an object component means u can use a piece of code like an
independent piece.like servlet,EJB...etc
Object  instance of class u can reuse it in any application

Q) System.out.println()
 println() is a methd of java.io.printWriter.
 “out” is an instance variable of java.lang.System class.

Q) Transient & volatile

Transient --> the object or variable will not persist.
Volatile --> value will be changed unexpectedly by the other part of the program.

Q) Access Specifiers & Access modifiers?
Access Specifiers  A.S gives access privileges to outside of application (or) others; they are Public, Protected, Private, Defaults
Access Modifiers  A.M which gives additional meaning to data, methods and classes, final cannot be modified at any point of time.

Private Public Protected No modifier
Same class No Yes Yes Yes
Same package Subclass No Yes Yes Yes
Same package non-subclass No Yes Yes Yes
Different package subclass No Yes Yes No
Different package non-subclass No Yes No NO

Q) Default Values
long  -2^63 to 2^63 –1  0L
Int  -2^31 to 2^31 –1  0
Short  -2^15 to 2^15 –1  0
Byte  -2^7 to 2^7 –1  0
char  0 to 2^7 –1  null character (or) ‘\u 0000’
double  0.0d
float  0.0f
Boolean  false
Character  ‘\u0000’

Q) Byte code & JIT compiler
Byte code is a highly optimized set of instructions. JVM is an interpreter for byte code. Translating a java program into byte code helps makes it much easier to run a program in a wide variety of environment.

JIT is a part of JVM, it compiles byte code into executable code in real time, will increase the performance of the interpretations.

Q) Diff Access Specifier & Access Modifiers

Access Specifier

Access Modifiers

Q) Wrapper classes

Primitive data types can be converted into objects by using wrapper classes. These are java.lang.package.

Q) Does Java pass method arguments by value or by reference?
A) Java passes all arguments by value, not by reference

Q) Arguments & Parameters
While defining method, variable passed in the method are called parameters. While using those methods, values passed to those variables are called arguments.

Q) Public static void main (String [] args)

 What if the main method is declared as private?
The program compiles properly but at runtime it will give "Main method not public." Message

 What if the static modifier is removed from the signature of the main method?
Program compiles. But at runtime throws an error "NoSuchMethodError".

 We can write “static public void” instead of “public static void” but not “public void static”.

 If I do not provide the String array as the argument to the method?
Program compiles but throws a runtime error "NoSuchMethodError".

 If no arguments on the command line, String array of Main method will be empty of null?
It is empty. But not null.
 Variables can have the same name as a method or a class

Q) Can an application have multiple classes having main method?
A) Yes it is possible. 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 not conflict amongst the multiple classes having main method.

Q) Can I have multiple main methods in the same class?
A) No the program fails to compile. The compiler says that the main method is already defined in the class.

Q) Constructor

The automatic initialization is performed through the constructor, constructor has same name has class name. Constructor has no return type not even void. We can pass the parameters to the constructor. this () is used to invoke a constructor of the same class. Super () is used to invoke a super class constructor. Constructor is called immediately after the object is created before the new operator completes.

 Constructor can use the access specifiers public, protected or private or have no access modifier (package access)
 Constructor can not use the modifiers abstract, static, final, native, synchronized or strictfp
 Constructor can be overloaded, we cannot override.
 You cannot use this() and Super() in the same constructor.


Class A(
A(){
System.out.println(“hello”);
}}

Class B extends A {
B(){
System.out.println(“friend”);
}}

Class print {
Public static void main (String args []){
B b = new B();
}

o/p:- Hello
friend

Q) Diff Constructor & Method

Constructor Method
Use to instance of a class Grouping java statement
No return type Void (or) valid return type
Same name as class name As a name except the class method name, begin with lower case.
“This” refer to another constructor in the same class Refers to instance of class
“Super” to invoke the super class constructor Execute an overridden method in the super class
“Inheritance” cannot be inherited Can be inherited
We can overload but we cannot overridden Can be inherited
Will automatically invoke when an object is created Method has called explicitly

Q) Garbage collection

G.C is also called automatic memory management as JVM automatically removes the unused variables/objects (value is null) from the memory. User program cann't directly free the object from memory, instead it is the job of the garbage collector to automatically free the objects that are no longer referenced by a program. 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.

Q) Final, Finally, Finalize

Final: - When we declare a sub class a final the compiler will give error as “cannot subclass final class” Final to prevent inheritance and method overriding. Once to declare a variable as final it cannot occupy memory per instance basis.

 Final class cannot have static methods
 Final class cannot have abstract methods
 Final class can have only a final method.

Finally: - Finally create a block of code that will be executed after try catch block has completed. Finally block will execute whether or not an exception is thrown. If an exception is thrown, the finally block will execute even if no catch statement match the exception. Any time a method is about to return to the caller from inside try/catch block, via an uncaught exception or an explicit return statement, the finally clause is also execute.

Using System.exit (); in try block will not allow finally code to execute

Finalize: - some times an object need to perform some actions when it is going to destroy, if an object holding some non-java resource such as file handle (or) window character font, these resources are freed before the object is going to destroy any cleanup processing before the object is garbage collected.

Q) Superclass & Subclass
A super class is a class that is inherited whereas subclass is a class that does the inheriting

Q) Diff forms of Polymorphism? Method overloading, Method overriding?
A) Method overloading, Method overriding through inheritance

Q) Method Overloading & Method Overriding?

Method Overloading (Compile time polymorphism)
Define two or more methods within the same class (or) subclass that share the same name and their parameter declarations are different then the methods are said to be overloaded. Overloaded methods must differ in number of parameters & return type.

• Overloaded methods are not required to have the same return type or the list of thrown exceptions.
• Overloading is particularly used while implementing several methods that implement similar behavior but for different data types.

Method Overriding (Runtime polymorphism)
When a method in a subclass has the same name, return type and parameters as the method in the super class then the method in the subclass is override the method in the super class.

COREJAVA INTERVIEW QUESTIONS3

101. Can an abstract class be final?
An abstract class may not be declared as final.
102. What is numeric promotion?
Numeric promotion is the conversion of a smaller numeric type to a larger numeric type, so that integer and floating-point operations may take place. In numerical promotion, byte, char, and short values are converted to int values. The int values are also converted to long values, if necessary. The long and float values are converted to double values, as required.
103. What is the difference between a public and a non-public class?
A public class may be accessed outside of its package. A non-public class may not be accessed outside of its package.
104. To what value is a variable of the boolean type automatically initialized?
The default value of the boolean type is false.
105. What is the difference between the prefix and postfix forms of the ++ operator?
The prefix form performs the increment operation and returns the value of the increment operation. The postfix form returns the current value all of the expression and then performs the increment operation on that value.
106. What restrictions are 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. The overriding method may not throw any exceptions that may not be thrown by the overridden method.
107. What is a Java package and how is it used?
A Java package is a naming context for classes and interfaces. A package is used to create a separate name space for groups of classes and interfaces. Packages are also used to organize related classes and interfaces into a single API unit and to control accessibility to these classes and interfaces.
108. What modifiers may be used with a top-level class?
A top-level class may be public, abstract, or final.
109. What is the difference between an if statement and a switch statement?
The if statement is used to select among two alternatives. It uses a boolean expression to decide which alternative should be executed. The switch statement is used to select among multiple alternatives. It uses an int expression to determine which alternative should be executed.
110. What are the practical benefits, if any, of importing a specific class rather than an entire package (e.g. import java.net.* versus import java.net.Socket)?
It makes no difference in the generated class files since only the classes that are actually used are referenced by the generated class file. There is another practical benefit to importing single classes, and this arises when two (or more) packages have classes with the same name. Take java.util.Timer and javax.swing.Timer, for example. If Iimport java.util.* and javax.swing.* and then try to use "Timer", I get an error while compiling (the class name is ambiguous between both packages). Let's say what you really wanted was the javax.swing.Timer class, and the only classes you plan on using in java.util are Collection and HashMap. In this case, some people will prefer to import java.util.Collection and import java.util.HashMap instead of importing java.util.*. This will now allow them to use Timer, Collection, HashMap, and other javax.swing classes without using fully qualified class names in.
111. Can a method be overloaded based on different return type but same argument type ?
No, because the methods can be called without using their return type in which case there is ambiquity for the compiler.
112. What happens to a static variable that is defined within a method of a class ?
Can't do it. You'll get a compilation error.
113. How many static initializers can you have ?
As many as you want, but the static initializers and class variable initializers are executed in textual order and may not refer to class variables declared in the class whose declarations appear textually after the use, even though these class variables are in scope.
114. What is the difference between method overriding and overloading?
Overriding is a method with the same name and arguments as in a parent, whereas overloading is the same method name but different arguments
115. What is constructor chaining and how is it achieved in Java ?
A child object constructor always first needs to construct its parent (which in turn calls its parent constructor.). In Java it is done via an implicit call to the no-args constructor as the first statement.
116. What is the difference between the Boolean & operator and the && operator?
If an expression involving the Boolean & operator is evaluated, both operands are evaluated. Then the & operator is applied to the operand. When an expression involving the && operator is evaluated, the first operand is evaluated. If the first operand returns a value of true then the second operand is evaluated. The && operator is then applied to the first and second operands. If the first operand evaluates to false, the evaluation of the second operand is skipped.
117. Which Java operator is right associative?
The = operator is right associative.
118. Can a double value be cast to a byte?
Yes, a double value can be cast to a byte.
119. What is the difference between a break statement and a continue statement?
A break statement results in the termination of the statement to which it applies (switch, for, do, or while). Acontinue statement is used to end the current loop iteration and return control to the loop statement.
120. Can a for statement loop indefinitely?
Yes, a for statement can loop indefinitely. For example, consider the following: for(;;);
121. To what value is a variable of the String type automatically initialized?
The default value of an String type is null.
122. What is the difference between a field variable and a local variable?
A field variable is a variable that is declared as a member of a class. A local variable is a variable that is declared local to a method.
123. How are this() and super() used with constructors?
this() is used to invoke a constructor of the same class. super() is used to invoke a superclass constructor.
124. What does it mean that a class or member is final?
A final class cannot be inherited. A final method cannot be overridden in a subclass. A final field cannot be changed after it's initialized, and it must include an initializer statement where it's declared.
125. What does it mean that a method or class is abstract?
An abstract class cannot be instantiated. Abstract methods may only be included in abstract classes. However, an abstract class is not required to have any abstract methods, though most of them do. Each subclass of an abstract class must override the abstract methods of its superclasses or it also should be declared abstract.
126. What is a transient variable?
Transient variable is a variable that may not be serialized.
127. How does Java handle integer overflows and underflows?
It uses those low order bytes of the result that can fit into the size of the type allowed by the operation.
128. What is the difference between the >> and >>> operators?
The >> operator carries the sign bit when shifting right. The >>> zero-fills bits that have been shifted out.
129. Is sizeof a keyword?
The sizeof operator is not a keyword.

COREJAVA INTERVIEW QUESTIONS2

51. Can a class be defined inside an Interface?
Yes it's possible.
52. Can an Interface be defined inside a class?
Yes it's possible.
53. What is a Marker Interface?
An Interface which doesn't have any declaration inside but still enforces a mechanism.
54. Which object oriented Concept is achieved by using overloading and overriding?
Polymorphism.
55. Why does Java not support operator overloading?
Operator overloading makes the code very difficult to read and maintain. To maintain code simplicity, Java doesn't support operator overloading.
56. Can we define private and protected modifiers for variables in interfaces?
No.
57. What is Externalizable?
Externalizable is an Interface that extends Serializable Interface. And sends data into Streams in Compressed Format. It has two methods, writeExternal(ObjectOuput out) and readExternal(ObjectInput in)
58. What modifiers are allowed for methods in an Interface?
Only public and abstract modifiers are allowed for methods in interfaces.
59. What is a local, member and a class variable?
Variables declared within a method are "local" variables.
Variables declared within the class i.e not within any methods are "member" variables (global variables).
Variables declared within the class i.e not within any methods and are defined as "static" are class variables.
60. What is an abstract method?
An abstract method is a method whose implementation is deferred to a subclass.
61. What value does read() return when it has reached the end of a file?
The read() method returns -1 when it has reached the end of a file.
62. Can a Byte object be cast to a double value?
No, an object cannot be cast to a primitive value.
63. What is the difference between a static and a non-static inner class?
A non-static inner class may have object instances that are associated with instances of the class's outer class. A static inner class does not have any object instances.
64. What is an object's lock and which object's have locks?
An object's lock is a mechanism that is used by multiple threads to obtain synchronized access to the object. A thread may execute a synchronized method of an object only after it has acquired the object's lock. All objects and classes have locks. A class's lock is acquired on the class's Class object.
65. What is the % operator?
It is referred to as the modulo or remainder operator. It returns the remainder of dividing the first operand by the second operand.
66. When can an object reference be cast to an interface reference?
An object reference be cast to an interface reference when the object implements the referenced interface.
67. Which class is extended by all other classes?
The Object class is extended by all other classes.
68. Which non-Unicode letter characters may be used as the first character of an identifier?
The non-Unicode letter characters $ and _ may appear as the first character of an identifier
69. What restrictions are placed on method overloading?
Two methods may not have the same name and argument list but different return types.
70. What is casting?
There are two types of casting, casting between primitive numeric types and casting between object references. Casting between numeric types is used to convert larger values, such as double values, to smaller values, such as byte values. Casting between object references is used to refer to an object by a compatible class, interface, or array type reference.
71. What is the return type of a program's main() method?
void.
72. If a variable is declared as private, where may the variable be accessed?
A private variable may only be accessed within the class in which it is declared.
73. What do you understand by private, protected and public?
These are accessibility modifiers. Private is the most restrictive, while public is the least restrictive. There is no real difference between protected and the default type (also known as package protected) within the context of the same package, however the protected keyword allows visibility to a derived class in a different package.
74. What is Downcasting ?
Downcasting is the casting from a general to a more specific type, i.e. casting down the hierarchy
75. What modifiers may be used with an inner class that is a member of an outer class?
A (non-local) inner class may be declared as public, protected, private, static, final, or abstract.
76. How many bits are used to represent Unicode, ASCII, UTF-16, and UTF-8 characters?
Unicode requires 16 bits and ASCII require 7 bits Although the ASCII character set uses only 7 bits, it is usually represented as 8 bits.
UTF-8 represents characters using 8, 16, and 18 bit patterns.
UTF-16 uses 16-bit and larger bit patterns.
77. What restrictions are placed on the location of a package statement within a source code file?
A package statement must appear as the first line in a source code file (excluding blank lines and comments).
78. What is a native method?
A native method is a method that is implemented in a language other than Java.
79. What are order of precedence and associativity, and how are they used?
Order of precedence determines the order in which operators are evaluated in expressions. Associatity determines whether an expression is evaluated left-to-right or right-to-left.
80. Can an anonymous class be declared as implementing an interface and extending a class?
An anonymous class may implement an interface or extend a superclass, but may not be declared to do both.
81. What is the range of the char type?
The range of the char type is 0 to 216 - 1 (i.e. 0 to 65535.)
82. What is the range of the short type?
The range of the short type is -(215) to 215 - 1. (i.e. -32,768 to 32,767)
83. Why isn't there operator overloading?
Because C++ has proven by example that operator overloading makes code almost impossible to maintain.
84. What does it mean that a method or field is "static"?
Static variables and methods are instantiated only once per class. In other words they are class variables, not instance variables. If you change the value of a static variable in a particular object, the value of that variable changes for all instances of that class. Static methods can be referenced with the name of the class rather than the name of a particular object of the class (though that works too). That's how library methods likeSystem.out.println() work. out is a static field in the java.lang.System class.
85. Is null a keyword?
The null value is not a keyword.
86. Which characters may be used as the second character of an identifier, but not as the first character of an identifier?
The digits 0 through 9 may not be used as the first character of an identifier but they may be used after the first character of an identifier.
87. Is the ternary operator written x : y ? z or x ? y : z ?
It is written x ? y : z.
88. How is rounding performed under integer division?
The fractional part of the result is truncated. This is known as rounding toward zero.
89. 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 access. This means that the class can only be accessed by other classes and interfaces that are defined within the same package.
90. Does a class inherit the constructors of its superclass?
A class does not inherit constructors from any of its superclasses.
91. Name the eight primitive Java types.
The eight primitive types are byte, char, short, int, long, float, double, and boolean.
92. What restrictions are placed on the values of each case of a switch statement?
During compilation, the values of each case of a switch statement must evaluate to a value that can be promoted to an int value.
93. What is the difference between a while statement and a do while statement?
A while statement checks at the beginning of a loop to see whether the next loop iteration should occur. A do while statement checks at the end of a loop to see whether the next iteration of a loop should occur. The do whilestatement will always execute the body of a loop at least once.
94. What modifiers can be used with a local inner class?
A local inner class may be final or abstract.
95. When does the compiler supply a default constructor for a class?
The compiler supplies a default constructor for a class if no other constructors are provided.
96. If a method is declared as protected, where may the method be accessed?
A protected method may only be accessed by classes or interfaces of the same package or by subclasses of the class in which it is declared.
97. What are the legal operands of the instanceof operator?
The left operand is an object reference or null value and the right operand is a class, interface, or array type.
98. Are true and false keywords?
The values true and false are not keywords.
99. What happens when you add a double value to a String?
The result is a String object.
100. What is the diffrence between inner class and nested class?
When a class is defined within a scope od another class, then it becomes inner class. If the access modifier of the inner class is static, then it becomes nested class.

COREJAVA INTERVIEW QUESTIONS1

1. What is the most important feature of Java?
Java is a platform independent language.
2. What do you mean by platform independence?
Platform independence means that we can write and compile the java code in one platform (eg Windows) and can execute the class in any other supported platform eg (Linux,Solaris,etc).
3. What is a JVM?
JVM is Java Virtual Machine which is a run time environment for the compiled java class files.
4. Are JVM's platform independent?
JVM's are not platform independent. JVM's are platform specific run time implementation provided by the vendor.
5. What is the difference between a JDK and a JVM?
JDK is Java Development Kit which is for development purpose and it includes execution environment also. But JVM is purely a run time environment and hence you will not be able to compile your source files using a JVM.
6. What is a pointer and does Java support pointers?
Pointer is a reference handle to a memory location. Improper handling of pointers leads to memory leaks and reliability issues hence Java doesn't support the usage of pointers.
7. What is the base class of all classes?
java.lang.Object
8. Does Java support multiple inheritance?
Java doesn't support multiple inheritance.
9. Is Java a pure object oriented language?
Java uses primitive data types and hence is not a pure object oriented language.
10. Are arrays primitive data types?
In Java, Arrays are objects.
11. What is difference between Path and Classpath?
Path and Classpath are operating system level environment variales. Path is used define where the system can find the executables(.exe) files and classpath is used to specify the location .class files.
12. What are local variables?
Local varaiables are those which are declared within a block of code like methods. Local variables should be initialised before accessing them.
13. What are instance variables?
Instance variables are those which are defined at the class level. Instance variables need not be initialized before using them as they are automatically initialized to their default values.
14. How to define a constant variable in Java?
The variable should be declared as static and final. So only one copy of the variable exists for all instances of the class and the value can't be changed also.
static final int PI = 2.14; is an example for constant.
15. Should a main() method be compulsorily declared in all java classes?
No not required. main() method should be defined only if the source class is a java application.
16. What is the return type of the main() method?
Main() method doesn't return anything hence declared void.
17. Why is the main() method declared static?
main() method is called by the JVM even before the instantiation of the class hence it is declared as static.
18. What is the arguement of main() method?
main() method accepts an array of String object as arguement.
19. Can a main() method be overloaded?
Yes. You can have any number of main() methods with different method signature and implementation in the class.
20. Can a main() method be declared final?
Yes. Any inheriting class will not be able to have it's own default main() method.
21. Does the order of public and static declaration matter in main() method?
No. It doesn't matter but void should always come before main().
22. Can a source file contain more than one class declaration?
Yes a single source file can contain any number of Class declarations but only one of the class can be declared aspublic.
23. What is a package?
Package is a collection of related classes and interfaces. package declaration should be first statement in a java class.
24. Which package is imported by default?
java.lang package is imported by default even without a package declaration.
25. Can a class declared as private be accessed outside it's package?
Not possible.
26. Can a class be declared as protected?
A class can't be declared as protected. only methods can be declared as protected.
27. What is the access scope of a protected method?
A protected method can be accessed by the classes within the same package or by the subclasses of the class in any package.
28. What is the purpose of declaring a variable as final?
A final variable's value can't be changed. final variables should be initialized before using them.
29. What is the impact of declaring a method as final?
A method declared as final can't be overridden. A sub-class can't have the same method signature with a different implementation.
30. I don't want my class to be inherited by any other class. What should i do?
You should declared your class as final. But you can't define your class as final, if it is an abstract class. A class declared as final can't be extended by any other class.
31. Can you give few examples of final classes defined in Java API?
java.lang.String, java.lang.Math are final classes.
32. How is final different from finally and finalize()?
final is a modifier which can be applied to a class or a method or a variable. final class can't be inherited, finalmethod can't be overridden and final variable can't be changed.

finally is an exception handling code section which gets executed whether an exception is raised or not by the try block code segment.

finalize() is a method of Object class which will be executed by the JVM just before garbage collecting object to give a final chance for resource releasing activity.
33. Can a class be declared as static?
No a class cannot be defined as static. Only a method, a variable or a block of code can be declared as static.
34. When will you define a method as static?
When a method needs to be accessed even before the creation of the object of the class then we should declare the method as static.
35. What are the restriction imposed on a static method or a static block of code?
A static method should not refer to instance variables without creating an instance and cannot use "this" operator to refer the instance.
36. I want to print "Hello" even before main() is executed. How will you acheive that?
Print the statement inside a static block of code. Static blocks get executed when the class gets loaded into the memory and even before the creation of an object. Hence it will be executed before the main() method. And it will be executed only once.
37. What is the importance of static variable?
static variables are class level variables where all objects of the class refer to the same variable. If one object changes the value then the change gets reflected in all the objects.
38. Can we declare a static variable inside a method?
Static varaibles are class level variables and they can't be declared inside a method. If declared, the class will not compile.
39. What is an Abstract Class and what is it's purpose?
A Class which doesn't provide complete implementation is defined as an abstract class. Abstract classes enforce abstraction.
40. Can a abstract class be declared final?
Not possible. An abstract class without being inherited is of no use and hence will result in compile time error.
41. What is use of a abstract variable?
Variables can't be declared as abstract. only classes and methods can be declared as abstract.
42. Can you create an object of an abstract class?
Not possible. Abstract classes can't be instantiated.
43. Can a abstract class be defined without any abstract methods?
Yes it's possible. This is basically to avoid instance creation of the class.
44. Class C implements Interface I containing method m1 and m2 declarations. Class C has provided implementation for method m2. Can i create an object of Class C?
No not possible. Class C should provide implementation for all the methods in the Interface I. Since Class Cdidn't provide implementation for m1 method, it has to be declared as abstract. Abstract classes can't be instantiated.
45. Can a method inside a Interface be declared as final?
No not possible. Doing so will result in compilation error. public and abstract are the only applicable modifiers for method declaration in an interface.
46. Can an Interface implement another Interface?
Intefaces doesn't provide implementation hence a interface cannot implement another interface.
47. Can an Interface extend another Interface?
Yes an Interface can inherit another Interface, for that matter an Interface can extend more than one Interface.
48. Can a Class extend more than one Class?
Not possible. A Class can extend only one class but can implement any number of Interfaces.
49. Why is an Interface be able to extend more than one Interface but a Class can't extend more than one Class?
Basically Java doesn't allow multiple inheritance, so a Class is restricted to extend only one Class. But an Interface is a pure abstraction model and doesn't have inheritance hierarchy like classes(do remember that the base class of all classes is Object). So an Interface is allowed to extend more than one Interface.
50. Can an Interface be final?
Not possible. Doing so so will result in compilation error.