Java FAQs
Java FAQs
A Threads enters to waiting state or block on I/O because other threads can execute
while the I/O operations are performed.
4 Q What is synchronization
A Synchronization is the ability to control the access of multiple threads to shared
resources. Synchronization stops multithreading. With synchronization , at a time only
one thread will be able to access a shared resource.
6 Q What is a Vector
A Vector is a grow able array of objects.
You cannot force Garbage Collection, but you can request for it by calling the method
System.gc(). But it doesn't mean that Garbage Collection will start immediately. The
garbage collection is a low priority thread of JVM.
20 Q How can you call a constructor from another constructor ? A By using this()
reference. 21 Q How can you call the constructor of super class ? A By using super()
syntax.
Constructors must have the same name of the class and can not have a return type. They
are called only once, while regular methods can be called whenever required. We cannot
explicitly call a constructor.
24 Q What must be the order of catch blocks when catching more than one
exception? A
The sub classes must come first. Otherwise it will give a compile time error.
25 Q
How can we call a method or variable of the super class from child class ?
26 Q If you are overriding equals() method of a class, what other methods you might
need to override ? A hashCode 27 Q How can you create your own exception ? A
28 Q What is serialization ? A
31 Q Does garbage collection guarantee that a program will not run out of memory?
A
Garbage collection does not guarantee that a program will not run out of memory. It is
also possible for programs to create objects that are not subject to garbage collection. And
there is no guarantee that Garbage Collection thread will be executed.
Yes. We can . We can catch anything that is derived from Throwable. Since Error is a sub
class of Throwable we can catch an error also.
Thread Priority is an integer value that identifies the relative order in which it should be
executed with respect to others. The thread priority values ranging from 1- 10 and the
default value is 5. But if a thread have higher priority doesn't means that it will execute
first. The thread scheduling depends on the OS.
36 Q How many times may an object's finalize() method be invoked by the garbage
collector? A
Only once.
Break statement results in the immediate termination of the statement to which it applies
(switch, for, do, or while). A continue statement is used to end the current loop iteration
and return control to the loop statement.
It must identify the interface in its implements clause. Also it must provide definition for
all the methods in the interface otherwise it must be declared abstract.
It causes current thread to wait until either another thread invokes notify or notifyAll
method of the current object, or a specified amount of time has elapsed.
42 Q What are the different states of a thread ? A The different thread states are ready,
running, waiting and dead. 43 Q What is the difference between static and non static
inner class ? A
A non-static inner class can have an object instances that are associated with instances of
the class's outer class. A static inner class can not have any object instances.
Strings are immutable (constant), their values cannot be changed after they are created.
StringBuffer supports mutable objects.
Readers are character oriented where streams are byte oriented. The readers are having
full support for Unicode data.
When a constructor of a class is executed it will automatically call the default constructor
of the super class (if no explicit call to any of the super class constructor) till the root of
the hierarchy.
There are 8 primitive types in java. boolean , char, byte, short, int long, float, double.
49 Q What is static ? A
static means one per class. static variables are created when the class loads. They are
associated with the object. In order to access a static we don't need objects. We can
directly access static methods and variable by calling classname.variablename.
50 Q Why we cannot override static methods? A
Static means they are associated with a class. In static methods , the binding mechanism
is static binding. So it must be available at the compile time.
A static variable is associated with the class as a whole rather than with specific instances
of a class. There will be only one value for static variable for all instances of that class.
Non-static variables take on unique values with each object instance.
If there is no other constructor exist in a class, the compiler will supply a default
constructor.
The overridden method have the exact signature of the super class method, including the
return type. The access specifier cannot be less restrictive than the super class method.
We cannot throw any new exceptions in overridden method.
55 Q What is casting ? A
Casting means converting one type to another. There are mainly two types of casting.
Casting between primitive types and casting between object references. Casting between
primitive numeric types is used to convert larger data types to smaller data types. Casting
between object references is used to refer to an object by a compatible class, interface, or
array type reference.
The equals method can be considered to perform a deep comparison of the value of an
object, whereas the == operator performs a shallow comparison. If we are not overriding
the equals method both will give the same result. == will is used to compare the object
references. It is used to check whether two objects are points to the same reference.
59 Q What are the different ways in which a thread can enter into waiting state? A
There are three ways for a thread to enter into 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.
The ResourceBundle class is used to store locale-specific resources that can be loaded by
a program to create the program's appearance to the particular locale in which it is being
run.
Numeric promotion is the conversion of a smaller numeric type to a larger numeric type.
In numerical promotion, byte, char, and short values are converted to int values. The int,
long and float values are converted to the desired types if required.
62 Q What is the difference between the prefix and postfix forms of the ++
operator? A
The prefix form first performs the increment operation and then returns the value of the
increment operation. The postfix form first returns the current value of the expression and
then performs the increment operation on that value.
Synchronized methods are methods that are declared with the keyword synchronized. A
thread executes a synchronized method only after it has acquired the lock for the
method's object or class. Synchronized statements are similar to synchronized methods. It
is a block of code declared with synchronized keyword. A synchronized statement can be
executed only after a thread has acquired the lock for the object or class referenced in the
synchronized statement.
66 Q What is hashCode? A
The hashcode of a Java Object is simply a number (32-bit signed int) that allows an object
to be managed by a hash-based data structure. A hashcode should be, equal for equal
object (this is mandatory!) , fast to compute based on all or most of the internal state of
an object, use all or most of the space of 32-bit integers in a fairly uniform way , and
likely to be different even for objects that are very similar. If you are overriding
hashCode you need to override equals method also.
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.
The File class contains information the files and directories of the local file system. The
RandomAccessFile class contains the methods needed to directly access data contained
in any part of a file.
69 Q What is final ? A
A final is a keyword in java. If final keyword is applied to a variable, then the variable
will become a constant. If it applied to method, sub classes cannot override the method. If
final keyword is applied to a class we cannot extend from that class.
70 Q What is the difference among JVM Spec, JVM Implementation, JVM Runtime
?A
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
A process runs in its own address space. No two processes share their address space.
Threads will run in the same address space of the process that owns them.
Hashtable is synchronized . but HashMap is not synchronized. Hashtable does not allow
null values , but HashMap allows null values.
Access modifier specify where a method or attribute can be used. Public is accessible
from anywhere. Protected is accessible from the same class and its subclasses.
Package/Default are accessible from the same package. Private is only accessible from
within the class.
When assigning an object to a variable, we are actually assigning the memory address of
that object to the variable. So the value passed is actually the memory location of the
object. This results in object aliasing, meaning you can have many variables referring to
the same object on the heap.
Immutability means an object cannot be modified after it has been initialized. There will
not be any setter methods in an immutable class. And normally these classes will be final.
A class loader is a class that is responsible for loading the class. All JVM contains one
class loader called primordial class loader.
A weak reference is the one that does nor prevent the referenced object from being
garbage collected. The weak reference will not keep the object that it refers to alive. A
weak reference is not counted as a reference in garbage collection. This will make the
memory use more effective.
It is the process of duplicating an object so that two identical objects will exist in the
memory at the same time.
It adds an overhead that can affect performance. Additionally there is no guarantee that
the object will be garbage collected.
83 Q What is a Dictionary? A
Dictionary is a parent class for any class that maps keys to values., In a dictionary every
key is associated with at most one value.
JAR stands for Java Archive. This is a file format that enables you to bundle multiple files
into a single archive file. A jar file will contains a manifest.mf file inside META-INF
folder that describes the version and other features of jar file.
We cannot override static methods. We cannot access any object variables inside static
method. Also the this reference also not available in static methods.
89 Q What is JVM? A
JVM stands for Java Virtual Machine. It is the run time for java programs. All are java
programs are running inside this JVM only. It converts java byte code to OS specific
commands. In addition to governing the execution of an application's byte codes, the
virtual machine handles related tasks such as managing the system's memory, providing
security against malicious code, and managing multiple threads of program execution.
90 Q What is JIT?
A JIT stands for Just In Time compiler. It compiles java byte code to native code.
Byte code is an sort of intermediate code. The byte code is processed by virtual machine.
Method overriding is the process of giving a new definition for an existing method in its
child class.
94 Q What is finalize() ? A
Finalize is a protected method in java. When the garbage collector is executes , it will
first call finalize( ), and on the next garbage-collection it reclaim the objects memory. So
finalize( ), gives you the chance to perform some cleanup operation at the time of garbage
collection.
Deadlock is a situation when two threads are waiting on each other to release a resource.
Each thread waiting for a resource which is held by the other waiting thread.
Iterator differ from enumeration in two ways Iterator allow the caller to remove elements
from the underlying collection during the iteration with well-defined semantics. And ,
method names have been improved.
A URL represents the location of a resource, and a URLConnection represents a link for
accessing or communicating with the resource at the location.
103 Q Strings are immutable. But String s="Hello"; String s1=s+"World" returns
HelloWorld how ? A Here actually a new object is created with the value of HelloWorld
104 Q What is classpath? A Classpath is the path where Java looks for loading class at
run time and compile time. 105 Q What is path? A
It is an the location where the OS will look for finding out the executable files and
commands.
Yes, we can. In order to compile a java program, we don't require any main method. But
to execute a java program we must have a main in it (unless it is an applet or servlet).
Because main is the starting point of a java program.
108 Q What is a java compilation unit. A A compilation unit is a java source file.
109 Q What are the restrictions when overriding a method ? A
Overridden methods must have the same name, argument list, and return type (i.e., they
must have the exact signature of the method we are going to override, including return
type.) The overriding method cannot be less visible than the method it overrides( i.e., a
public method cannot be override to private). The overriding method may not throw any
exceptions that may not be thrown by the overridden method
A static initializer block is a block of code that declares with the static keyword. It
normally contains the block of code that must execute at the time of class loading. The
static initializer block will execute only once at the time of loading the class only.
111 Q
How does a try statement determine which catch clause should be used to handle an
exception?
When an exception is thrown , the catch block of the try statement are examined in the
order in which they appear. The first catch block that is capable of handling the exception
is executed. The remaining catch blocks are ignored
All java method parameters in java are passed by value only. Obviously primitives are
passed by value. In case of objects a copy of the reference is passed and so all the
changes made in the method will persist.
If a class doesn't have a constructor, the JVM will provide a default constructor for the
class.
The task scheduler of OS allocates an execution time for multiple tasks. By switching
between different executing tasks, it creates the impression that tasks execute
sequentially. But actually there is only one task is executed at a time.
116 Q
What will happen if you are invoking a thread's interrupt method while the thread
is waiting or sleeping?
When the task enters to the running state, it will throw an InterruptedException.
117 Q What are the different ways in which a thread can enter into waiting state? A
There are three ways for a thread to enter into 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.
118 Q
119 Q
What is the difference between creating a thread by extending Thread class and by
implementing Runnable interface? Which one should prefer?
When creating a thread by extending the Thread class, it is not mandatory to override the
run method (If we are not overriding the run method , it is useless), because Thread class
have already given a default implementation for run method. But if we are implementing
Runnable , it is mandatory to override the run method. The preferred way to create a
thread is by implementing Runnable interface, because it give loose coupling.
An abstract class is an incomplete class. An abstract class is defined with the keyword
abstract . We cannot create an object of the abstract class because it is not complete. It
sets a behavioral protocol for all its child classes.
125 Q What is any an anonymous class? A An anonymous class is a local class with
no name. 126 Q What is a JVM heap? A
The heap is the runtime data area from which memory for all class instances and arrays is
allocated. The heap may be of a fixed size or may be expanded. The heap is created on
virtual machine start-up.
Array is collection of same data type. Array size is fixed, It cannot be expanded. But
ArrayList is a growable collection of objects. ArrayList is a part of Collections
Framework and can work with only objects.
129 Q
Theards which are running on the background are called deamon threads. daemon thread
is a thread which doesn't give any chance to run other threads once it enters into the run
state it doesn't give any chance to run other threads. Normally it will run forever, but
when all other non-daemon threads are dead, daemon thread will be killed by JVM
Native threads can switch between threads preemptively. Green threads switch only when
control is explicitly given up by a thread ( Thread.yield(), Object.wait(), etc.) or a thread
performs a blocking operation (read(), etc.). On multi-CPU machines, native threads can
run more than one thread simultaneously by assigning different threads to different CPUs.
Green threads run on only one CPU. Native threads create the appearance that many Java
processes are running: each thread takes up its own entry in the process table. One clue
that these are all threads of the same process is that the memory size is identical for all
the threads - they are all using the same memory. The process table is not infinitely large,
and processes can only create a limited number of threads before running out of system
resources or hitting configured limits.
A volatile variable is not allowed to have a local copy of a variable that is different from
the value currently held in "main" memory. Volatile modifier requests the JVM to always
access the shared copy of the variable so the its most current value is always read.
Because the multiple inheritance causes the redundancy. Also we cannot solve diamond
problem.
The diamond problem is an ambiguity that can occur when a class multiply inherits from
two classes that both descend from a common super class
Any number of JVMs can run in a system. Whenever we issue the command 'java' a new
JVM will start.
140 Q What is phantom memory? A Phantom memory is the memory that does not exist in
reality. 141 Q What is reflection? A
Reflection is the process of finding out the different features of a class dynamically.
143 Q
An advantage of this scheme is that it can run in small chunks of time closely linked with
the execution of the program. These characteristic makes it particularly suitable for real-
time environments where the program can't be interrupted for very long time. A
disadvantage of reference counting is that it does not detect cycles. A cycle is two or
more objects that refer to one another. Another disadvantage is the overhead of
incrementing and decrementing the reference count each time. Because of these
disadvantages, reference counting currently is out of favor.
The ThreadPool class is a generic implementation of a thread pool, which takes the
following input Size of the pool to be constructed and name of the class which
implements Runnable (which has a visible default constructor) and constructs a thread
pool with active threads that are waiting for activation. once the threads have finished
processing they come back and wait once again in the pool.
145 Q What is the difference between throw and throws clause? A
throw is used to throw an exception manually, where as throws is used in the case of
checked exceptions, to tell the compiler that we haven't handled the exception, so that
the exception will be handled by the calling function.
A JAR file (short for Java Archive) is a ZIP file used to distribute a set of Java classes. It is
used to store compiled Java classes and associated metadata that can constitute a program
The Comparable is for natural ordering and Comparator is for custom ordering. But we
can override the compareTo method of comparable interface to give a custom ordering.
A Set is a collection that has no duplicate elements. A List is a collection that has an
order associated with its elements. A map is a way of storing key/value pairs. The way
of storing a Map is similar to two-column table.
It is the ability of an object to behave differently on different situations for the same
message.
Variables declared within a method are local variables. Variables declared within the class
are member variables. Variables declared within the class with static modifier are class
variables
155 Q
A constructor is a member function of a class that is used to create objects of that class. It
has the same name as the class itself, has no return type, and is invoked using the new
operator. We cannot invoke a constructor directly. A method is an ordinary member
function of a class. It has its own name, a return type (which may be void), and is
invoked using the dot operator.
There are mainly four types available. They are Member classes, Nested top-level
classes, Local classes, Anonymous classes
A class declared within a class with static modifier is called nested top level class. Any
class outside the declaring class can access the nested top level class with the declaring
class dot nested top level class. Top-level inner classes have access to static variables
only .
A class declared inside a class without static modifier is called member class. Member
classes are just like any other member methods or member variables.
Local inner classes are class declared inside a block of code. They are visible only within
the block of their declaration.
No. A top level class can not be private or protected. It can have either "public" or no
modifier.
162 Q How will you invoke any external process in Java? A By using
Runtime.getRuntime().exec(….) 163 Q What is a package? A To group set of classes
into a single unit is known as packaging. Packages provides wide namespace visibility.
164 Q What is the use of assert keyword A
Assert keyword validates certain expressions. It replaces the if block effectively and
throws an AssertionError on failure. The assert keyword should be used only for critical
arguments (means without that the method does nothing).
Holding the reference of the other class within some other class is known as composition.
It is a special type of composition. If you expose all the methods of a composite class and
route the method call to the composite method through its reference, then it is called
aggregation
167 Q What are the methods in Object? A clone, equals, wait, finalize, getClass,
hashCode, notify, notifyAll, toString 168 Q What is the relationship between
synchronized and volatile keyword? A
The JVM is guaranteed to treat reads and writes of data of 32 bits or less as atomic. For
long or double variable, programmers should take care in multi-threading environment.
Either put these variables in a synchronized method or block, or declare them volatile.
You can make a variable synchronized or volatile under the following cases: 1) if you are
not updating many variables often in a multithread environment, consider using volatile.
2) If you are updating many variables, consider using synchronized, because using
volatile might be slower.
Since inheritance inherits everything from the super class and interface, it may make the
subclass too clustering and sometimes error-prone when dynamic overriding or dynamic
overloading in some situation. In addition, the inheritance may make peers hardly
understand your code if they don't know how your super-class acts.
Both are synchronized methods. One is instance method, the other is class method.
Method with static modifier is a class method. That means the method belongs to class
itself and can be accessed directly with class name and is also called Singleton design.
The method without static modifier is an instance method. That means the instance
method belongs to its object. Every instance of the class gets its own copy of its instance
method.
172 Q What is the purpose of the Runtime class? A
The purpose of the Runtime class is to provide access to the Java runtime system.
173 Q What is the purpose of the System class? A The purpose of the System class
is to provide access to system resources. 174 Q
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.
175 Q
Considering notepad/IE or any other thing as process, What will happen if you start
notepad or IE 3 times? Where 3 processes are started or 3 threads are started ?
A 3 processes will start. 176 Q What are the restrictions placed on the values of each
case of a switch statement? A
At compile time, each case values of switch statement must evaluate to a an int value.
177 Q If aaaa is an array then why aaaa.length why not aaaa.length()? A Because
length is a property not a method. 178 Q What is dynamic typing? A
Dynamic typing means type errors are detected at run time by checking the actual data
types of the values against the required data types
Static typing means type errors are detected at compile time by checking the inferred data type is a
subtype of the required type
Object is an instance of a class and it is a software unit that combines a structured set of
data with a set of operations for inspecting and manipulating that data. When an object is
created using new operator, memory is allocated to it.
Unicode is used for internal representation of characters and strings and it uses 16 bits to
represent each other.
184 Q
What is a stream and what are the types of Streams and classes of the Streams?
A stream is a flow of data from one direction to another. . There are two types of Streams
Byte Streams: Provide a convenient means for handling input and output of bytes. And
Character Streams: Provide a convenient means for handling input & output of
characters.
TCP/IP is a two-way communication between the client and the server and it is a reliable
and there is a confirmation regarding reaching the message to the destination. UDP is a
one-way communication only between the client and the server and it is not a reliable and
there is no confirmation regarding reaching the message to the destination.
It's an abstract class for representing the system security policy for a Java application
environment (specifying which permissions are available for code from various sources).
Java security properties file resides in <JAVA-HOME>/lib/security/java.security directory.
188 Q What is a thread group? A
A thread group is a data structure that controls the state of collection of thread as a whole
managed by the particular runtime environment.
189 Q
DataOutputStream.writeUTF() does not support writing out strings larger than 64K. The
first two bytes of a UTF string in the stream are the length of the string. If a
java.lang.String is larger than 64K, it needs to be stored in the stream by an alternative
method rather than depending on the default method of storing a String in the stream,
writeUTF.
190 Q
The ObjectOutputStream maintains a table mapping objects written into the stream to a
handle. The first time an object is written to a stream, its contents are written into the
stream; subsequent writes of the object result in a handle to the object being written into
the stream. This table maintains references to objects that might otherwise be unreachable
by an application, thus, resulting in an unexpected situation of running out of memory. A
call to the ObjectOutputStream.reset() method resets the object/handle table to its initial
state, allowing all previously written objects to be eligible for garbage collection.
191 Q How can I get the serialVersionUID of a class? A By running the serialver tool
with the name of the class as the command line argumet, as shown in the example that
follows: serialver java.lang.String 192 Q What is serialVersionUID ? A
An abstraction is an idea, concept, or word which defines the phenomena which make up
the concrete events or things which the abstraction refers to, the referents.
194 Q What is encapsulation? A
Encapsulation describes the ability of an object to hide its data and methods from the rest
of the world
Inheritance is the ability to create new classes based on existing classes. It is useful to reuse
existing code.
JavaBeans are Java utility classes you defined. Beans have a standard format for Java
classes. You use tags
Custom tags and beans accomplish the same goals -- encapsulating complex behavior
into simple and accessible forms. There are several differences:
Custom tags can manipulate JSP content; beans cannot. Complex operations can be
reduced to a significantly simpler form with custom tags than with beans. Custom tags
require quite a bit more work to set up than do beans. Custom tags usually define
relatively self-contained behavior, whereas beans are often defined in one servlet and
used in a different servlet or JSP page. Custom tags are available only in JSP 1.1 and
later, but beans can be used in all JSP 1.x versions.
3 Q What are the different ways for session tracking?
A Cookies, URL rewriting, HttpSession, Hidden form fields
4 Q What mechanisms are used by a Servlet Container to maintain session
information?
A Cookies, URL rewriting, and HTTPS protocol information are used to maintain session
information
5 Q Difference between GET and POST
A In GET your entire form submission can be encapsulated in one URL, like a hyperlink.
query length is limited to 255 characters, not secure, faster, quick and easy. The data is
submitted as part of URL.
In POST data is submitted inside body of the HTTP request. The data is not visible on the
URL and it is more secure.
6 Q What is session?
A The session is an object used by a servlet to track a user's interaction with a Web
application across multiple HTTP requests. The session is stored on the server.
Yes. But you will not get the servlet specific things from constructor. The original reason
for init() was that ancient versions of Java couldn’t dynamically invoke constructors with
arguments, so there was no way to give the constructor a ServletConfig. That no longer
applies, but servlet containers still will only call your no-arg constructor. So you won’t
have access to a ServletConfig or ServletContext.
12 Q How many JSP scripting elements are there and what are they? A
Static resources should always be included using the JSP include directive. This way, the
inclusion is performed just once during the translation phase.
You can make your JSPs thread-safe adding the directive <%@ page
isThreadSafe="false" % > within your JSP page.
15 Q What is the difference in using request.getRequestDispatcher() and
context.getRequestDispatcher()? A
When presented with JSP page the JSP engine does the following 7 phases.
o Page translation: -page is parsed, and a java file which is a servlet is created.
o Page compilation: page is compiled into a class file
o Page loading : This class file is loaded.
o Create an instance :- Instance of servlet is created
o jspInit() method is called
o _jspService is called to handle service calls
o _jspDestroy is called to destroy it when the servlet is not required.
18 Q What is a Expression? A
Expressions are act as place holders for language expression, expression is evaluated
each time the page is accessed. This will be included in the service method of the
generated servlet.
19 Q What is a Declaration? A
It declares one or more variables or methods for use later in the JSP source file. A
declaration must contain at least one complete declarative statement. You can declare any
number of variables or methods within one declaration tag, as long as semicolons
separate them. The declaration must be valid in the scripting language used in the JSP
file. This will be included in the declaration section of the generated servlet.
20 Q What is a Scriptlet? A
A scriptlet can contain any number of language statements, variable or expressions that
are valid in the page scripting language. Within scriptlet tags, you can declare variables to
use later in the file, write expressions valid in the page scripting language, use any of the
JSP implicit objects or any object declared with a <jsp:useBean>. Generally a scriptlet
can contain any java code that are valid inside a normal java method. This will become
the part of generated servlet's service method.
21QWhat are the implicit objects?
ACertain objects that are available for the use in JSP documents without being declared
first. These objects are parsed by the JSP engine and inserted into the generated servlet.
The implicit objects are: request, response, pageContext, session, application, out, config,
page, exception
Aforward is server side redirect and sendRedirect is client side redirect. When you invoke
a forward request, the request is sent to another resource on the server, without the client
being informed that a different resource is going to process the request. This process
occurs completely with in the web container And then returns to the calling method.
When a sendRedirect method is invoked, it causes the web container to return to the
browser indicating that a new URL should be requested. Because the browser issues a
completely new request any object that are stored as request attributes before the redirect
occurs will be lost. This extra round trip a redirect is slower than forward. Client can
disable sendRedirect.
AYes, it is. JSP technology is extensible through the development of custom actions, or
tags, which are encapsulated in tag libraries.
AThe central abstraction in the Servlet API is the Servlet interface. All servlets implement
this interface, either directly or, more commonly, by extending a class that implements it
such as HttpServlet.
AEach servlet has the same life cycle: first, the server loads and initializes the servlet by
calling the init method. This init() method will be executed only once during the life time
of a servlet. Then when a client makes a request, it executes the service method. finally it
executes the destroy() method when server removes the servlet.
28QCan we call destroy() method on servlets from service method ?
AYes.
AThen only we will be able to access the ServletConfig from our servlet. If there is no
ServletConfig our servlet will not have any servlet nature.
AYes. But the container will always call the default constructor only. If default
constructor is not present , the container will throw an exception.
33QWhat is the difference between <%@ include ...> (directive include) and
<jsp:include> ?
A@ include is static include. It is inline inclusion. The contents of the file will get
included on Translation phase. It is something like inline inclusion. We cannot have a
dynamic filename for directive include. <jsp:include> is dynamic include. Here the
included file will be processed as a separate file and the response will be included. We
can have a dynamic filename for <jsp:include>. We can aslo pass parameters to
<jsp:include
A Cookies are small textual information that are stored on client computer. Cookies are
used for session tracking.
37QHow do I prevent the output of my JSP or Servlet pages from being cached by
the browser?
A By setting appropriate HTTP header attributes we can prevent caching by the browser
<%
response.setHeader("Cache-Control","no-store"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>
A Under JSP 1.0, the page implicit object page is equivalent to "this", and returns a
reference to the servlet generated by the JSP page.
AThere are three scripting elements in JSP . They are declarations, scriptlets, expressions.
A No.
You will get this error only when you try to redirect a page after you already have flushed
the output buffer. This happens because HTTP specification force the header to be set up
before the lay out of the page can be shown. When you try to send a redirect status, your
HTTP server cannot send it right now if it hasn't finished to set up the header. Simply it is
giving the error due to the specification of HTTP 1.0 and 1.1
A jsp:useBean action may optionally have a body. If the body is specified, its contents
will be automatically invoked when the specified bean is instantiated (Only at the time of
instantiation.) Typically, the body will contain scriptlets or jsp:setProperty tags to
initialize the newly instantiated bean, although you are not restricted to using those
alone.
43 Q What is JSP? A
JSP is a server side scripting technology. JSP allows Java as well as a few special tags to
be embedded into a web file (HTML/XML, etc). The suffix must ends with .jsp.
JSP actions use constructs in XML syntax to control the behavior of the servlet engine.
You can dynamically insert a file, reuse JavaBeans components, forward the user to
another page, or generate HTML for the Java plugin. Available actions include:
jsp:include, jsp:useBean, jsp:setProperty, jsp:getProperty, jsp:forward and Jsp: plugin
The ServletConfig gives the information about the servlet initialization parameters. The
servlet engine implements the ServletConfig interface in order to pass configuration
information to a servlet. The server passes an object that implements the ServletConfig
interface to the servlet's init() method. The ServletContext gives information about the
container. The ServletContext interface provides information to servlets regarding the
environment in which they are running. It also provides standard way for servlets to write
events to a log file.
Server Side push is useful when data needs to change regularly on the clients application
or browser, without intervention from client. The mechanism used is, when client first
connects to Server, then Server keeps the TCP/IP connection open.
The standard HTTP protocols ways of refreshing the page, which is normally supported
by all browsers. <META HTTP-EQUIV="Refresh" CONTENT="5;
URL=/servlet/MyServlet/"> This will refresh the page in the browser automatically and
loads the new data every 5 seconds.
49 Q What is the Max amount of information that can be saved in a Session Object
? A
There is no such limit on the amount of information that can be saved in a Session
Object. The only limit is the Session ID length , which should not exceed more than 4K.
The three major reasons to use inter servlet communication are: a) Direct servlet
manipulation - allows to gain access to the other currently loaded servlets and perform
certain tasks (through the ServletContext object) b) Servlet reuse - allows the servlet to
reuse the public methods of another servlet. c) Servlet collaboration - requires to
communicate with each other by sharing specific information (through method
invocation)
Hidden Comments are JSP comments. A comments that documents the JSP page but is
not sent to the client. The JSP engine ignores a hidden comment, and does not process
any code within hidden comment tags.
Session is stored in server but cookie stored in client. Session should work regardless of
the settings on the client browser. There is no limit on the amount of data that can be
stored on session. But it is limited in cookie. Session can store objects and cookies can
store only strings. Cookies are faster than session.
54 Q What is HttpTunneling? A
HTTP tunneling is used to encapsulate other protocols within the HTTP or HTTPS
protocols. Normally the intranet is blocked by a firewall and the network is exposed to
the outer world only through a specific web server port, that listens for only HTTP
requests. To use any other protocol, that by passes the firewall, the protocol is embedded
in HTTP and send as HttpRequest.
What is the better way to enable thread-safe servlets and JSPs? SingleThreadModel
Synchronization?
ServletContext gives the information about the container and PageContext gives the
information about the Request
By forwarding the request to the servlet ( the data must be there in the request scope) we
can pass the data from a JSP to servlet. Also we can use a session to pass the data.
61 Q How will you delete a cookie? A Cookie c = new Cookie ("name", null);
c.setMaxAge(0);
response.addCookie(killCookie);
62 Q What is the difference between Context init parameter and Servlet init
parameter? A
Servlet init parameters are for a single servlet only. No body out side that servlet can
access that. It is declared inside the <servlet> tag inside Deployment Descriptor, where as
context init parameter is for the entire web application. Any servlet or JSP in that web
application can access context init parameter. Context parameters are declared in a tag
<context-param> directly inside the <web-app> tag. The methods for accessing context
init parameter is getServletContext ().getInitParamter (“name”) where as method for
accessing servlet init parameter is getServletConfig ().getInitParamter (“name”);
What is the difference between setting the session time out in deployment descriptor
and setting the time out programmatically?
A
You cannot override the _jspService() method within a JSP page. You can however,
override the jspInit() and jspDestroy() methods within a JSP page.
68 Q How will you include a static file in a JSP page? A You can include a static
resource to a JSP using <jsp:directive > or <%@ inlcude >. 69 Q How you can
perform browser redirection? A
No. You are supposed to use JSPWriter object (given to you in the form of the implicit
object out) only for replying to clients.
71 Q How can you stop JSP execution in the middle of processing a request? A
We can use the return statement to stop the processing of JSP. Because JSP is compiled to
servlet and all the statements will go inside service method, any time you can stop the
processing using return statement.
72 Q
You can invoke the JSP error page and pass the exception object to it from within a
servlet. For that you need to create a request dispatcher for the JSP error page, and pass
the exception object as a javax.servlet.jsp.jspException request attribute.
73 Q How will you pass information from JSP to included JSP? A By using
<%jsp:param> tag. 74 Q How does JSP handle runtime exceptions? A
Using errorPage attribute of page directive JSP handles runtime exceptions. We need to
specify isErrorPage=true if the current page is intended to use as a JSP error page.
75 Q
How can I enable session tracking for JSP pages if the browser has disabled
cookies?
By default session tracking uses cookies to associate a session identifier with a user. If the
browser does not support cookies, or if cookies are disabled, you can still use session
tracking using URL rewriting. For URL rewriting to be effective, you need to append the
session ID for each and every link that is part of your servlet response. By using the
methods response.encodeURL() and response.encodeRedirectURL() we can achieve this.
You can declare methods as declarations in your JSP page. The methods can then be
invoked within any other methods you declare, or within JSP scriptlets and expressions.
We can set the session time out programmatically by using the method
setMaxInactiveInterval() of HttpSession.
You need to configure the DD for passing init parameter to a JSP. You can configure the
DD as follows.
<servlet>
<servlet-name>test.jsp</servlet-name>
<jsp-file>test.jsp</jsp-name>
<init-param>
<param-name>Abc</param-name>
<param-value>Xyz</param-value>
</init-param>
</servlet>
You can define a class which implements HttpSessionBindingListener and override the
valueUnbound() method.
80 Q How many cookies can one set in the response object of the servlet? Also, are
there any restrictions on the size of cookies?
A If the client is using Netscape, the browser can receive and store 300 total cookies and
4 kilobytes per cookie. And the no of cookie is restricted to 20 cookies per server or
domain
81 Q
When a session object gets added or removed to the session, which event will get
notified ?
URL encoding is the method of replacing all the spaces and other extra characters into
their corresponding Hex Characters and Decoding is the process of converting all Hex
Characters back to their normal form.
Servlets run inside a web server and applets run inside web browsers. Applets must have
graphical user interfaces whereas servlets have no graphical user interfaces.
84 Q What are the different web servers available name few of them? A Tomcat,
Java Web Server, JRun 85 Q What is a Java Bean? A
A Java Bean is a software component that has been designed to be reusable in a variety of
different environments.
It is a unique id assigned by the server to the user when a user starts a session.
It parses a query string and builds a Hashtable of key-value pairs, where the values are
arrays of strings. The query string should have the form of a string packaged by the GET
or POST method.
89 Q When init() and Distroy() will be called. A
init() is called whenever the servlet is loaded for the first time into the web server.
Destroy will be called whenever the servlet is removed from the web server.
setComment: If a web browser presents this cookie to a user, the cookie's purpose will be
described using this comment. This is not supported by version zero cookies.
getComment: Returns the comment describing the purpose of this cookie, or null if no
such comment has been defined.
setMaxAge : Sets the maximum age of the cookie. The cookie will expire after that many
seconds have passed. Negative values indicate the default behavior, and will be deleted
when the browser closes.
getMaxAge : Returns the maximum specified age of the cookie. If none was specified, a
negative value is returned, indicating the default behavior described with setMaxAge.
setSecure method indicates to the web browser that the cookie should only be sent using
a secure protocol (https). getSecure method returns the value of the 'secure' flag.
Servlet chaining is a technique in which two or more servlets can cooperate in servicing a
single request. In servlet chaining, one servlet’s output is the input of next servlet. This
process continues until the last servlet is reached. Its output is then sent back to the client.
We are achieving Servlet Chaining with the help of RequestDispatcher.
95 Q
There are three ways to communicate from an applet to servlet and they are: HTTP
Communication (Text-based and object-based) , Socket Communication and RMI
Communication
96 Q Can we call a servlet with parameters in the URL? A Yes. You can call a servlet
with parameters in the URL like ?param=value 97 Q How do servlets handle multiple
simultaneous requests? A
When a request comes in, the web server will start a new thread and the request is
assigned to a thread, which calls a service method of the servlet.
The directory structure of a web application consists of two parts. A private directory
called WEB-INF and a public resource directory which contains files server to public.
WEB-INF folder consists of web.xml (the deployment descriptor), classes directory
(where we keeps all our classes and servlets) and lib directory (where we keeps all our jar
files). The public folder contains the static resources of the web application.
A container doesn't initialize the servlets when it starts up. It initializes a servlet when it
receives a request for that servlet first time. This is called lazy loading. The servlet
specification defines the <load-on-startup> element, which can be specified in the
deployment descriptor to make the servlet container load and initialize the servlet as soon
as it starts up. The process of loading a servlet before any request comes in is called
preloading or pre initializing a servlet.
The ServletRequest gives information such as the names of the parameters passed by the
client, the protocol (scheme) being used by the client, and the names of the remote host
that made the request and the server that received it. The input stream,
ServletInputStream.
101 Q
ServletResponse allows the servlet to set the content length and MIME type of that
response. It provides an output stream, ServletOutputStream and a Writer through which
the servlet can send data.
An HTTP Servlet handles client requests through its service method. The service method
supports standard HTTP client requests by dispatching each request to a method designed
to handle that request.
103 Q
No. Static HTML pages and applets are not considered as web components by J2EE
specification. Even the server-side utility classes are not considered web components.
105 Q What is the web container? A Servlet and JSP containers are collectively
referred to as Web containers. 106 Q What is deployment descriptor? A
107 Q
How can I print the stack trace of an exception from a JSP page?
By creating an object of PrintWriter we can print the stack trace in JSP page. Eg:
PrintWriter pw = response.getWriter();
exception.printStackTrace(pw);
No, the objects need not to be serializable. We can store any type of objects in session.
111 Q What is the difference between an application server and a web server?
A Everything in web server must be achieved programmatically. But application server
provides a lot of services like security, transaction , scalability. Application server will be
having EJB support where web server don't have an EJB support.
112 Q What is servlet exception? A It indicates that there is an exception occurred in the
servlet.
113 Q Can we implement Runnable interface from within our servlet? A Our servlet
can implement the Runnable interface. 114 Q What is a WAR file? A
WAR stands for Web Archive. It is a compressed version of your web application. You
can use this WAR file to deploy your web application.