Unique Skill

1           What is transient variable?


Transient variable can’t be serialize. For example if a variable is declared as transient in a Serializable class and the class is written to an ObjectStream, the value of the variable can’t be written to the stream instead when the class is retrieved from the ObjectStream the value of the variable becomes null.


 


2           Name the containers which uses Border Layout as their default layout?


Containers which use Border Layout as their default ones are, window, Frame and Dialog classes.


 


3           What do you understand by 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. In non synchronized multithreaded application, it is possible for one thread to modify a shared object while another thread is in the process of using or updating the object’s value. Synchronization prevents such type of data corruption.


 


E.g. Synchronizing a function:


public synchronized void Method1 () {


     // Appropriate method-related code.


}


 


E.g. Synchronizing a block of code inside a function:


public myFunction (){


    synchronized (this) {


            // Synchronized code here.


         }


}


 


4           What is Collection API?


The Collection API is a set of classes and interfaces that support operation on collections of objects. These classes and interfaces are more flexible, more powerful, and more regular than the vectors, arrays, and hashtables if effectively replaces.


Collection


—-Set


——–HashSet


——–TreeSet


——–LinkedList


—-List


——–ArrayList


——–Vector


 


Map


—-Hashtable


—-HashMap


 


5           Is Iterator a Class or Interface? What is its use?


Iterator is an interface which is used to step through the elements of a Collection.


 


6           What is similarities/difference between an Abstract class and Interface?


6.1          Similarities


6.1.1     They can be used to implement the polymorphism.


6.1.2     Both of them can not be instantiated.


6.2          Differences


6.2.1     Interface can be used to implement the multiple inheritances while the abstract can not. Because the Java only provides the single inheritance.


6.2.2     There is no implementation in the interfaces. But in abstract class, you can implement some common logic.


6.2.3     In interface, there can be only public methods and public static fields.


6.2.4     The efficiency with interface is lower than abstract class. (If it refer to the  overrode function)


 


7           How to define an Interface?


7In 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.


Emaple of Interface:


 


public interface sampleInterface {


    public void functionOne();


 


    public static long CONSTANT_ONE = 1000;


}


 


8           Explain the user defined Exceptions?


8User defined Exceptions are the separate Exception classes defined by the user for specific purposed. An user defined can created by simply sub-classing it to the Exception class. This allows custom exceptions to be generated (using throw) and caught in the same way as normal exceptions.


 


Example:


class myCustomException extends Exception {


     // The class simply has to exist to be an exception


}


 


9           Explain the new Features of JDBC 2.0 Core API?


The JDBC 2.0 API includes the complete JDBC API, which includes both core and Optional Package API, and provides inductrial-strength database computing capabilities.


 


New Features in JDBC 2.0 Core API:


9.1          Scrollable result sets – using new methods in the ResultSet interface allows programmatically move the to particular row or to a position relative to its current position. The methods is ResultSet.relative(…).


9.2          JDBC 2.0 Core API provides the Batch Updates functionality to the java applications.


9.3          Java applications can now use the ResultSet.updateXXX methods.


9.4          New data types – interfaces mapping the SQL3 data types


9.5          Custom  mapping of user-defined types (UTDs)


9.6          Miscellaneous features, including performance hints, the use of character streams, full precision for java.math.BigDecimal values, additional security, and support for time zones in date, time, and timestamp values. 


 


10       Explain garbage collection?


Garbage collection is one of the most important feature of Java. Garbage collection 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. I 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.


 


11       How you can force the garbage collection?


Garbage collection automatic process and can’t be forced. 


 


12       What is OOPS?


OOP is the common abbreviation for Object-Oriented Programming.  


 


13       Describe the principles of OOPS.


There are three main principals of oops which are called Polymorphism, Inheritance and Encapsulation. 


 


14       Explain the Encapsulation principle.


14Encapsulation is a process of binding or wrapping the data and the codes that operates on the data into a single entity. This keeps the data safe from outside interface and misuse. One way to think about encapsulation is as a protective wrapper that prevents code and data from being arbitrarily accessed by other code defined outside the wrapper. 


 


15       Explain the Inheritance principle.


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


 


16       Explain the Polymorphism principle.


16.1       One name many forms.


16.2       One interface multiple implementations.


 


The meaning of Polymorphism is something like one name many forms. Polymorphism enables one entity to be used as as general category for different types of actions. The specific action is determined by the exact nature of the situation. The concept of polymorphism can be explained as “one interface, multiple methods”. 


 


17       Explain the different forms of Polymorphism.


From a practical programming viewpoint, polymorphism exists in three distinct forms in


 


Java:


Method overloading


Method overriding through inheritance


Method overriding through the Java interface


 


18       Access specifiers are keywords that determine the type of access to the member of a class.


Public


Protected


Defaults(Package)


Private


 


19       Describe the wrapper classes in Java.


Wrapper class is wrapper around a primitive data type. An instance of a wrapper class contains, or wraps, a primitive value of the corresponding type.


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


 


20       Read the following program:


public class test {


public static void main(String [] args) {


    int x = 3;


    int y = 1;


   if (x = y)


     System.out.println(“Not equal”);


  else


    System.out.println(“Equal”);


 }


}


 


What is the result?


   A. The output is “Equal”


   B. The output in “Not Equal”


   C. An error at ” if (x = y)” causes compilation to fall.


   D. The program executes but no output is show on console.


 


Answer: C


 


21       what is the class variables ?


When we create a number of objects of the same class, then each object will share a common copy of variables. That means that 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, but mind it that it should be declared outside outside a class. These variables are stored in static memory. Class variables are mostly used for constants, variable that never change its initial value. Static variables are always called by the class name. This variable is created when the program starts i.e. it is created before the instance is created of class by using new operator and gets destroyed when the programs stops. The scope of the class variable is same a instance variable. The class variable can be defined anywhere at class level with the keyword static. It initial value is same as instance variable. When the class variable is defined as int then it’s initial value is by default zero, when declared boolean its default value is false and null for object references. Class variables are associated with the class, rather than with any object. 


 


22       What is the difference between the instanceof and getclass, these two are same or not ?


Instanceof is a operator, not a function while getClass is a method of java.lang.Object class. Consider a condition where we use


 


if(o.getClass().getName().equals(“java.lang.Math”)){ }


 


This method only checks if the classname we have passed is equal to java.lang.Math. The class java.lang.Math is loaded by the bootstrap ClassLoader. This class is an abstract class.This class loader is responsible for loading classes. Every Class object contains a reference to the ClassLoader that defines. getClass() method returns the runtime class of an object. It fetches the java instance of the given fully qualified type name. The code we have written is not necessary, because we should not compare getClass.getName(). The reason behind it is that if the two different class loaders load the same class but for the JVM, it will consider both classes as different classes so, we can’t compare their names. It can only gives the implementing class but can’t compare a interface, but instanceof operator can.


 


The instanceof operator compares an object to a specified type. We can use it to test if an object is an instance of a class, an instance of a subclass, or an instance of a class that implements a particular interface. We should try to use instanceof operator in place of getClass() method. Remember instanceof opeator and getClass are not same. Try this example, it will help you to better understand the difference between the two.


 


Interface one{


}


Class Two implements one {


}


Class Three implements one {


}


 


public class Test {


public static void main(String args[]) {


One test1 = new Two();


One test2 = new Three();


System.out.println(test1 instanceof one); //true


System.out.println(test2 instanceof one); //true


System.out.println(Test.getClass().equals(test2.getClass())); //false


}


}


 


23       Is “abc” a primitive value?


The String literal “abc” is not a primitive value. It is a String object.


 


24       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.


 


25       What modifiers may be used with an interface declaration? –


An interface may be declared as public or abstract.


 


26       What is the difference between a while statement and a do statement?


A while statement checks at the beginning of a loop to see whether the next loop iteration should occur. A do statement 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 body of a loop at least once.


 


27       What modifiers can be used with a local inner class?


A local inner class may be final or abstract.


 


28       What is the purpose of the File class?


The File class is used to create objects that provide access to the files and directories of a local file system.


 


29       Can an exception be rethrown?


Yes, an exception can be rethrown.


 


30       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.


 


31       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.


 


32       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


 


33       What restrictions are placed on method overloading?


Two methods may not have the same name and argument list but different return types.


 


34       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.


 


35       What is the return type of a program’s main() method?


A program’s main() method has a void return type.


 


36       What class of exceptions are generated by the Java run-time system?


The Java runtime system generates RuntimeException and Error exceptions.


 


37       What class allows you to read objects directly from a stream?


The ObjectInputStream class supports the reading of objects from input streams.


 


38       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.


 


39       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.


 


40       What is the relationship between a method’s throws clause and the exceptions that can be thrown during the method’s execution?


A method’s throws clause must declare any checked exceptions that are not caught within the body of the method.


 


41       Why are the methods of the Math class static?


So they can be invoked as if they are a mathematical code library.


 


42       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.


 


43       What are E and PI?


E is the base of the natural logarithm and PI is mathematical value pi. They are defined in the Math class.


 


44       Are true and false keywords?


The values true and false are not keywords. Both are the constant values like 0, 1, 2.


 


45       What is the difference between the File and RandomAccessFile classes?


The File class encapsulates the files and directories of the local file system. The RandomAccessFile class provides the methods needed to directly access data contained in any part of a file.


 


46       What happens when you add a double value to a String?


The result is a String object.


 


47       What is your platform’s default character encoding?


If you are running Java on English Windows platforms, it is probably Cp1252. If you are running Java on English Solaris platforms, it is most likely 8859_1.


 


48       Which package is always imported by default?


The java.lang package is always imported by default.


 


49       What interface must an object implement before it can be written to a stream as an object?


An object must implement the Serializable or Externalizable interface before it can be written to a stream as an object.


 


50       How can my application get to know when a HttpSession is removed?


Define a Class HttpSessionNotifier which implements HttpSessionBindingListener and implement the functionality what you need in valueUnbound() method. Create an instance of that class and put that instance in HttpSession.


 


51       What’s the difference between notify() and notifyAll()?


notify() is used to unblock one waiting thread; notifyAll() is used to unblock all of them. Using notify() is preferable (for efficiency) when only one blocked thread can benefit from the change (for example, when freeing a buffer back into a pool). notifyAll() is necessary (for correctness) if multiple threads should resume (for example, when releasing a “writer” lock on a file might permit all “readers” to resume).


 


52       Why can’t I say just abs() or sin() instead of Math.abs() and Math.sin()?


The import statement does not bring methods into your local name space. It lets you abbreviate class names, but not get rid of them altogether. That’s just the way it works, youll get used to it. It’s really a lot safer this way.


 


However, there is actually a little trick you can use in some cases that gets you what you want. If your top-level class doesn’t need to inherit from anything else, make it inherit from java.lang.Math. That *does* bring all the methods into your local name space. But you can’t use this trick in an applet, because you have to inherit from java.awt.Applet. And actually, you can’t use it on java.lang.Math at all, because Math is a “final” class which means it can’t be extended.


 


53       Why are there no global variables in Java?


Global variables are considered bad form for a variety of reasons: Adding state variables breaks referential transparency (you no longer can understand a statement or expression on its own: you need to understand it in the context of the settings of the global variables), State variables lessen the cohesion of a program: you need to know more to understand how something works. A major point of Object-Oriented programming is to break up global state into more easily understood collections of local state, When you add one variable, you limit the use of your program to one instance. What you thought was global, someone else might think of as local: they may want to run two copies of your program at once. For these reasons, Java decided to ban global variables.


 


54       What does it mean that a class or member is final?


A final class can no longer be subclassed. Mostly this is done for security reasons with basic classes like String and Integer. It also allows the compiler to make some optimizations, and makes thread safety a little easier to achieve. Methods may be declared final as well. This means they may not be overridden in a subclass. Fields can be declared final, too. However, this has a completely different meaning. A final field cannot be changed after it’s initialized, and it must include an initializer statement where it’s declared. For example, public final double c = 2.998; It’s also possible to make a static field final to get the effect of C++’s const statement or some uses of C’s #define, e.g. public static final double c = 2.998;


 


55       What does it mean that a method or class is abstract?


An abstract class cannot be instantiated. Only its subclasses can be instantiated. You indicate that a class is abstract with the abstract keyword like this:


public abstract class Container extends Component {


Abstract classes may contain abstract methods. A method declared abstract is not actually implemented in the current class. It exists only to be overridden in subclasses. It has no body. For example,


public abstract float price();


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 itself be declared abstract.


 


56       What is a transient variable?


Transient variable is a variable that may not be serialized.


 


57       How are Observer and Observable used?


Objects that subclass the Observable class maintain a list of observers. When an Observable object is updated it invokes the update() method of each of its observers to notify the observers that it has changed state. The Observer interface is implemented by objects that observe Observable objects.


 


58       Can a lock be acquired on a class?


Yes, a lock can be acquired on a class. This lock is acquired on the class’s Class object.


 


59       What state does a thread enter when it terminates its processing?


When a thread terminates its processing, it enters the dead state.


 


 


60       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.


 


61       Is sizeof a keyword?


The sizeof operator is not a keyword.


 


62       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


 


63       Can an object’s finalize() method be invoked while it is reachable?


An object’s finalize() method cannot be invoked by the garbage collector while the object is still reachable. However, an object’s finalize() method may be invoked by other objects.



64       What value does readLine() return when it has reached the end of a file?


The readLine() method returns null when it has reached the end of a file.


 


65       Can a for statement loop indefinitely?


Yes, a for statement can loop indefinitely. For example, consider the following: for($$) ;


 


66       To what value is a variable of the String type automatically initialized?


The default value of an String type is null.


 


67       What is a task’s priority and how is it used in scheduling?


A task’s priority is an integer value that identifies the relative order in which it should be executed with respect to other tasks. The scheduler attempts to schedule higher priority tasks before lower priority tasks. Please see the method public final void setPriority(int newPriority) in class Thread.


 


68       What is the range of the short type?


The range of the short type is -(2^15) to 2^15 – 1.


 


69       What is the purpose of garbage collection?


The purpose of garbage collection is to identify and discard objects that are no longer needed by a program so that their resources may be reclaimed and reused.


 


70       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.


 


71       What is Downcasting?


Downcasting is the casting from a general to a more specific type, i.e. casting down the hierarchy


 


72       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


 


73       What happens to a static var that is defined within a method of a class ?


Can’t do it. You’ll get a compilation error


 


74       How many static init 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.


 


75       What is the difference amongst JVM Spec, JVM Implementation, JVM Runtime ?


The JVM spec is the blueprint for the JVM generated and owned by Sun. The JVM implementation is the actual implementation of the spec by a vendor and the JVM runtime is the actual running instance of a JVM implementation


 


76       Describe what happens when an object is created in Java?


Several things happen in a particular order to ensure the object is constructed properly: Memory is allocated from heap to hold all instance variables and implementation-specific data of the object and its superclasses. Implemenation-specific data includes pointers to class and method data. The instance variables of the objects are initialized to their default values. The constructor for the most derived class is invoked. The first thing a constructor does is call the consctructor for its superclasses. This process continues until the constrcutor for java.lang.Object is called, as java.lang.Object is the base class for all objects in java. Before the body of the constructor is executed, all instance variable initializers and initialization blocks are executed. Then the body of the constructor is executed. Thus, the constructor for the base class completes first and constructor for the most derived class completes last.


 


77       Why does it take so much time to access an Applet having Swing Components the first time?


Because behind every swing component are many Java objects and resources. This takes time to create them in memory. JDK 1.3 from Sun has some improvements which may lead to faster execution of Swing applications.


 


78       What is Action Class?


78The Action is part of the controller. The purpose of Action Class is to translate the HttpServletRequest to the business logic. To use the Action, we need to  Subclass and overwrite the execute()  method. The ActionServlet (commad) passes the parameterized class to Action Form using the execute() method. There should be no database interactions in the action. The action should receive the request, call business objects (which then handle database, or interface with J2EE, etc) and then determine where to go next. Even better, the business objects could be handed to the action at runtime (IoC style) thus removing any dependencies on the model.   The return type of the execute method is ActionForward which is used by the Struts Framework to forward the request to the file as per the value of the returned ActionForward object.


 


79       Write code of any Action Class?


79 Here is the code of Action Class that returns the ActionForward object.


 


TestAction.java


 










package roseindia.net;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class TestAction extends Action
{
  public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response) throws Exception{
      return mapping.findForward(“testAction”);
  }
}



 


80       What is ActionForm?


80An ActionForm is a JavaBean that extends org.apache.struts.action.ActionForm. ActionForm maintains the session state for web application and the ActionForm object is automatically populated on the server side with data entered from a form on the client side.


 


81       What is Struts Validator Framework?


81Struts Framework provides the functionality to validate the form data. It can be use to validate the data on the users browser as well as on the server side. Struts Framework emits the java scripts and it can be used validate the form data on the client browser. Server side validation of form can be accomplished by sub classing your From Bean with DynaValidatorForm class. 


 


The Validator framework was developed by David Winterfeldt as third-party add-on to Struts. Now the Validator framework is a part of Jakarta Commons project and it can be used with or without Struts. The Validator framework comes integrated with the Struts Framework and can be used without doing any extra settings.


 


82       Give the Details of XML files used in Validator Framework?


The Validator Framework uses two XML configuration files validator-rules.xml and validation.xml. The validator-rules.xml defines the standard validation routines, these are reusable and used in validation.xml. to define the form specific validations. The validation.xml defines the validations applied to a form bean.


 


83       How you will display validation fail errors on jsp page?


83Following tag displays all the errors:


<html:errors/>


 


84       How you will enable front-end validation based on the xml in validation.xml?


84The <html:javascript> tag to allow front-end validation based on the xml in validation.xml. For  example the code: <html:javascript formName=”logonForm” dynamicJavascript=”true” staticJavascript=”true” /> generates the client side java script for the form “logonForm” as defined in the validation.xml file. The <html:javascript> when added in the jsp file generates the client site validation script.


 


85       What is RequestProcessor and RequestDispatcher?


The controller is responsible for intercepting and translating user input into actions to be performed by the model. The controller is responsible for selecting the next view based on user input and the outcome of model operations. The Controller receives the request from the browser, invoke a business operation and coordinating the view to return to the client.

The controller is implemented by a java servlet, this servlet is centralized point of control for the web application. In struts framework the controller responsibilities are implemented by several different components like



The ActionServlet Class
The RequestProcessor Class
The Action Class


The ActionServlet extends the javax.servlet.http.httpServlet class. The ActionServlet class is not abstract and therefore can be used as a concrete controller by your application.
The controller is implemented by the ActionServlet class. All incoming requests are mapped to the central controller in the deployment descriptor as follows.



<servlet>
   <servlet-name>action</servlet-name>
   <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>



All request URIs with the pattern *.do are mapped to this servlet in the deployment descriptor as follows.

<servlet-mapping>
         <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
</servlet-mapping>



A request URI that matches this pattern will have the following form.



http://www.my_site_name.com/mycontext/actionName.do

The preceding mapping is called extension mapping, however, you can also specify path mapping where a pattern ends with /* as shown below.



<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>/do/*</url-pattern>


</servlet-mapping>



A request URI that matches this pattern will have the following form.
http://www.my_site_name.com/mycontext/do/action_Name
The class org.apache.struts.action.requestProcessor process the request from the controller. You can sublass the RequestProcessor with your own version and modify how the request is processed.

Once the controller receives a client request, it delegates the handling of the request to a helper class. This helper knows how to execute the business operation associated with the requested action. In the Struts framework this helper class is descended of org.apache.struts.action.Action class. It acts as a bridge between a client-side user action and business operation. The Action class decouples the client request from the business model. This decoupling allows for more than one-to-one mapping between the user request and an action. The Action class also can perform other functions such as authorization, logging before invoking business operation. the Struts Action class contains several methods, but most important method is the execute() method.



public ActionForward execute(ActionMapping mapping,
            ActionForm form, HttpServletRequest request, HttpServletResponse response)    throws Exception; 



The execute() method is called by the controller when a request is received from a client. The controller creates an instance of the Action class if one doesn
already exist. The strut framework will create only a single instance of each Action class in your application.

Action are mapped in the struts configuration file and this configuration is loaded into memory at startup and made available to the framework at runtime. Each Action element is represented in memory by an instance of the org.apache.struts.action.ActionMapping class . The ActionMapping object contains a path attribute that is matched against a portion of the URI of the incoming request.



<action
        path= “/somerequest”
        type=”com.somepackage.someAction”
        scope=”request”
        name=”someForm”
        validate=”true”
        input=”somejsp.jsp”>
    <forward name=”Success” path=”/action/xys” redirect=”true”/>
   <forward name=”Failure” path=”/somejsp.jsp” redirect=”true”/>
</action>



Once this is done the controller should determine which view to return to the client. The execute method signature in Action class has a return type org.apache.struts.action.ActionForward class. The ActionForward class represents a destination to which the controller may send control once an action has completed. Instead of specifying an actual JSP page in the code, you can declaratively associate as action forward through out the application. The action forward are specified in the configuration file.



<action>
        path= “/somerequest”
        type=”com.somepackage.someAction”
        scope=”request”
        name=”someForm”
        validate=”true”
        input=”somejsp.jsp”
    <forward name=”Success” path=”/action/xys” redirect=”true”/>
    <forward name=”Failure” path=”/somejsp.jsp” redirect=”true”/>
</action>



The action forward mappings also can be specified in a global section, independent of any specific action mapping.



<global-forwards>
    <forward name=”Success” path=”/action/somejsp.jsp” />
    <forward name=”Failure” path=”/someotherjsp.jsp” />
</global-forwards>


public interface RequestDispatcher

Defines an object that receives requests from the client and sends them to any resource (such as a servlet, HTML file, or JSP file) on the server. The servlet container creates the RequestDispatcher object, which is used as a wrapper around a server resource located at a particular path or given by a particular name.
This interface is intended to wrap servlets, but a servlet container can create RequestDispatcher objects to wrap any type of resource.

getRequestDispatcher

public RequestDispatcher getRequestDispatcher(java.lang.String path)


Returns a RequestDispatcher object that acts as a wrapper for the resource located at the given path. A RequestDispatcher object can be used to forward a request to the resource or to include the resource in a response. The resource can be dynamic or static.
The pathname must begin with a “/” and is interpreted as relative to the current context root. Use getContext to obtain a RequestDispatcher for resources in foreign contexts. This method returns null if the ServletContext cannot return a RequestDispatcher.

Parameters:
    path – a String specifying the pathname to the resource 
Returns:
    a RequestDispatcher object that acts as a wrapper for the resource at the specified path 
See Also:
    RequestDispatcher, getContext(java.lang.String)


getNamedDispatcher

public RequestDispatcher getNamedDispatcher(java.lang.String name)


Returns a RequestDispatcher object that acts as a wrapper for the named servlet.
Servlets (and JSP pages also) may be given names via server administration or via a web application deployment descriptor. A servlet instance can determine its name using ServletConfig.getServletName().
This method returns null if the ServletContext cannot return a RequestDispatcher for any reason.

Parameters:
    name – a String specifying the name of a servlet to wrap 
Returns:
    a RequestDispatcher object that acts as a wrapper for the named servlet 
See Also:
   RequestDispatcher,getContext(java.lang.String),ServletConfig.getServletName()


 


86       Is struts threadsafe?Give an example?


86Struts is not only thread-safe but thread-dependant. The response to a request is handled by a light-weight Action object, rather than an individual servlet. Struts instantiates each Action class once, and allows other requests to be threaded through the original object. This core strategy conserves resources and provides the best possible throughput. A properly-designed application will exploit this further by routing related operations through a single Action.


 


87       Can we Serialize static variable?


Serialization is the process of converting a set of object instances that contain references to each other into a linear stream of bytes, which can then be sent through a socket, stored to a file, or simply manipulated as a stream of data. Serialization is the mechanism used by RMI to pass objects between JVMs, either as arguments in a method invocation from a client to a server or as return values from a method invocation. In the first section of this book, There are three exceptions in which serialization doesnot necessarily read and write to the stream.


 


These are,


1. Serialization ignores static fields, because they are not part of any particular object’s state.


2. Base class fields are only handled if the base class itself is serializable.


3. Transient fields. There are four basic things you must do when you are making a class serializable. They are,


Implement the Serializable interface.


Make sure that instance-level, locally defined state is serialized properly.


Make sure that superclass state is serialized properly.


Override equals( )and hashCode( ).


 


It is possible to have control over serialization process. The class should implement Externalizable interface. This interface contains two methods namely readExternal and writeExternal. You should implement these methods and write the logic for customizing the serialization process.


 


88       What are the uses of tiles-def.xml file, resourcebundle.properties file, validation.xml file?


tiles-def.xml is is an xml file used to configure tiles with the struts application. You can define the layout / header / footer / body content for your View.


 


The resourcebundle.properties file is used to configure the message (error/ other messages) for the struts applications.


 


The file validation.xml is used to declare sets of validations that should be applied to Form Beans.


 


89       What is the difference between perform() and execute() methods?


Perform method is the method which was deprecated in the Struts Version 1.1.  In Struts 1.x, Action.perform() is the method called by the ActionServlet. This is typically where your business logic resides, or at least the flow control to your JavaBeans and EJBs that handle your business logic. As we already mentioned, to support declarative exception handling, the method signature changed in perform. Now execute just throws Exception. Action.perform() is now deprecated; however, the Struts v1.1 ActionServlet is smart enough to know whether or not it should call perform or execute in the Action, depending on which one is available.


 


90       What are the various Struts tag libraries?


Struts is very rich framework and it provides very good and user friendly way to develop web application forms. Struts provide many tag libraries to ease the development of web applications. These tag libraries are:


1.1          Bean tag library – Tags for accessing JavaBeans and their properties.


1.2          HTML tag library – Tags to output standard HTML, including forms, text boxes, checkboxes, radio buttons etc..


1.3          Logic tag library – Tags for generating conditional output, iteration capabilities and flow management


1.4          Tiles or Template tag library – For the application using tiles


1.5          Nested tag library – For using the nested beans in the application


 


91       Can I setup Apache Struts to use multiple configuration files?


Yes Struts can use multiple configuration files. Here is the configuration example:


<servlet>


        <servlet-name>banking</servlet-name>


        <servlet-class>org.apache.struts.action.ActionServlet


        </servlet-class>


        <init-param>


        <param-name>config</param-name>


        <param-value>/WEB-INF/struts-config.xml,


                /WEB-INF/struts-authentication.xml,


                /WEB-INF/struts-help.xml


           </param-value>


    </init-param>


    <load-on-startup>1</load-on-startup>


</servlet>


 


92       What are the disadvantages of Struts?


92Struts is very robust framework and is being used extensively in the industry. But there are some disadvantages of the Struts:


High Learning Curve


Struts requires lot of efforts to learn and master it. For any small project less experience developers could spend more time on learning the Struts.


Harder to learn


       Struts are harder to learn, benchmark and optimize.


The name of class is not proper.


The Action should not be a class.


The ActionForm is redundant.


 


93       What are the difference between <bean:message> and <bean:write>?


<bean:message>, This tag is used to output locale-specific text (from the properties files) from a MessageResources bundle.


 


<bean:write>, This tag is used to output property values from a bean. <bean:write> is a commonly used tag which enables the programmers to easily present the data.


 


94       What is LookupDispatchAction?


94An abstract Action that dispatches to the subclass mapped execute method. This is useful in cases where an HTML form has multiple submit buttons with the same name. The button name is specified by the parameter property of the corresponding ActionMapping.


 


95       What are the components of Struts?


Struts is based on the MVC design pattern. Struts components can be categoried into Model, View and Controller.


Model: Components like business logic / business processes and data are the part of Model.


View: JSP, HTML etc. are part of View


Controller: Action Servlet of Struts is part of Controller components which works as front controller to handle all the requests.


 


96       What do you understand by JSP Actions?


JSP actions are XML tags that direct the server to use existing components or control the behavior of the JSP engine. JSP Actions consist of a typical (XML-based) prefix of “jsp” followed by a colon, followed by the action name followed by one or more attribute parameters.


 


There are six JSP Actions:


<jsp:include/>


 


<jsp:forward/>


 


<jsp:plugin/>


 


<jsp:usebean/>


 


<jsp:setProperty/>


 


<jsp:getProperty/> 


 


97       What is the difference between <jsp:include page = … > and <%@ include file = … >?


Both the tag includes the information from one page in another. The differences are as follows:


<jsp:include page = … >: This is like a function call from one jsp to another jsp. It is executed ( the included page is executed  and the generated html content is included in the content of calling jsp) each time the client page is accessed by the client. This approach is useful to for modularizing the web application. If the included file changed then the new content will be included in the output.


<%@ include file = … >: In this case the content of the included file is textually embedded in the page that have <%@ include file=”..”> directive. In this case in the included file changes, the changed content will not included in the output. This approach is used when the code from one jsp file required to include in multiple jsp files.


 


98       What is the difference between <jsp:forward page = … > and      response.sendRedirect(url)?


The <jsp:forward> element forwards the request object containing the client request information from one JSP file to another file. The target file can be an HTML file, another JSP file, or a servlet, as long as it is in the same application context as the forwarding JSP file.


sendRedirect sends HTTP temporary redirect response to the browser, and browser creates a new request to go the redirected page. The  response.sendRedirect kills the session variables.


 


99       Identify the advantages of JSP over Servlet


a) Embedding of Java code in HTML pages


b) Platform independence


c) Creation of database-driven Web applications


d) Server-side programming capabilities


 


Answer:  a)


 


100    Write the following code for a JSP page:


<%@ page language = “java” %>


 


<HTML>


<HEAD><TITLE>RESULT PAGE</TITLE></HEAD>


<BODY>


<%


 


PrintWriter print = request.getWriter();


print.println(“Welcome”);


 


%>


</BODY>


</HTML>


 


Suppose you access this JSP file, Find out your answer.


a) A blank page will be displayed.


b) A page with the text Welcome is displayed


c) An exception will be thrown because the implicit out object is not used


d) An exception will be thrown because PrintWriter can be used in servlets only


 


Answer, b)


 


101    What are implicit Objects available to the JSP Page?


Implicit objects are the objects available to the JSP page. These objects are created by Web container and contain information related to a particular request, page, or application. The JSP implicit objects are:


 












































Variable


Class


Description


application


javax.servlet.ServletContext


The context for the JSP page’s servlet and any Web components contained in the same application.


config


javax.servlet.ServletConfig


Initialization information for the JSP page’s servlet.


exception


java.lang.Throwable


Accessible only from an error page.


out


javax.servlet.jsp.JspWriter


The output stream.


page


java.lang.Object


The instance of the JSP page’s servlet processing the current request. Not typically used by JSP page authors.


pageContext


javax.servlet.jsp.PageContext


The context for the JSP page. Provides a single API to manage the various scoped attributes.


request


Subtype of javax.servlet.ServletRequest


The request triggering the execution of the JSP page.


response


Subtype of javax.servlet.ServletResponse


The response to be returned to the client. Not typically used by JSP page authors.


session


javax.servlet.http.HttpSession


The session object for the client.


 


102    What are all the different scope values for the <jsp:useBean> tag?


<jsp:useBean> tag is used to use any java object in the jsp page. Here are the scope values for <jsp:useBean> tag:


page, request, session and application


 


103    What is JSP Output Comments?


JSP Output Comments are the comments that can be viewed in the HTML source file.



Example
(Will be outputted into the html source code)
<!– This file displays the user login screen –>
and 
<!– This page was loaded on
<%= (new java.util.Date()).toLocaleString() %> –>


 


The following comments can not be viewed in html, so the servlet container ignores it.


<%–


 


<jsp:setProperty name=”user” property=”*” />


<jsp:setProperty name=”user” property=”modDate”


  value=”<%= new java.util.Date(  ) %>” />


<% boolean isValid = user.isValid(  ); %>


 


–%>


 


104    What types of comments are available in the JSP?


104There are two types of comments are allowed in the JSP. These are hidden and output comments. A hidden comments does not appear in the generated output in the html, while output comments appear in the generated output.


 


Example of hidden comment


<%– This is hidden comment –%>


Example of output comment


<!– This is output comment –>


 


 


105    What is expression in JSP?


Expression tag is used to insert Java values directly into the output. Syntax for the Expression tag is:


<%= expression %>


An expression tag contains a scripting language expression that is evaluated, converted to a String, and inserted where the expression appears in the JSP file. The following expression tag displays time on the output:


<%=new java.util.Date()%>


 


106    What is JSP declaration?


106JSP declarations are the JSP tags used to declare variables. Declaratives are enclosed in the <%! %> tag and ends in semi-colon. You declare variables and functions in the declaration tag and can use anywhere in the JSP. Here is the example of declaratives:


 


 


<%@page contentType=”text/html” %>


//JSP directive


 


<html>


<body>


<%!


int cnt=0;


private int getCount(){


//increment cnt and return the value


cnt++;


return cnt;


}


%>


//JSP declaration


 


<p>Values of Cnt are:</p>


 


<p><%=getCount()%></p>


//JSP expression


 


</body>


</html>


 


107    What is JSP Scriptlet?


JSP Scriptlet is jsp tag which is used to enclose java code in the JSP pages. Scriptlets begins with <% tag and ends with %> tag. Java code written inside scriptlet executes every time the JSP is invoked.


Example:


  <%


       //java codes


       String userName = null;


       userName = request.getParameter(“userName”);


   %>


    


108    What are the life-cycle methods of JSP?


Life-cycle methods of the JSP are,


1.1          jspInit(), The container calls the jspInit() to initialize the servlet instance. It is called before any other method, and is called only once for a servlet instance.


1.2          jspService(), The container calls the _jspservice() for each request and it passes the request and the response objects. _jspService() method cann’t be overridden.


1.3          jspDestroy(), The container calls this when its instance is about to destroyed. The jspInit() and jspDestroy() methods can be overridden within a JSP page.


 


109    What are JSP Custom tags?


JSP Custom tags are user defined JSP language element. JSP custom tags are user defined tags that can encapsulate common functionality. For example you can write your own tag to access the database and performing database operations. You can also write custom tag for encapsulate both simple and complex behaviors in an easy to use syntax and greatly simplify the readability of JSP pages.


 


110    What is JSP?


110JavaServer Pages (JSP) technology is the Java platform technology for delivering dynamic content to web clients in a portable, secure and well-defined way. The JavaServer Pages specification extends the Java Servlet API to provide web application developers.


 


111    What is the role of JSP in MVC Model?


111JSP is mostly used to develop the user interface, It plays are role of View in the MVC Model.


 


112    What do you understand by context initialization parameters?


The context-param element contains the declaration of a web application’s servlet context initialization parameters.


 


<context-param>


    <param-name>name</param-name>


    <param-value>value</param-value>


</context-param>


 


The Context Parameters page lets you manage parameters that are accessed through the ServletContext.getInitParameterNames and ServletContext.getInitParameter methods.


 


113    Can you extend JSP technology?


113JSP technology lets the programmer to extend the jsp to make the programming more easier. JSP can be extended and custom actions and tag libraries can be developed.


 


114    What do you understand by JSP translation?


JSP translators generate standard Java code for a JSP page implementation class. This class is essentially a servlet class wrapped with features for JSP functionality.


 


115    What you can stop the browser to cash your page?


Instead of deleting a cache, you can force the browser not to catch the page.


<%


response.setHeader(“pragma”,”no-cache”);//HTTP 1.1


response.setHeader(“Cache-Control”,”no-cache”);


response.setHeader(“Cache-Control”,”no-store”);


response.addDateHeader(“Expires”, -1);


response.setDateHeader(“max-age”, 0);


//response.setIntHeader (“Expires”, -1); //prevents caching at the proxy server


response.addHeader(“cache-Control”, “private”);


%>


put the above code in your page.


 


116    What will you handle the runtime exception in your jsp page?


The errorPage attribute of the page directive can be used to catch run-time exceptions automatically and then forwarded to an error processing page.


 


For example,


<%@ page errorPage=”customerror.jsp” %>


above code forwards the request to “customerror.jsp” page if an uncaught exception is encountered during request processing. Within “customerror.jsp”, you must indicate that it is an error-processing page, via the directive: <%@ page isErrorPage=”true” %>.


 


117    What is J2EE?


J2EE Stands for Java 2 Enterprise Edition. J2EE is an environment for developing and deploying enterprise applications. J2EE specification is defined by Sun Microsystems Inc. The J2EE platform is one of the best platform for the development and deployment of enterprise applications. The J2EE platform is consists of a set of services, application programming interfaces (APIs), and protocols, which provides the functionality necessary for developing multi-tiered, web-based applications.


 


118    What do you understand by a J2EE module?


A J2EE module is a software unit that consists of one or more J2EE components of the same container type along with one deployment descriptor of that type. J2EE specification defines four types of modules:


a) EJB


b) Web


c) Application client and


d) Resource adapter


  


In the J2EE applications modules can be deployed as stand-alone units. Modules can also be assembled into J2EE applications.


 


119    Tell me something about J2EE component?


J2EE component is a self-contained functional software unit supported by a container and configurable at deployment time. The J2EE specification defines the following J2EE components,


119.1   Application clients and applets are components that run on the client.


119.2   Java servlet and JavaServer Pages (JSP) technology components are Web components that run on the server.


119.3   Enterprise JavaBeans (EJB) components (enterprise beans) are business components that run on the server. J2EE components are written in the Java programming language and are compiled in the same way as any program in the language. The difference between J2EE components and “standard” Java classes is that J2EE components are assembled into a J2EE application, verified to be well formed and in compliance with the J2EE specification, and deployed to production, where they are run and managed by the J2EE server or client container.


 


120    What are the contents of web module?


120A web module may contain:


120.1   JSP files


120.2   Java classes


120.3   gif and html files and


120.4   web component deployment descriptors


 


121    Differentiate between .ear,  .jar and .war files.


These files are simply zipped file using java jar tool. These files are created for different purposes. Here is the description of these files:


.jar files: These files are with the .jar extenstion. The .jar files contains the libraries, resources and accessories files like property files.


.war files: These files are with the .war extension. The war file contains the web application that can be deployed on the any servlet/jsp container. The .war file contains jsp, html, javascript and other files for necessary for the development of web applications.


.ear files: The .ear file contains the EJB modules of the application.


 


122    What is the difference between Session Bean and Entity Bean?


Session is one of the EJBs and it represents a single client inside the Application Server. Stateless session is easy to develop and its efficient. As compare to entity beans session beans require few server resources.


 


A session bean is similar to an interactive session and is not shared; it can have only one client, in the same way that an interactive session can have only one user. A session bean is not persistent and it is destroyed once the session terminates.


 


An entity bean represents persistent global data from the database. Entity beans data are stored into database.


 


123    Why J2EE is suitable for the development distributed multi-tiered enterprise applications?


The J2EE platform consists of multi-tiered distributed application model. J2EE applications allows the developers to design and implement the business logic into components according to business requirement. J2EE architecture allows the development of multi-tired applications and the developed applications can be installed on different machines depending on the tier in the multi-tiered J2EE environment . The J2EE application parts are:


 


123.1   Client-tier components run on the client machine.


123.2   Web-tier components run on the J2EE server.


123.3   Business-tier components run on the J2EE server and the


123.4   Enterprise information system (EIS)-tier software runs on the EIS servers


 


124    Why do understand by a container?


Normally, thin-client multi-tiered applications are hard to write because they involve many lines of intricate code to handle transaction and state management, multithreading, resource pooling, and other complex low-level details. The component-based and platform-independent J2EE architecture makes J2EE applications easy to write because business logic is organized into reusable components. In addition, the J2EE server provides underlying services in the form of a container for every component type. Because you do not have to develop these services yourself, you are free to concentrate on solving the business problem at hand.


 


In short containers are the interface between a component and the low-level platform specific functionality that supports the component. The application like Web, enterprise bean, or application client component must be assembled and deployed on the J2EE container before executing.


 


125    What are the services provided by a container?


The services provided by container are as follows:


125.1   Transaction management for the bean


125.2   Security for the bean


125.3   Persistence of the bean


125.4   Remote access to the bean


125.5   Lifecycle management of the bean


125.6   Database-connection pooling


125.7   Instance pooling for the bean


   


126    What are types of J2EE clients?


J2EE clients are the software that accesses the services components installed on the J2EE container. Following are the J2EE clients:


a) Applets


b) Java-Web Start clients


c) Wireless clients


d) Web applications


  


127    What is Deployment Descriptor?


A deployment descriptor is simply an XML(Extensible Markup Language) file with the extension of .xml. Deployment descriptor describes the component deployment settings. Application servers reads the deployment descriptor to deploy the components contained in the deployment unit. For example ejb-jar.xml file is used to describe the setting of the EJBs.


 


128    What do you understand by JTA and JTS?


JTA stands for Java Transaction API and JTS stands for Java Transaction Service. JTA provides a standard interface which allows the developers to demarcate transactions in a manner that is independent of the transaction manager implementation. The J2EE SDK uses the JTA transaction manager to implement the transaction. The code developed by developers does not call the JTS methods directly, but only invokes the JTA methods. Then JTA internally invokes the JTS routines. JTA is a high level transaction interface used by the application code to control the transaction.


 


129    What is the difference between JTS and JTA?


In any J2EE application transaction management is one of the most crucial requirements of the application. Given the complexity of today’s business requirements, transaction processing occupies one of the most complex segments of enterprise level distributed applications to build, deploy and maintain.  JTS specifies the implementation of a Java transaction manager. JTS specifies the implementation of a Transaction Manager which supports the Java Transaction API (JTA) 1.0 This transaction manager supports the JTA, using which application servers can be built to support transactional Java applications. Internally the JTS implements the Java mapping of the OMG OTS 1.1 specifications. The Java mapping is specified in two packages: org.omg.CosTransactions and org.omg.CosTSPortability. The JTS thus provides a new architecture for transactional application servers and applications, while complying to the OMG OTS 1.1 interfaces internally. This allows the JTA compliant applications to interoperate with other OTS 1.1 complaint applications through the standard IIOP. Java-based applications and Java-based application servers access transaction management functionality via the JTA interfaces. The JTA interacts with a transaction management implementation via JTS. Similarly, the JTS can access resources via the JTA XA interfaces or can access OTS-enabled non-XA resources. JTS implementations can interoperate via CORBA OTS interfaces.


 


The JTA specifies an architecture for building transactional application servers and defines a set of interfaces for various components of this architecture. The components are: the application, resource managers, and the application server. The JTA specifies standard interfaces for Java-based applications and application servers to interact with transactions, transaction managers, and resource managers JTA transaction management provides a set of interfaces utilized by an application server to manage the beginning and completion of transactions. Transaction synchronization and propagation services are also provided under the domain of transaction management.


 


In the Java transaction model, the Java application components can conduct transactional operations on JTA compliant resources via the JTS. The JTS acts as a layer over the OTS. The applications can therefore initiate global transactions to include other OTS transaction managers, or participate in global transactions initiated by other OTS compliant transaction managers.


 


130    What is JAXP?


The Java API for XML Processing (JAXP) enables applications to parse and transform XML documents independent of a particular XML processing implementation. JAXP or Java API for XML Parsing is an optional API provided by Javasoft. It provides basic functionality for reading, manipulating, and generating XML documents through pure Java APIs. It is a thin and lightweight API that provides a standard way to seamlessly integrate any XML-compliant parser with a Java application.


 


131    What is J2EE Connector architecture?


131J2EE Connector Architecture (JCA) is a Java-based technology solution for connecting application servers and enterprise information systems (EIS) as part of enterprise application integration (EAI) solutions. While JDBC is specifically used to connect Java EE applications to databases, JCA is a more generic architecture for connection to legacy systems (including databases). JCA was developed under the Java Community Process as JSR 16 (JCA 1.0) and JSR 112 (JCA 1.5). As of 2006, the current version of JCA is version 1.5. The J2EE Connector API is used by J2EE tools developers and system integrators to create resource adapters.


 


132    What is difference between Java Bean and Enterprise Java Bean?


Java Bean as is a plain java class with member variables and getter setter methods. Java Beans are defined under JavaBeans specification as Java-Based software component model which includes the features like introspection, customization, events, properties and  persistence.


Enterprise JavaBeans or EJBs for short are Java-based software components that comply with Java’s EJB specification. EJBs are delpoyed on the EJB container and executes in the EJB container. EJB is not that simple, it is used for building distributed applications. Examples of EJB are Session Bean, Entity Bean and Message Driven Bean. EJB is used for server side programming whereas java bean is a client side. Bean is only development but the EJB is developed and then deploy on EJB Container.


 


133    Can Entity Beans have no create() methods?


Entity Beans can have no create() methods. Entity Beans have no create() method, when entity bean is not used to store the data in the database. In this case entity bean is used to retrieve the data from database.


 


134    What are the call back methods in Session bean?


Callback methods are called by the container to notify the important events to the beans in its life cycle. The callback methods are defined in the javax.ejb.EntityBean interface. The callback methods example are ejbCreate(), ejbPassivate() and ejbActivate().


  


135    What is bean managed transaction?


In EJB transactions can be maintained by the container or developer can write own code to maintain the transaction. If a developer doesn want a Container to manage transactions, developer can write own code to maintain the database transaction.


 


136    What are transaction isolation levels in EJB?


There are four levels of transaction isolation are:


* Uncommitted Read


* Committed Read


* Repeatable Read


* Serializable


 


The four transaction isolation levels and the corresponding behaviors are described below,


 





























Isolation Level


Dirty Read


Non-Repeatable Read


Phantom Read


Read Uncommitted


Possible


Possible


Possible


Read Committed


Not possible


Possible


Possible


Repeatable Read


Not possible


Not possible


Possible


Serializable


Not possible


Not possible


Not possible


 


137    Can a private method of a superclass be declared within a subclass?


Sure. A private field or method or inner class belongs to its declared class and hides from its subclasses. There is no way for private stuff to have a runtime overloading or overriding (polymorphism) features.


 


138    Why Java does not support multiple inheritence ?


Java does support multiple inheritance via interface implementation.


 


139    What is the difference between final, finally and finalize?


139.1   final – declare constant


139.2   finally – handles exception


139.3   finalize – helps in garbage collection


 


140    Where and how can you use a private constructor.


Private constructor can be used if you do not want any other class to instanstiate the object , the instantiation is done from a static public method, this method is used when dealing with the factory method pattern when the designer wants only one controller (fatory method ) to create the object.


 


141    In System.out.println(),what is System,out and println,pls explain?


System is a predefined final class,out is a PrintStream object and println is a built-in overloaded method in the out object.


 


142    What is meant by “Abstract Interface”?


First, an interface is abstract. That means you cannot have any implementation in an interface. All the methods declared in an interface are abstract methods or signatures of the methods.


 


143    Can you make an instance of an abstract class? For example – java.util.Calender is an abstract class with a method getInstance() which returns an instance of the Calender class.


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.


 


144    What is the output of x<y? a:b = p*q when x=1,y=2,p=3,q=4?


When this kind of question has been asked, find the problems you think is necessary to ask before you give an answer. Ask if variables a and b have been declared or initialized. If the answer is yes. You can say that the syntax is wrong. If the statement is rewritten as: x<y? a:(b=p*q); the return value would be variable a because the x is 1 and less than y = 2; the x < y statement return true and variable a is returned.


 


145    What is the difference between Swing and AWT components?


AWT components are heavy-weight, whereas Swing components are lightweight. Heavy weight components depend on the local windowing toolkit. For example, java.awt.Button is a heavy weight component, when it is running on the Java platform for Unix platform, it maps to a real Motif button.


 


146    Why does Java not support pointers?


Because pointers are unsafe. Java uses reference types to hide pointers and programmers feel easier to deal with reference types without pointers. This is why Java and C# shine.


 


147    Parsers? DOM vs SAX parser


Parsers are fundamental xml components, a bridge between XML documents and applications that process that XML. The parser is responsible for handling xml syntax, checking the contents of the document against constraints established in a DTD or Schema.


 


148    What is a platform?


A platform is the hardware or software environment in which a program runs. Most platforms can be described as a combination of the operating system and hardware, like Windows 2000/XP, Linux, Solaris, and MacOS.


 


149    What is the main difference between Java platform and other platforms?


The Java platform differs from most other platforms in that it’s a software-only platform that runs on top of other hardware-based platforms. The Java platform has two components:


 


149.1   The Java Virtual Machine (Java VM)


149.2   The Java Application Programming Interface (Java API)


 


150    What is the Java Virtual Machine?


The Java Virtual Machine is a software that can be ported onto various hardware-based platforms.


 


It is used to explain the java class codes and run in the OS.


 


151    What is the Java API?


The Java API is a large collection of ready-made software components that provide many useful capabilities, such as graphical user interface (GUI) widgets.


 


152    What is the package?


The package is a Java namespace or part of Java libraries. The Java API is grouped into libraries of related classes and interfaces; these libraries are known as packages.


 


153    What is native code?


The native code is code that after you compile it, the compiled code runs on a specific hardware platform.


 


154    Is Java code slower than native code? 


Not really. As a platform-independent environment, the Java platform can be a bit slower than native code. However, smart compilers, well-tuned interpreters, and just-in-time bytecode compilers can bring performance close to that of native code without threatening portability.


 


155    What is the serialization?


The serialization is a kind of mechanism that makes a class or a bean persistence by having its properties or fields and state information saved and restored to and from storage.


 


156    How to make a class or a bean serializable?


By implementing either the java.io.Serializable interface, or the java.io.Externalizable interface. As long as one class in a class’s inheritance hierarchy implements Serializable or Externalizable, that class is serializable.


 


157    How many methods in the Serializable interface?


There is no method in the Serializable interface. The Serializable interface acts as a marker, telling the object serialization tools that your class is serializable.


 


158    How many methods in the Externalizable interface?


There are two methods in the Externalizable interface. You have to implement these two methods in order to make your class externalizable. These two methods are readExternal() and writeExternal().


 


159    What is the difference between Serializable and Externalizable interface?


When you use Serializable interface, your class is serialized automatically by default. But you can override writeObject() and readObject() two methods to control more complex object serailization process. When you use Externalizable interface, you have a complete control over your class’s serialization process.


 


160    What is a transient variable?


A transient variable is a variable that may not be serialized. If you don’t want some field to be serialized, you can mark that field transient or static.


 


161    Which containers use a border layout as their default layout?


The Window, Frame and Dialog classes use a border layout as their default layout.


 


162    How are Observer and Observable used?


Objects that subclass the Observable class maintain a list of observers. When an Observable object is updated it invokes the update() method of each of its observers to notify the observers that it has changed state. The Observer interface is implemented by objects that observe Observable objects.


 


163    What is synchronization and why is it important?


With respect to multithreading, synchronization is the capability to control the access of multiple threads to shared resources. Without synchronization, it is possible for one thread to modify a shared object while another thread is in the process of using or updating that object’s value. This often causes dirty data and leads to significant errors.


 


164    What are synchronized methods and synchronized statements?


Synchronized methods are methods that are used to control access to an object. A thread only executes a synchronized method after it has acquired the lock for the method’s object or class. Synchronized statements are similar to synchronized methods. A synchronized statement can only be executed after a thread has acquired the lock for the object or class referenced in the synchronized statement.


 


165    How are Observer and Observable used?


Objects that subclass the Observable class maintain a list of observers. When an Observable object is updated it invokes the update() method of each of its observers to notify the observers that it has changed state. The Observer interface is implemented by objects that observe Observable objects


 


166    What are three ways in which a thread can enter the waiting state?


A thread can enter the waiting state by invoking its sleep() method, by blocking on I/O, by unsuccessfully attempting to acquire an object’s lock, or by invoking an object’s wait() method. It can also enter the waiting state by invoking its (deprecated) suspend() method.


 


167    Can a lock be acquired on a class?


Yes, a lock can be acquired on a class. This lock is acquired on the class’s Class object.


 


168    What’s new with the stop(), suspend() and resume() methods in JDK 1.2?


The stop(), suspend() and resume() methods have been deprecated in JDK 1.2.


 


169    What is the preferred size of a component?


The preferred size of a component is the minimum component size that will allow the component to display normally.


 


170    Which containers use a FlowLayout as their default layout?


The Panel and Applet classes use the FlowLayout as their default layout.


 


171    What is thread?


171A thread is an independent path of execution in a system.


 


172    What is multithreading?


Multithreading means various threads that run in a system.


 


173    How does multithreading take place on a computer with a single CPU?


The operating system’s task scheduler allocates execution time to multiple tasks. By quickly switching between executing tasks, it creates the impression that tasks execute sequentially.


 


174    How to create multithread in a program?


You have two ways to do so. First, making your class “extends” Thread class. Second, making your class “implements” Runnable interface. Put jobs in a run() method and call start() method to start the thread.


 


175    Can Java object be locked down for exclusive use by a given thread?


Yes. You can lock an object by putting it in a “synchronized” block. The locked object is inaccessible to any thread other than the one that explicitly claimed it.


 


176    Can each Java object keep track of all the threads that want to exclusively access to it?


Yes, the methods in Object wait and notify are used to access the synchronized objects.


  


177    What state does a thread enter when it terminates its processing?


When a thread terminates its processing, it enters the dead state.


 


178    What invokes a thread’s run() method?


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.


 


179    What is the purpose of the wait(), notify(), and notifyAll() methods?


The wait(), notify(), and notifyAll() methods are used to provide an efficient way for threads to communicate each other.


 


180    What are the high-level thread states?


The high-level thread states are ready, running, waiting, and dead.


 


181    What is the Collections API?


The Collections API is a set of classes and interfaces that support operations on collections of objects.


 


182    What is the List interface?


The List interface provides support for ordered collections of objects.


 


183    What is the Vector class?


The Vector class provides the capability to implement a growable array of objects


 


184    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.


 


185    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.


 


186    What is an Iterator interface?


The Iterator interface is used to step through the elements of a Collection.


 


187    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.


 


188    What is the difference between yielding and sleeping?


When a task invokes its yield() method, it returns to the ready state. When a task invokes its sleep() method, it returns to the waiting state.


 


189    Is sizeof a keyword?


The sizeof operator is not a keyword. It is a just operator.


 


190    What are wrapped classes?


Wrapped classes are classes that allow primitive types to be accessed as objects.


 


191    Does garbage collection guarantee that a program will not run out of memory?


No, it doesn’t. 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.


 


192    What is the difference between preemptive scheduling and time slicing?


Under preemptive scheduling, the highest priority task executes until it enters the waiting or dead states or a higher priority task comes into existence. Under time slicing, a task executes for a predefined slice of time and then reenters the pool of ready tasks. The scheduler then determines which task should execute next, based on priority and other factors.


 


193    Name Component subclasses that support painting.


The Canvas, Frame, Panel, and Applet classes support painting.


 


194    What is a native method?


A native method is a method that is implemented in a language other than Java.


 


195    How can you write a loop indefinitely?


for($$)–for loop; while(true)–always true, etc.


 


196    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.


 


197    What is the purpose of finalization?


The purpose of finalization is to give an unreachable object the opportunity to perform any cleanup processing before the object is garbage collected.


 


198    Which class is the superclass for every class?


Object.


 


199    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.


Operator & has no chance to skip both sides evaluation and && operator does. If asked why, give details as above.


 


200    What is the GregorianCalendar class?


The GregorianCalendar provides support for traditional Western calendars.


 


201    What is the SimpleTimeZone class?


The SimpleTimeZone class provides support for a Gregorian calendar.


 


202    Which Container method is used to cause a container to be laid out and redisplayed?


invalidate();


 


203    What is the Properties class?


The properties class is a subclass of Hashtable that can be read from or written to a stream. It also provides the capability to specify a set of default values to be used.


 


204    What is the purpose of the Runtime class?


The purpose of the Runtime class is to provide access to the Java runtime system.


 


205    What is the purpose of the System class?


The purpose of the System class is to provide access to system resources.


 


206    Which package has light weight components?


javax.Swing package. All components in Swing, except JApplet, JDialog, JFrame and JWindow are lightweight components.


 


207    What are peerless components?


The peerless components are called light weight components.


 


208    What is the difference between the Font and FontMetrics classes?


The FontMetrics class is used to define implementation-specific properties, such as ascent and descent, of a Font object.


 


209    What happens when a thread cannot acquire a lock on an object?


If a thread attempts to execute a synchronized method or synchronized statement and is unable to acquire an object’s lock, it enters the waiting state until the lock becomes available.


 


210    What is the difference between the Reader/Writer class hierarchy and the InputStream/OutputStream class hierarchy?


The Reader/Writer class hierarchy is character-oriented, and the InputStream/OutputStream class hierarchy is byte-oriented.


 


211    What classes of exceptions may be caught by a catch clause?


A catch clause can catch any exception that may be assigned to the Throwable type. This includes the Error and Exception types


 


212    What is the difference between throw and throws keywords?


The throw keyword denotes a statement that causes an exception to be initiated. It takes the Exception object to be thrown as argument. The exception will be caught by an immediately encompassing try-catch construction or propagated further up the calling hierarchy. The throws keyword is a modifier of a method that designates that exceptions may come out of the mehtod, either by virtue of the method throwing the exception itself or because it fails to catch such exceptions that a method it calls may throw.



213    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 friendly access. This means that the class can only be accessed by other classes and interfaces that are defined within the same package.


 


214    What is the Map interface?


The Map interface replaces the JDK 1.1 Dictionary class and is used associate keys with values.


 


215    Does a class inherit the constructors of its superclass?


A class does not inherit constructors from any of its superclasses.


 


216    Name primitive Java types.


The primitive types are byte, char, short, int, long, float, double, and boolean.


 


217    What is the purpose of the finally clause of a try-catch-finally statement?


The finally clause is used to provide the capability to execute code no matter whether or not an exception is thrown or caught.


 


218    What is the Locale class?


The Locale class is used to tailor program output to the conventions of a particular geographic, political, or cultural region The Locale class is used to tailor program output to the conventions of a particular geographic, political, or cultural region


 


219    What must a class do to implement an interface?


It must provide all of the methods in the interface and identify the interface in its implements clause.


 


220    What is an abstract method?


An abstract method is a method whose implementation is deferred to a subclass. Or, a method that has no implementation (an interface of a method).


 


221    What is a static method?


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.


 


222    What is a protected method?


A protected method is a method that can be accessed by any method in its package and inherited by any subclass of its class.


 


223    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.


 


224    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.


 


225    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.


 


226    What is the difference between a Window and a Frame?


The Frame class extends Window to define a main application window that can have a menu bar.


227    What do heavy weight components mean?


Heavy weight components like Abstract Window Toolkit (AWT), depend on the local windowing toolkit. For example, java.awt.Button is a heavy weight component, when it is running on the Java platform for Unix platform, it maps to a real Motif button. In this relationship, the Motif button is called the peer to the java.awt.Button. If you create two Buttons, two peers and hence two Motif Buttons are also created. The Java platform communicates with the Motif Buttons using the Java Native Interface. For each and every component added to the application, there is an additional overhead tied to the local windowing system, which is why these components are called heavy weight.


 


228    Which class should you use to obtain design information about an object?


The Class class is used to obtain information about an object’s design.


 


229    How can a GUI component handle its own events?


A component can handle its own events by implementing the required event-listener interface and adding itself as its own event listener.


 


230    How are the elements of a GridBagLayout organized?


The elements of a GridBagLayout are organized according to a grid. However, the elements are of different sizes and may occupy more than one row or column of the grid. In addition, the rows and columns may have different sizes.


 


231    What advantage do Java’s layout managers provide over traditional windowing systems?


Java uses layout managers to lay out components in a consistent manner across all windowing platforms. Since Java’s layout managers aren’t tied to absolute sizing and positioning, they are able to accommodate platform-specific differences among windowing systems.


 


232    What are the problems faced by Java programmers who don’t use layout managers?


Without layout managers, Java programmers are faced with determining how their GUI will be displayed across multiple windowing systems and finding a common sizing and positioning that will work within the constraints imposed by each windowing system.


 


233    What is the difference between static and non-static variables?


A static variable is associated with the class as a whole rather than with specific instances of a class. Non-static variables take on unique values with each object instance.


 


234    What is the difference between the paint() and repaint() methods?


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.


 


235    What is the purpose of the File class?


The File class is used to create objects that provide access to the files and directories of a local file system.


 


236    What restrictions are placed on method overloading?


Two methods may not have the same name and argument list but different return types.


 


237    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.


 


The overridden methods can decrease the visibility of the methods. The overridden methods can increase the thrown exceptions.


 


238    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.


 


239    Name Container classes.


Window, Frame, Dialog, FileDialog, Panel, Applet, or ScrollPane


 


240    What class allows you to read objects directly from a stream?


The ObjectInputStream class supports the reading of objects from input streams.


 


241    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.


 


242    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. It is possible for two String objects to have the same value, but located indifferent areas of memory.


 


243    What is the Set interface?


The Set interface provides methods for accessing the elements of a finite mathematical set. Sets do not allow duplicate elements.


 


244    What is the List interface?


The List interface provides support for ordered collections of objects.


 


245    What is the purpose of the enableEvents() method?


The enableEvents() method is used to enable an event for a particular object. Normally, an event is enabled when a listener is added to an object for a particular event. The enableEvents() method is used by objects that handle events by overriding their event-dispatch methods.


 


The method enableEvents() is in the Component class in AWT.


 


246    What is the difference between the File and RandomAccessFile classes?


The File class encapsulates the files and directories of the local file system. The RandomAccessFile class provides the methods needed to directly access data contained in any part of a file.


 


247    What interface must an object implement before it can be written to a stream as an object?


An object must implement the Serializable or Externalizable interface before it can be written to a stream as an object.


 


248    What is the ResourceBundle class?


The ResourceBundle class is used to store locale-specific resources that can be loaded by a program to tailor the program’s appearance to the particular locale in which it is being run.


 


249    What is the difference between a Scrollbar and a ScrollPane?


A Scrollbar is a Component, but not a Container. A ScrollPane is a Container. A ScrollPane handles its own events and performs its own scrolling.


 


250    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.


 


251    What are the Object and Class classes used for?


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.


 


252    What is Serialization and deserialization?


Serialization is the process of writing the state of an object to a byte stream. Deserialization is the process of restoring these objects.


 


253    Does the code in finally block get executed if there is an exception and a return statement in a catch block?


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(1) statement is executed earlier or the system shut down earlier or the memory is used up earlier before the thread goes to finally block.


 


254    How you restrict a user to cut and paste from the html page?


Using javaScript to lock keyboard keys. It is one of solutions.


 


255    Is Java a super set of JavaScript?


No. They are completely different. Some syntax may be similar.


 


256    What is a Container in a GUI?


A Container contains and arranges other components (including other containers) through the use of layout managers, which use specific layout policies to determine where components should go as a function of the size of the container.


 


257    How the object oriented approach helps us keep complexity of software development under control?


We can discuss such issue from the following aspects (Encapsulation, Inheritance and Porlymorphysm),


 


257.1   Objects allow procedures to be encapsulated with their data to reduce potential interference.


 


257.2   Inheritance allows well-tested procedures to be reused and enables changes to make once and have effect in all relevant places.


 


257.3   The well-defined separations of interface and implementation allows constraints to be imposed on inheriting classes while still allowing the flexibility of overriding and overloading.


 


258    What is polymorphism?


Polymorphism allows methods to be written that needn’t be concerned about the specifics of the objects they will be applied to. That is, the method can be specified at a higher level of abstraction and can be counted on to work even on objects of yet unconceived classes.


 


259    What is design by contract?


The design by contract specifies the obligations of a method to any other methods that may use its services and also theirs to it. For example, the preconditions specify what the method required to be true when the method is called. Hence making sure that preconditions are. Similarly, postconditions specify what must be true when the method is finished, thus the called method has the responsibility of satisfying the post conditions.


 


In Java, the exception handling facilities support the use of design by contract, especially in the case of checked exceptions. The assert keyword can be used to make such contracts.


 


260    What are use cases?


A use case describes a situation that a program might encounter and what behavior the program should exhibit in that circumstance. It is part of the analysis of a program. The collection of use cases should, ideally, anticipate all the standard circumstances and many of the extraordinary circumstances possible so that the program will be robust.


 


261    What is the difference between interface and abstract class?


261.1   interface contains methods that must be abstract; abstract class may contain concrete methods.


261.2   interface contains variables that must be static and final; abstract class may contain non-final and final variables.


261.3   members in an interface are public by default, abstract class may contain non-public members.


261.4   interface is used to “implements”; whereas abstract class is used to “extends”.


261.5   interface can be used to achieve multiple inheritance; abstract class can be used as a single inheritance.


261.6   interface can “extends” another interface, abstract class can “extends” another class and “implements” multiple interfaces.


261.7   interface is absolutely abstract; abstract class can be invoked if a main() exists.


261.8   interface is more flexible than abstract class because one class can only “extends” one super class, but “implements” multiple interfaces.


261.9   If given a choice, use interface instead of abstract class.


 


262    What is HTTPSession Class?


HttpSession Class provides a way to identify a user across across multiple request. The servlet container uses HttpSession interface to create a session between an HTTP client and an HTTP server. The session lives only for a specified time period, across more than one connection or page request from the user.


 


263    Why do u use Session Tracking in HttpServlet?


In HttpServlet you can use Session Tracking to track the user state. Session is required if you are developing shopping cart application or in any e-commerce application.


 


264    What are the advantage of Cookies over URL rewriting?


Sessions tracking using Cookies are more secure and fast. Session tracking using Cookies can also be used with other mechanism of Session Tracking like url rewriting.


 


Cookies are stored at client side so some clients may disable cookies so we may not sure that the cookies may work or not.


 


In url  rewriting requites large data transfer from and to the server. So, it leads to network traffic and access may be become slow.


 


265    What is Session Migration?


Session Migration is a mechanism of moving the session from one server to another in case of server failure. Session Migration can be implemented by:


265.1   Persisting the session into database


265.2   Storing the session in-memory on multiple servers.


 


266    How to track a user session in Servlets?


The interface HttpSession can be used to track the session in the Servlet. Following code can be used to create session object in the Servlet: HttpSession session = req.getSession(true);


 


267    How you can destroy the session in Servlet?


You can call invalidate() method on the session object to destroy the session. e.g. session.invalidate();


 


268    It is said that the code in a finally clause will never fail to execute, Is there any example where it fails to execute?


Here is the example code where the finally clause code will not execute.


 





  public class testFinally{
 
        public static void main(String[] args){
               System.out.println(“Executing the program”);
                 try {
                       System.out.println(“In the try block”);
                       System.exit(1);
                        } finally {
                       System.out.println(“In the finally.”);
 
                     }
             }
     }
             

 


269    Why there are no global variables in Java?


Global variables are globally accessible. Java does not support globally accessible variables due to following reasons:


 


269.1   The global variables breaks the referential transparency


269.2   Global variables creates collisions in namespace.


 


270    What platforms is the Java-technology software available on?


Sun provides ports of the Java 2 Platform for Windows 95, Windows 98, Windows NT, Windows 2000, Solaris-SPARC, Solaris-Intel, and Linux.


 


271    Where can I download latest version of Java?


Latest version of JDK can be downloaded from Sun web site http://www.java.sun.com.


 


272    Do I need to know C++ to learn Java?


No, you don’t need to know C or C++ to learn Java. Java is much simpler that C++.


 


273    What is the difference between Java and Java Script?


In Java and Java Script only the “Java” word is common. Java is programming language from Sun. JavaScript is a programming language from Netscape, which runs in their browsers.


 


274    Differentiate between applet and application.


Java applications runs as stand-alone application whereas applet runs in web browser. Application is a Java class that has a main() method. Applet class extends java.applet.Applet class.


   


275    How to convert String to Number in java program?


The valueOf() function of Integer class is is used to convert string to Number. Here is the code example:


 


String strId = “10”;


int id=Integer.valueOf(strId);


 


276    What is interface?


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:


public interface sampleInterface {


    public void functionOne();


 


    public long CONSTANT_ONE = 1000;


}


 


277    How you can force the garbage collection?


Garbage collection automatic process and can’t be forced.


 


278    What is the use of Object and Class Classes?


The Object class is the superclass of all other classes and it is highest-level class in the Java class hierarchy. Instances of the class Class represent classes and interfaces in a running Java application. Every array also belongs to a class that is reflected as a Class object that is shared by all arrays with the same element type and number of dimensions. The primitive Java types (boolean, byte, char, short, int, long, float, and double), and the keyword void are also represented as Class objects.


 


279    What do you understand by a variable?


The variables plays very important role in computer programming. Variables enable programmers to write flexible programs. It is a memory location that has been named so that it can be easily be referred in the program. The variable is used to hold the data and it can be changed changed during the course of the execution of the program.


 


280    What do you understand by numeric promotion?


The 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 the numerical promotion process the 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.


 


281    What do you understand by casting in java language?


The process of converting one datatype to another in Java language is called Casting.


 


282    What are the types of casting?


There are two types of casting in Java, these are Implicit casting and explicit casting.


 


283    What is Implicit casting?


Implicit casting is the process of simply assigning one entity to another without any transformation guidance to the compiler. This type of casting is not permitted in all kinds of transformations and may not workout for all application scenarios.


 


Example:


 


int i = 4000;


long h = i; //Implicit casting


 


284    What is explicit casting?


Explicit casting in the process in which the complier are specifically informed to about transforming the object.


 


long ln = 700.20;


 


t = (int) ln; //Explicit casting


 


285    What do you understand by downcasting?


The process of Downcasting refers to the casting from a general to a more specific type, i.e. casting down the hierarchy


 


286    What do you understand by final value?


FINAL for a variable: value is constant. FINAL for a method: cannot be overridden. FINAL for a class: cannot be derived


 


287    What is a Servlet?


Java Servlets are server side components that provides a powerful mechanism for developing server side of web application. Earlier CGI was developed to provide server side capabilities to the web applications. Although CGI played a major role in the explosion of the Internet, its performance, scalability and reusability issues make it less than optimal solutions. Java Servlets changes all that. Built from ground up using Sun’s write once run anywhere technology java servlets provide excellent framework for server side processing.


 


288    What are the types of Servlet?


There are two types of servlets, GenericServlet and HttpServlet. GenericServlet defines the generic or protocol independent servlet. HttpServlet is subclass of GenericServlet and provides some http specific functionality linke doGet and doPost methods.


 


289    What are the differences between HttpServlet and Generic Servlets?


HttpServlet Provides an abstract class to be subclassed to create an HTTP servlet suitable for a Web site. A subclass of HttpServlet must override at least one method, usually one of these:


 


doGet, if the servlet supports HTTP GET requests


doPost, for HTTP POST requests


doPut, for HTTP PUT requests


doDelete, for HTTP DELETE requests


init and destroy, to manage resources that are held for the life of the servlet


getServletInfo, which the servlet uses to provide information about itself


 


There’s almost no reason to override the service method. service handles standard HTTP requests by dispatching them to the handler methods for each HTTP request type (the doXXX methods listed above). Likewise, there’s almost no reason to override the doOptions and doTrace methods.


 


290    Differentiate between Servlet and Applet.


Servlets are server side components that executes on the server whereas applets are client side components and executes on the web browser. Applets have GUI interface but there is not GUI interface in case of Servlets.


 


291    Differentiate between doGet and doPost method?


doGet is used when there are requirement of sending data appended to a query string in the URL. The doGet models the GET method of Http and it is used to retrieve the info on the client from some server as a request to it. The doGet cannot be used to send too much info appended as a query stream. GET puts the form values into the URL string. GET is limited to about 256 characters (usually a browser limitation) and creates really ugly URLs.


 


POST allows you to have extremely dense forms and pass that to the server without clutter or limitation in size. e.g. you obviously can’t send a file from the client to the server via GET. POST has no limit on the amount of data you can send and because the data does not show up on the URL you can send passwords. But this does not mean that POST is truly secure. For real security you have to look into encryption which is an entirely different topic


 


292    What are methods of HttpServlet?


The methods of HttpServlet class are :


292.1   doGet() is used to handle the GET, conditional GET, and HEAD requests


292.2   doPost() is used to handle POST requests


292.3   doPut() is used to handle PUT requests


292.4   doDelete() is used to handle DELETE requests


292.5   doOptions() is used to handle the OPTIONS requests and


292.6   doTrace() is used to handle the TRACE requests


 


293    What are the advantages of Servlets over CGI programs?


Java Servlets have a number of advantages over CGI and other API’s. They are:


293.1   Platform Independence


Java Servlets are 100% pure Java, so it is platform independence. It can run on any Servlet enabled web server. For example if you develop an web application in windows machine running Java web server. You can easily run the same on apache web server (if Apache Serve is installed) without modification or compilation of code. Platform independency of servlets provide a great advantages over alternatives of servlets.


293.2   Performance


Due to interpreted nature of java, programs written in java are slow. But the java servlets runs very fast. These are due to the way servlets run on web server. For any program initialization takes significant amount of time. But in case of servlets initialization takes place very first time it receives a request and remains in memory till times out or server shut downs. After servlet is loaded, to handle a new request it simply creates a new thread and runs service method of servlet. In comparison to traditional CGI scripts which creates a new process to serve the request. This intuitive method of servlets could be use to develop high speed data driven web sites.


293.3   Extensibility


Java Servlets are developed in java which is robust, well-designed and object oriented language which can be extended or polymorphed into new objects. So the java servlets takes all these advantages and can be extended from existing class the provide the ideal solutions.


293.4   Safety


Java provides a very good safety features like memory management, exception handling etc. Servlets inherits all these features and emerged as a very powerful web server extension.


293.5   Secure


Servlets are server side components, so it inherits the security provided by the web server. Servlets are also benefited with Java Security Manager.


 


294    What are the lifecycle methods of Servlet?


The interface javax.servlet.Servlet,  defines the three life-cycle methods. These are:


public void init(ServletConfig config) throws ServletException


public void service( ServletRequest req, ServletResponse res) throws ServletException, IOException


public void destroy()


 


The container manages the lifecycle of the Servlet. When a new request come to a Servlet, the container performs the following steps.


294.1   If an instance of the servlet does not exist, the web container


294.1.1      Loads the servlet class.


294.1.2      Creates an instance of the servlet class.


294.1.3      Initializes the servlet instance by calling the init method. Initialization is covered in Initializing a Servlet.


294.2   The container invokes the service method, passing request and response objects.


294.3   To remove the servlet, container finalizes the servlet by calling the servlet’s destroy method.


 


295    What are the type of protocols supported by HttpServlet?


It extends the GenericServlet base class and provides an framework for handling the HTTP protocol. So, HttpServlet only supports HTTP and HTTPS protocol.


 


296    What are the directory Structure of Web Application?


Web component follows the standard directory structure defined in the J2EE specification.


Java Source


Web Content


—-jsp, html, css, images


—-WEB-INF


————web.xml


————lib


————classes


 


297    What is ServletContext?


ServletContext is an Interface that defines a set of methods that a servlet uses to communicate with its servlet container, for example, to get the MIME type of a file, dispatch requests, or write to a log file. There is one context per “web application” per Java Virtual Machine. (A “web application” is a collection of servlets and content installed under a specific subset of the server’s URL namespace such as /catalog and possibly installed via a .war file.)


 


298    What is meant by Pre-initialization of Servlet?


When servlet container is loaded, all the servlets defined in the web.xml file does not initialized by default. But the container receives the request it loads the servlet. But in some cases if you want your servlet to be initialized when context is loaded, you have to use a concept called pre-initialization of Servlet. In case of Pre-initialization, the servlet is loaded when context is loaded. You can specify <load-on-startup>1</load-on-startup>


in between the <servlet></servlet> tag.


 


299    What mechanisms are used by a Servlet Container to maintain session information?


Servlet Container uses Cookies, URL rewriting, and HTTPS protocol information to maintain the session.


 


300    What do you understand by servlet mapping?


Servlet mapping defines an association between a URL pattern and a servlet. You can use one servlet to process a number of url pattern (request pattern). For example in case of Struts *.do url patterns are processed by Struts Controller Servlet.


 


301    What must be implemented by all Servlets?


The Servlet Interface must be implemented by all servlets.


 


302    What are the uses of Servlets?


302.1   Servlets are used to process the client request.


302.2   A Servlet can handle multiple requests concurrently and be used to develop high performance system


302.3   A Servlet can be used to load balance among several servers, as Servlet can easily forward request.


 


303    What are the objects that are received when a servlets accepts call from client?


The objects are ServletRequest and ServletResponse . The ServeltRequest encapsulates the communication from the client to the server. While ServletResponse encapsulates the communication from the Servlet back to the client.


 


304    What are design patterns?


A pattern is a proven (and recurring) solution to a problem in a context. Each pattern describes a problem which occurs over and over again in our environment, and describes its solution to this problem in such a way that we can use this solution a lots of times. In simple words, there are a lot of common problems which a lot of developers have faced over time. These common problems ideally should have a common solution too. It is this solution when documented and used over and over becomes a design pattern.


 


305    Can we always apply the same solution to different problems at hand?


No. Design patterns would study the different problems at hand. To these problems then it would suggest different design patterns to be used. However, the type of code to be written in that design pattern is solely the discretion of the Project Manager who is handling that project.


 


306    What should be the level of detail/abstraction which should be provided by a design pattern?


Design patterns should present a higher abstraction level though it might include details of the solution. However, these details are lower abstractions and are called strategies. There may be more than one way to apply these strategies in implementing the patterns.


 


307    What are the most common problems which one faces during the application design phase that are solved by design patterns?


 


307.1   Identifying components, internal structures of the components, and relationships between components.


307.2   Determining component granularity and appropriate interactions


307.3   Defining component interfaces.


 


308    How does one decide which Design pattern to use in our application?


We need to follow these steps:


 


308.1   We need to understand the problem at hand. Break it down to finer grained problems. Each design pattern is meant to solve certain kinds of problems. This would narrow down our search for design patterns.


308.2   Read the problem statement again along with the solution which the design pattern will provide. This may instigate to change a few patterns that we are to use.


308.3   Now figure out the interrelations between different patterns. Also decide what all patterns will remain stable in the application and what all need to change (with respect to Change Requests received from the clients).


 


309    What is Refactoring?


Learning different design patterns is not sufficient to becoming a good designer. We have to understand these patterns and use them where they have more benefits. Using too many patterns (more than required) would be over-engineering and using less design patterns than required would be under-engineering. In both these scenarios we use refactoring. Refactoring is a change made to the internal structure of the software to make it easier to understand and cheaper to modify, without changing its observable behaviour.


 


310    What are Antipatterns?


Though the use of patterns fulfils our objectives in the applications; there are also several instances where several applications did not fulfill their goals. The architects of these applications too need to document these wrong decisions. This helps us in repeating these mistakes in our future applications. Such documented mistakes are called antipatterns.


 


Thus antipatterns are negative solutions which cause more problems than what they address. For ex. We might use entity beans which have fine-grained interfaces which can directly be accessed from the client side. This would result in considerable RMI and transaction management overhead. It results in poor performance and un-scalable applications.


 


311    As we do development in tiers, how do we divide patterns in tiers?


The Sun Java Center has classified the patterns in three tiers. These are:


 


Presentation tier patterns for web-component tier,


Business tier patterns for business logic (EJB) tier, and


Integration tier patterns for connection to the databases.


 


The presentation tier patterns are:


 


Intercepting filter, Front Controller, View Helper, Composite View, Service-to-Worker, and Dispatcher View.


 


The business tier patterns are:


 


Business delegate, Value Object, Session Façade, Composite Entity, Value Object Assembler, Value List Handler, and Service Locator.


 


Integration tier patterns are:


 


Data Access Object (DAO) and Service Activator.


 


312    What is Intercepting Filter pattern?


Provides a solution for pre-processing and post-processing a request. It allows us to declaratively apply filters for intercepting requests and responses. For ex. Servlet filters.


 


313    What is Front Controller pattern?


It manages and handles requests through a centralized code. This could either be through a servlet or a JSP (through a Java Bean). This Controller takes over the common processing which happens on the presentation tier. The front controller manages content retrieval, security, view management and retrieval.


 


314    What is View Helper pattern?


There generally are two parts to any application – the presentation and the business logics. The “View” is responsible for the output-view formatting whereas “Helper” component is responsible for the business logic. Helper components do content retrieval, validation and adaptation. Helper components generally use Business delegate pattern to access business classes.


 


315    What is Composite View pattern?


This pattern is used for creating aggregate presentations (views) from atomic sub-components. This architecture enables says piecing together of elementary view components which makes the presentation flexible by allowing personalization and customization.


 


316    What is Service to Worker pattern?


This is used in larger applications wherein one class is used to process the requests while the other is used to process the view part. This differentiation is done for maintainability.


 


317    What is Dispatcher View pattern?


This is similar to Service to Worker pattern except that it is used for smaller applications. In this one class is used for both request and view processing.


 


318    What is Business Delegate pattern?


This pattern is used to reduce the coupling between the presentation and business-logic tier. It provides a proxy to the façade from where one could call the business classes or DAO class. This pattern can be used with Service Locator pattern for improving performance.


 


319    What is Value Object (VO) pattern?


Value Object is a serializable object which would contain lot of atomic values. These are normal java classes which may have different constructors (to fill in the value of different data) and getter methods to get access to these data. VOs are used as a course grained call which gets lots of data in one go (this reduces remote overhead). The VO is made serializable for it to be transferred between different tiers within a single remote method invocation.


 


320    What is Session Façade pattern?


This pattern hides the complexity of business components and centralizes the workflow. It provides course-grained interfaces to the clients which reduces the remote method overhead. This pattern fits well with declarative transactions and security management.


 


321    What is Value Object Assembler pattern?


This pattern allows for composing a Value Object from different sources which could be EJBs, DAOs or Java objects.


 


322    What is Value List Handler pattern?


This pattern provides a sound solution for query execution and results processing.


 


323    What is Service Locator pattern?


It provides a solution for looking-up, creating and locating services and encapsulating their complexity. It provides a single point of control and it also improves performance.


 


324    What is Data Access Object pattern?


It provides a flexible and transparent access to the data, abstracts the data sources and hides the complexity of Data persistence layer. This pattern provides for loose coupling between business and data persistence layer.


 


325    What is EJB Command pattern?


Session Façade and EJB Command patterns are competitor patterns. It wraps business logic in command beans, decouples the client and business logic tier, and reduces the number of remote method invocations.


 


326    What is Version Number pattern?


This pattern is used for transaction and persistence and provides a solution for maintaining consistency and protects against concurrency. Every time a data is fetched from the database, it comes out with a version number which is saved in the database. Once any update is requested on the same row of the database, this version is checked. If the version is same, the update is allowed else not.


 


327    What all patterns are used to improve performance and scalability of the application?


VO, Session Façade, Business Delegate and Service Locator.


 


328    What design patterns could be used to manage security?


Single Access Point, Check point and Role patterns.


 


329    How could Java classes direct program messages to the system console, but error messages, say to a file?


The class System has a variable out that represents the standard output, and the variable err that represents the standard error device. By default, they both point at the system console. This is how the standard output could be re-directed:


 


Stream st = new FileOutputStream(“output.txt”));


System.setErr(st);


 


//System.setOut(st);


 


330    Why would you use a synchronized block vs. synchronized method?


Synchronized blocks place locks for shorter periods than synchronized methods.


 


331    Explain the usage of the keyword transient?


This keyword indicates that the value of this member variable does not have to be serialized with the object. When the class will be de-serialized, this variable will be initialized with a default value of its data type (i.e. zero for integers).


 


332    How do you know if an explicit object casting is needed?


If you assign a superclass object to a variable of a subclass’s data type, you need to do explicit casting. For example:


 


Object a; Customer b; b = (Customer) a;


 


When you assign a subclass to a variable having a supeclass type, the casting is performed automatically.


 


333    What’s the difference between the methods sleep() and wait()


The code sleep(1000); puts thread aside for exactly one second. The code wait(1000), causes a wait of up to one second. A thread could stop waiting earlier if it receives the notify() or notifyAll() call. The method wait() is defined in the class Object and the method sleep() is defined in the class Thread.The sleep does not release the object lock while wait releases object lock.


 


334    Can you write a Java class that could be used both as an applet as well as an application?


Yes. Add a main() method to the applet.


 


335    What’s the difference between constructors and other methods?


Constructors must have the same name as the class and can not return a value. They are only called once while regular methods could be called many times.


 


336    Can you call one constructor from another if a class has multiple constructors?


Yes. Use this() syntax.


 


337    Explain the usage of Java packages.


This is a way to organize files when a project consists of multiple modules. It also helps resolve naming conflicts when different packages have classes with the same names. Packages access level also allows you to protect data from being used by the non-authorized classes


 


338    If a class is located in a package, what do you need to change in the OS environment to be able to use it?


You need to add a directory or a jar file that contains the package directories to the CLASSPATH environment variable. Let’s say a class Employee belongs to a package com.xyz.hr; and is located in the file c:\dev\com\xyz\hr\Employee.java. In this case, you’d need to add c:\dev to the variable CLASSPATH. If this class contains the method main(), you could test it from a command prompt window as follows:


 


c:\>java com.xyz.hr.Employee


 


339    What order does JVM search the path for the classes?


339.1   CLASSPATH


339.2   –classpath in java command


339.3   . the current directory


 


When you use CLASSPATH and –classpath, you must set the . (current directory) manually. Or the . (current director) is not searched.


 


340    What’s the difference between J2SDK 1.5 and J2SDK 5.0?


There’s no difference, Sun Microsystems just re-branded this version.


 


341    What would you use to compare two String variables – the operator == or the method equals()?


 


I’d use the method equals() to compare the values of the Strings and the == to check if two variables point at the same instance of a String object.


 


342    Does it matter in what order catch statements for FileNotFoundException and IOExceptipon are written?


Yes, it does. The FileNoFoundException is inherited from the IOException. Exception’s subclasses have to be caught first.


 


343    Can an inner class declared inside of a method access local variables of this method?


It’s possible if these variables are final.


Because the instance of the inner class have longer life cycle than the method. In addition, the final variant is special one, which will be stored beyond the method. So final variant inside the method can be access in method inner class.


 


344    What can go wrong if you replace && with & in the following code:


String a=null; if (a!=null && a.length()>10) {…}


 


A single ampersand here would lead to a NullPointerException.


 


345    What’s the main difference between a Vector and an ArrayList?


Java Vector class is internally synchronized and ArrayList is not.


 


346    When should the method invokeLater()be used?


This method is used to ensure that Swing components are updated through the event-dispatching thread.


 


347    How can a subclass call a method or a constructor defined in a superclass?


Use the following syntax: super.myMethod(); To call a constructor of the superclass, just write super(); in the first line of the subclass’s constructor.


 


348    What’s the difference between a queue and a stack?


Stacks works by last-in-first-out rule (LIFO), while queues use the FIFO rule


 


349    You can create an abstract class that contains only abstract methods. On the other hand, you can create an interface that declares the same methods. So can you use abstract classes instead of interfaces?


Sometimes. But your class may be a descendent of another class and in this case the interface is your only option.


 


350    What comes to mind when you hear about a young generation in Java?


Garbage collection.


 


351    What comes to mind when someone mentions a shallow copy in Java?


Object cloning.


 


352    If you’re overriding the method equals() of an object, which other method you might also consider?


hashCode()


 


353    You are planning to do an indexed search in a list of objects. Which of the two Java collections should you use: ArrayList or LinkedList?


ArrayList


 


354    How would you make a copy of an entire Java object with its state?


Have this class implement Cloneable interface and call its method clone().


 


355    How can you minimize the need of garbage collection and make the memory use more effective?


Use object pooling and weak object references.


 


356    How to use the weak object reference?


If there is no strong reference to one object, the object may be reclaim or may not be relaim. Then softReference.get() can be used to get the object again if the object is not claimed.


 


import java.awt.Graphics;


import java.awt.Image;


import java.applet.Applet;


import java.lang.ref.SoftReference;


 


public class DisplayImage extends Applet {


 


        SoftReference sr = null;


 


        public void init() {


            System.out.println(“Initializing”);


        }


 


        public void paint(Graphics g) {


            Image im = (


              sr == null) ? null : (Image)(


              sr.get());


            if (im == null) {


                System.out.println(


                “Fetching image”);


                im = getImage(getCodeBase(),


                   “truck1.gif”);


                sr = new SoftReference(im);


           }


           System.out.println(“Painting”);


           g.drawImage(im, 25, 25, this);


           im = null; 


        /* Clear the strong reference to the image */


        }


 


        public void start() {


            System.out.println(“Starting”);


        }


 


        public void stop() {


            System.out.println(“Stopping”);


        }


 


}


 


357    There are two classes: A and B. The class B need to inform a class A when some important event has happened. What Java technique would you use to implement it?


If these classes are threads, I’d consider notify() or notifyAll(). For regular classes you can use the Observer interface.


 


358    What access level do you need to specify in the class declaration to ensure that only classes from the same directory can access it?


You do not need to specify any access level, and Java will use a default package access level.


 


359    Is a class a subclass of itself?


A class is a subclass of itself.


 


360    What an I/O filter?


An I/O filter is an object that reads from one stream and writes to another, usually altering the data in some way as it is passed from one stream to another.


 


361    If an object is garbage collected, can it become reachable again?


Once an object is garbage collected, it ceases to exist. It can no longer become reachable again.


 


362    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.


 


363    What is the difference between instanceof and isInstance?


instanceof is used to check to see if an object can be cast into a specified type without throwing a cast class exception. isInstance() Determines if the specified Object is assignment-compatible with the object represented by this Class. This method is the dynamic equivalent of the Java language instanceof operator. The method returns true if the specified Object argument is non-null and can be cast to the reference type represented by this Class object without raising a ClassCastException. It returns false otherwise.


 


364    What is Struts Flow?


Struts Flow is a port of Cocoon‘s Control Flow to Struts to allow complex workflow, like multi-form wizards, to be easily implemented using continuations-capable JavaScript. It provides the ability to describe the order of Web pages that have to be sent to the client, at any given point in time in an application. The code is based on a proof-of-concept Dave Johnson put together to show how the Control Flow could be extracted from Cocoon.


 


365    What is tunnelling?


Tunnelling is a route to somewhere. For example, RMI tunnelling is a way to make RMI application get through firewall. In CS world, tunnelling means a way to transfer data.


 


366    What is session hijacking?


If you application is not very secure then it is possible to get the access of system after acquiring or generating the authentication information. Session hijacking refers to the act of taking control of a user session after successfully obtaining or generating an authentication session ID. It involves an attacker using captured, brute forced or reverse-engineered session IDs to get a control of a legitimate user’s Web application session while that session is still in progress.


 


367    If a static method is synchronized, what object is used to synchronize?


The Class Object itself.


 


368    What is the usage of the parameterized type?


368.1   Validation at compile time.


368.2   Decrease the type cast.


 


369    What is the output?


public class Test {


    public static void main(String[] args) {


        loopByNum(5);


    }


 


    private static void loopByNum(int num) {


        loop:


            for  (int i = 1; i < 3; i ++) {


                for (int j = 0; j < 3; j++) {


                    if (num  == 5)


                        break loop;


                    System.out.println(“Test”);


                }   


            }


    }


}


 


Answer: No output.


 


370    GJ 程序的语法在表面上与 C++ 中的模板非常类似,但是二者之间有着本质的区别


首先,Java 语言中的泛型不能接受基本类型作为类型参数――它只能接受引用类型。这意味着可以定义 List<Integer>,但是不可以定义 List<int>


其 次,在 C++ 模板中,编译器使用提供的类型参数来扩充模板,因此,为 List<A> 生成的 C++ 代码不同于为 List<B> 生成的代码,List<A> List<B> 实际上是两个不同的类。而 Java 中的泛型则以不同的方式实现,编译器仅仅对这些类型参数进行擦除和替换。类型 ArrayList<Integer> ArrayList<String> 的对象共享相同的类,并且只存在一个 ArrayList 类。


371    What is the name of the configuration file in JSF?


faces-config.xml


 


372    If you declare the composite keys in hibernate configuration, how many classes do you really need?


One or Two.


372.1   The plain properties can be used as the composite keys.


<composite-id>


        <key-property name=”medicareNumber”/>


        <key-property name=”dependent”/>


</composite-id>


372.2   An encapsulated ID class can be used.


<composite-id class=”MedicareId” mapped=”true”>


        <key-property name=”medicareNumber”/>


        <key-property name=”dependent”/>


</composite-id>


 


373  What are new features in JDK 1.5?


373.1 泛型(Generic Java)


373.2 枚举(Enums)


373.3 可变参数(Varargs)


373.4 For-Each循环


373.5 自动装包/拆包(Autoboxing/unboxing)


 


374    What selectors can you use in CSS?


Html Selector: style=”color:red”


Class Selector: tag.Classname {property:value}


Id Selector: #IDname {property:value}


 


375    What does it mean by $, $$, $F, $A, $H, $W, $R?


$, Return the element with the specific id.


$$, Return the element with the specific CSS id.


$F, Return the value of element with the specific id.


$A, Return an array.


$H, Return an Hash.


$W, Split the string by whitespace.


$R, Return a range.


 


376    How does Prototype support Ajax?


376.1   Ajax.Request -> Ajax Response (Ajax Responders)


 


new Ajax.Request(‘/your/url’, {
  onSuccess: function(transport) {
    transport.headerJSON
  }
});


 


376.2 Ajax.Request -> Ajax.Updater -> Ajax.PeriodicalUpdater


 


Inherit from the previous one.


 


377    How does Ajax work?

function test(data) {
 // taking care of data
}
 
function handler() {
 if(this.readyState == 4 && this.status == 200) {
  // so far so good
  if(this.responseXML != null && this.responseXML.getElementById(‘test’).firstChild.data)
     // success!
   test(this.responseXML.getElementById(‘test’).firstChild.data);
  else
   test(null);
 } else if (this.readyState == 4 && this.status != 200) {
  // fetched the wrong page or network error…
  test(null);
 }
}
 
var client = new XMLHttpRequest();
client.onreadystatechange = handler;
client.open(“GET”, “test.xml”);
client.send();

 


378    What does Hibernate handle inheritance?


378.1   Table per class hierarchy <subclass> (descriminator)


378.2   Table per each class <join-subclass>


378.3   Table per concrete class with unions <union-subclass>


379    What states does Hibernate Object have?


New.


Persistent.


Detached.


 


380    What is the difference between save and update?


Save: Insert a new record.


Update: Update a detached record.


 


381    What is the difference between update and saveOrUpdate?


Update: Update a detached record.


SaveOrUpdate: Save a new record or update a detached record.


 


382    What is difference between persist and save?


Persist, the DB operation will be hanging on until the transaction is committed or flush is called.


Save, the DB operation will be executed immediately.


 


383    What is the difference between saveOrUpdateCopy, merge and saveOrUpdate?


saveOrUpdateCopy is an old version of merge.


Merge, return the non-persistent object.


With saveOrUpdate, return the persistent object.


 


384    What is the difference between lock and update?


Lock, Make a none-changed Object to persistent.


Update, make a changed Object to persistent.


 


385    What does Hibernate provide?


385.1   Component Mapping


385.1.1      A contained class which is value type.


385.2   Collection Mapping


385.2.1      One to one.


385.2.2      One to Many.


385.2.3      Many to One.


385.2.4      Many to Mang.


385.3   Inheritance Mapping


385.3.1      Table per class hierarchy <subclass> (descriminator)


385.3.2      Table per each class <join-subclass>


385.3.3      Table per concrete class with unions <union-subclass>


 


386