Hacking APIs Breaking Web Application Programming Interfaces Final
Hacking APIs Breaking Web Application Programming Interfaces Final
HashMap Hashtable
It is non synchronized. It cannot be shared between many It is synchronized. It is thread-safe and
threads without proper synchronization code. can be shared with many threads.
It permits one null key and multiple null values. It does not permit any null key or value.
It was present in earlier versions of java as
is a new class introduced in JDK 1.2.
well.
It is faster. It is slower.
It is traversed through Enumerator and
It is traversed through the iterator.
Iterator.
It uses an enumerator which is not fail
It uses fail fast iterator.
fast.
It inherits AbstractMap class. It inherits Dictionary class.
Yes, we can call a constructor of a class inside another constructor. This is also
called as constructor chaining. Constructor chaining can be done in 2 ways-
1.Within the same class: For constructors in the same class, the this()
keyword can be used.
2.From the base class: The super() keyword is used to call the
constructor from the base class.
The constructor chaining follows the process of inheritance. The
constructor of the sub class first calls the constructor of the super class.
Due to this, the creation of sub class’s object starts with the initialization
of the data members of the super class. The constructor chaining works
similarly with any number of classes. Every constructor keeps calling the
chain till the top of the chain.
Q16. Contiguous memory locations are usually used for storing actual
values in an array but not in ArrayList. Explain.
An array generally contains elements of the primitive data types such as int,
float, etc. In such cases, the array directly stores these elements at contiguous
memory locations. While an ArrayList does not contain primitive data types. An
arrayList contains the reference of the objects at different memory locations
instead of the object itself. That is why the objects are not stored at contiguous
memory locations.
Q17. How is the creation of a String using new() different from that of
a literal?
When we create a string using new(), a new object is created. Whereas, if we
create a string using the string literal syntax, it may return an already existing
object with the same name.
Java allows multiple threads to execute. They may be accessing the same
variable or object. Synchronization helps to execute threads one after another.
It is important as it helps to execute all concurrent threads while being in sync.
It prevents memory consistency errors due to access to shared memory. An
example of synchronization code is-
As we have synchronized this function, this thread can only use the object after
the previous thread has used it.
Double Brace Initialization is a Java term that refers to the combination of two
independent processes. There are two braces used in this. The first brace
creates an anonymous inner class. The second brace is an initialization block.
When these both are used together, it is known as Double Brace Initialization.
The inner class has a reference to the enclosing outer class, generally using the
‘this’ pointer. It is used to do both creation and initialization in a single
statement. It is generally used to initialize collections. It reduces the code and
also makes it more readable.
Q20. Why is it said that the length() method of String class doesn’t
return accurate results?
The length() method of String class doesn’t return accurate results because
it simply takes into account the number of characters within in the String. In
other words, code points outside of the BMP (Basic Multilingual Plane), that is,
code points having a value of U+10000 or above, will be ignored.
The reason for this is historical. One of Java’s original goals was to consider all
text as Unicode; yet, Unicode did not define code points outside of the BMP at
the time. It was too late to modify char by the time Unicode specified such
code points.
Q21. What are the differences between Heap and Stack Memory in
Java?
1.Default
2.Private
3.Protected
4.Public
Modifier Default Private Protected Public
Same class YES YES YES YES
Same Package subclass YES NO YES YES
Same Package non-subclass YES NO YES YES
Different package subclass NO NO YES YES
Different package non-subclass NO NO NO YES
Q26. Define a Java Class.
A class in Java is a blueprint which includes all your data. A class contains
fields (variables) and methods to describe the behavior of an object. Let’s have
a look at the syntax of a class.
1class Abc {
2member variables // class body
3methods}
1. State
2. Behavior
3. Identity
An object is created using the ‘new’ keyword. For example:
Example
if(x > 100)
1
{
2
String test =
3
"Edureka";
4
}
1class Test{
2public String EmpName;
3public int empAge;
4}
•final variable
When the final keyword is used with a variable then its value can’t be changed
once assigned. In case the no value has been assigned to the final variable
then using only the class constructor a value can be assigned to it.
Example continue:
for (int i = 0; i < 5; i+
1
+)
2
{
3
if(i == 2)
4
{
5
continue;
6
}
7
System.out.println(i);
8
}
For example:
public class InfiniteForLoopDemo
1
{
2
public static void main(String[] arg) {
3
for(;;)
4
System.out.println("Welcome to Edureka!");
5
// To terminate this program press ctrl + c in the
6
console.
7
}
8
}
this() super()
1. this() represents the current instance of a 1. super() represents the current instance of a
class parent/base class
2. Used to call the default constructor of the 2. Used to call the default constructor of the
same class parent/base class
3. Used to access methods of the current class 3. Used to access methods of the base class
4. Used for pointing the current class instance 4. Used for pointing the superclass instance
5. Must be the first line of a block 5. Must be the first line of a block
Q36. What is Java String Pool?
Java String pool refers to a collection of Strings which are stored in heap
memory. In this, whenever a new object is created, String pool first checks
whether the object is already present in the pool or not. If it is present, then the
same reference is returned to the variable else new object will be created in
the String pool and the respective reference will be returned.
Q37. Differentiate between static and non-static methods in Java.
Static Method Non-Static Method
1. The static keyword must be used before1. No need to use the static keyword before the method
the method name name
2. It is called using the class
2. It is can be called like any general method
(className.methodName)
3. They can’t access any non-static instance3. It can access any static method and any static variable
variables or methods without creating an instance of the class
1. Bootstrap ClassLoader
2. Extension ClassLoader
3. System/Application ClassLoader
Q42. Why Java Strings are immutable in nature?
In Java, string objects are immutable in nature which simply means once the
String object is created its state cannot be modified. Whenever you try to
update the value of that object instead of updating the values of that particular
object, Java creates a new string object. Java String objects are immutable as
String objects are generally cached in the String pool. Since String literals are
usually shared between multiple clients, action from one client might affect the
rest. It enhances security, caching, synchronization, and performance of the
application.
Array ArrayList
Cannot contain values of different data types Can contain values of different data types.
Size must be defined at the time of
Size can be dynamically changed
declaration
Need to specify the index in order to add
No need to specify the index
data
Arrays are not type parameterized Arraylists are type
Arrays can contain primitive data types as Arraylists can contain only objects, no primitive data
well as objects types are allowed
Q44. What is a Map in Java?
In Java, Map is an interface of Util package which maps unique keys to values.
The Map interface is not a subset of the main Collection interface and thus it
behaves little different from the other collection types. Below are a few of the
characteristics of Map interface:
Q45. What is collection class in Java? List down its methods and
interfaces.
In Java, the collection is a framework that acts as an architecture for storing
and manipulating a group of objects. Using Collections you can perform various
tasks like searching, sorting, insertion, manipulation, deletion, etc. Java
collection framework includes the following:
• Interfaces
• Classes
• Methods
The below image shows the complete hierarchy of the Java Collection.
class Car {
1
void run()
2
{
3
System.out.println(“car is running”);
4
}
5
}
6
class Audi extends Car {
7
void run()
8
{
9
System.out.prinltn(“Audi is running safely with
10
100km”);
11
}
12
public static void main(String args[])
13
{
14
Car b= new Audi(); //upcasting
15
b.run();
16
}
17
}
Inheritance in Java is the concept where the properties of one class can be
inherited by the other. It helps to reuse the code and establish a relationship
between different classes. Inheritance is performed between two types of
classes:
1class Adder {
2Static int add(int a, int b)
3{
4return a+b;
5}
6Static double add( double a, double b)
7{
8return a+b;
9}
public static void main(String args[])
10
{
11
System.out.println(Adder.add(11,11));
12
System.out.println(Adder.add(12.3,12.6))
13
;
14
}}
Method Overriding:
• In Method Overriding, the subclass has the same method with the same
name and exactly the same number and type of parameters and same
return type as a superclass.
• Method Overriding is to “Change” existing behavior of the method.
• It is a run time polymorphism.
• The methods must have the same signature.
• It always requires inheritance in Method Overriding.
Let’s take a look at the example below to understand it better.
class Car {
1
void run(){
2
System.out.println(“car is running”);
3
}
4
Class Audi extends Car{
5
void run()
6
{
7
System.out.prinltn("Audi is running safely with
8
100km");
9
}
10
public static void main( String args[])
11
{
12
Car b=new Audi();
13
b.run();
14
}
15
}
class Base {
private static void display() {
1
System.out.println("Static or class method from Base");
2
}
3
public void print() {
4
System.out.println("Non-static or instance method from
5
Q10. What is multiple inheritance? Is it supported by Java?
If a child class inherits the property from multiple classes
is known as multiple inheritance. Java does not allow to
extend multiple classes.
A Marker interface can be defined as the interface having no data member and
member functions. In simpler terms, an empty interface is called the Marker
interface. The most common examples of Marker interface in Java are
Serializable, Cloneable etc. The marker interface can be declared as follows.
class Demo
1
{
2
int i;
3
public Demo(int a)
4
{
5
i=k;
6
}
7
public Demo(int a, int
8
b)
9
{
10
//body
11
}
12
}
Q2. What are the differences between Get and Post methods?
Get Post
Limited amount of data can be sent because data Large amount of data can be sent because data is
is sent in header. sent in body.
Not Secured because data is exposed in URL bar. Secured because data is not exposed in URL bar.
Can be bookmarked Cannot be bookmarked
Idempotent Non-Idempotent
It is more efficient and used than Post It is less efficient and used
Q3. What is Request Dispatcher?
RequestDispatcher interface is used to forward the request to another resource
that can be HTML, JSP or another servlet in same application. We can also use
this to include the content of another resource to the response.
1.void forward()
2.void include()
Q4. What are the differences between forward() method and
sendRedirect() methods?
1. Servlet is loaded
2. Servlet is instantiated
3. Servlet is initialized
4. Service the request
5. Servlet is destroyed
Q6. How does cookies work in Servlets?
• Cookies are text data sent by server to the client and it gets saved at the
client local machine.
• Servlet API provides cookies support through javax.servlet.http.Cookie
class that implements Serializable and Cloneable interfaces.
• HttpServletRequest getCookies() method is provided to get the array of
Cookies from request, since there is no point of adding Cookie to request,
there are no methods to set or add cookie to request.
• Similarly HttpServletResponse addCookie(Cookie c) method is provided to
attach cookie in response header, there are no getter methods for cookie.
Q7. What are the differences between ServletContext vs
ServletConfig?
The difference between ServletContext and ServletConfig in Servlets JSP is in
below tabular format.
ServletConfig ServletContext
It represent whole web application running on
Servlet config object represent single servlet
particular JVM and common for all the servlet
Its like local parameter associated with Its like global parameter associated with whole
particular servlet application
It’s a name value pair defined inside the servlet
ServletContext has application wide scope so define
section of web.xml file so it has servlet wide
outside of servlet tag in web.xml file.
scope
getServletConfig() method is used to get the getServletContext() method is used to get the
config object context object.
for example shopping cart of a user is a To get the MIME type of a file or application
specific to particular user so here we can use session related information is stored using servlet
servlet config context object.
Q8. What are the different methods of session management in
servlets?
Session is a conversational state between client and server and it can consists
of multiple request and response between client and server. Since HTTP and
Web Server both are stateless, the only way to maintain a session is when
some unique information about the session (session id) is passed between
server and client in every request and response.
1. User Authentication
2. HTML Hidden Field
3. Cookies
4. URL Rewriting
5. Session Management API
Apart from this blog, if you want to get trained by professionals on this
technology, you can opt for structured training from edureka! Click below to
know more.
Interfaces:
• Connection
• Statement
• PreparedStatement
• ResultSet
• ResultSetMetaData
• DatabaseMetaData
• CallableStatement etc.
Classes:
• DriverManager
• Blob
• Clob
• Types
• SQLException etc.
4. What is the role of JDBC DriverManager class?
The DriverManager class manages the registered drivers. It can be used to
register and unregister drivers. It provides factory method that returns the
instance of Connection.
You should use execute() method only when you are not sure about the type of
statement else use executeQuery or executeUpdate method.
Q11. What do you understand by JDBC Statements?
JDBC statements are basically the statements which are used to send SQL
commands to the database and retrieve data back from the database. Various
methods like execute(), executeUpdate(), executeQuery, etc. are provided by
JDBC to interact with the database.
• @Required
• @Autowired
• @Qualifier
• @Resource
• @PostConstruct
• @PreDestroy
Q4. Explain Bean in Spring and List the different Scopes of Spring
bean.
Beans are objects that form the backbone of a Spring application. They are
managed by the Spring IoC container. In other words, a bean is an object that is
instantiated, assembled, and managed by a Spring IoC container.
• Singleton: Only one instance of the bean will be created for each
container. This is the default scope for the spring beans. While using this
scope, make sure spring bean doesn’t have shared instance variables
otherwise it might lead to data inconsistency issues because it’s not
thread-safe.
• Prototype: A new instance will be created every time the bean is
requested.
• Request: This is same as prototype scope, however it’s meant to be
used for web applications. A new instance of the bean will be created for
each HTTP request.
• Session: A new bean will be created for each HTTP session by the
container.
• Global-session: This is used to create global session beans for Portlet
applications.
Q5. Explain the role of DispatcherServlet and ContextLoaderListener.
DispatcherServlet is basically the front controller in the Spring MVC
application as it loads the spring bean configuration file and initializes all the
beans that have been configured. If annotations are enabled, it also scans the
packages to configure any bean annotated with @Component, @Controller,
@Repository or @Service annotations.
ContextL
oaderListener, on the other hand, is the listener to start up and shut down the
WebApplicationContext in Spring root. Some of its important functions includes
tying up the lifecycle of Application Context to the lifecycle of the
ServletContext and automating the creation of ApplicationContext.
Q6. What are the differences between constructor injection and setter
injection?
No. Constructor Injection Setter Injection
1) No Partial Injection Partial Injection
Overrides the constructor property if both are
2) Doesn’t override the setter property
defined.
Creates a new instance if any modificationDoesn’t create a new instance if you change the
3)
occurs property value
4) Better for too many properties Better for a few properties.
Q7. What is autowiring in Spring? What are the autowiring modes?
Autowiring enables the programmer to inject the bean automatically. We don’t
need to write explicit injection logic. Let’s see the code to inject bean using
dependency injection.
1. <bean
id=“emp” class=“com.javatpoint.Employee” autowire=“byName” />
The autowiring modes are given below:
Controller Based:
We can define exception handler methods in our controller classes. All we need
is to annotate these methods with @ExceptionHandler annotation.
Global Exception Handler:
Exception Handling is a cross-cutting concern and Spring provides
@ControllerAdvice annotation that we can use with any class to define our
global exception handler.
HandlerExceptionResolver implementation:
For generic exceptions, most of the times we serve static pages. Spring
Framework provides HandlerExceptionResolver interface that we can
implement to create global exception handler. The reason behind this
additional way to define global exception handler is that Spring framework also
provides default implementation classes that we can define in our spring bean
configuration file to get spring framework exception handling benefits.
Q9. What are some of the important Spring annotations which you
have used?
Some of the Spring annotations that I have used in my project are:
@PathVariable – for mapping dynamic values from the URI to handler method
arguments.
Also, Spring ORM provides support for using Spring declarative transaction
management, so you should utilize that rather than going for hibernate boiler-
plate code for transaction management.
Similarly, hibernate configurations are flexible and can be done from XML
configuration file as well as programmatically.
1. Hibernate eliminates all the boiler-plate code that comes with JDBC and
takes care of managing resources, so we can focus on business logic.
2. Hibernate framework provides support for XML as well as JPA annotations,
that makes our code implementation independent.
3. Hibernate provides a powerful query language (HQL) that is similar to
SQL. However, HQL is fully object-oriented and understands concepts like
inheritance, polymorphism, and association.
4. Hibernate is an open source project from Red Hat Community and used
worldwide. This makes it a better choice than others because learning
curve is small and there are tons of online documentation and help is
easily available in forums.
5. Hibernate is easy to integrate with other Java EE frameworks, it’s so
popular that Spring Framework provides built-in support for integrating
hibernate with Spring applications.
6. Hibernate supports lazy initialization using proxy objects and perform
actual database queries only when it’s required.
7. Hibernate cache helps us in getting better performance.
8. For database vendor specific feature, hibernate is suitable because we
can also execute native sql queries.
Overall hibernate is the best choice in current market for ORM tool, it contains
all the features that you will ever need in an ORM tool.
3. Explain Hibernate architecture.
Hibernate has a layered architecture which helps the user to operate without
having to know the underlying APIs. Hibernate makes use of the database and
configuration data to provide persistence services (and persistent objects) to
the application. It includes many objects such as persistent object, session
factory, transaction factory, connection factory, session, transaction etc.
1. Hibernate removes a lot of boiler-plate code that comes with JDBC API,
the code looks cleaner and readable.
2. Hibernate supports inheritance, associations, and collections. These
features are not present with JDBC API.
3. Hibernate implicitly provides transaction management, in fact, most of
the queries can’t be executed outside transaction. In JDBC API, we need
to write code for transaction management using commit and rollback.
4. JDBC API throws SQLException that is a checked exception, so we need to
write a lot of try-catch block code. Most of the times it’s redundant in
every JDBC call and used for transaction management. Hibernate wraps
JDBC exceptions and throw JDBCException or HibernateException un-
checked exception, so we don’t need to write code to handle it. Hibernate
built-in transaction management removes the usage of try-catch blocks.
5. Hibernate Query Language (HQL) is more object-oriented and close to
Java programming language. For JDBC, we need to write native SQL
queries.
6. Hibernate supports caching that is better for performance, JDBC queries
are not cached hence performance is low.
7. Hibernate provides option through which we can create database tables
too, for JDBC tables must exist in the database.
8. Hibernate configuration helps us in using JDBC like connection as well as
JNDI DataSource for the connection pool. This is a very important feature
in enterprise application and completely missing in JDBC API.
9. Hibernate supports JPA annotations, so the code is independent of the
implementation and easily replaceable with other ORM tools. JDBC code
is very tightly coupled with the application.
Object Type
1) out JspWriter
2) request HttpServletRequest
3) response HttpServletResponse
4) config ServletConfig
5) session HttpSession
6) application ServletContext
7) pageContext PageContext
8) page Object
9) exception Throwable
3. What are the differences between include directive and include
action?
include directive include action
The include directive includes the content at The include action includes the content at request
page translation time. time.
The include directive includes the original The include action doesn’t include the original
content of the page so page size increases at content rather invokes the include() method of
runtime. Vendor provided class.
It’s better for static pages. It’s better for dynamic pages.
4. How to disable caching on back button of the browser?
<%
response.setHeader(“Cache-Control”,”no-store”);
response.setHeader(“Pragma”,”no-cache”);
response.setHeader (“Expires”, “0”); //prevents caching at the
proxy server
%>
1. core tags
2. sql tags
3. xml tags
4. internationalization tags
5. functions tags
6. How to disable session in JSP?
1. <%@ page session=“false” %>
7. How to delete a Cookie in a JSP?
The following code explains how to delete a Cookie in a JSP :
11. How will you use JSP EL in order to get the HTTP method name?
Using pageContext JSP EL implicit object you can get the request object
reference and make use of the dot operator to retrieve the HTTP method name
in the JSP page. The JSP EL code for this purpose will look like $
{pageContext.request.method}.
While exceptions are conditions that occur because of bad input or human error
etc. e.g. FileNotFoundException will be thrown if the specified file does not
exist. Or a NullPointerException will take place if you try using a null reference.
In most of the cases it is possible to recover from an exception (probably by
giving the user feedback for entering proper values etc.
1. try
2. catch
3. finally
4. throw
5. throws
Q3. What are the differences between Checked Exception and
Unchecked Exception?
Checked Exception
• The classes that extend Throwable class except RuntimeException and
Error are known as checked exceptions.
• Checked exceptions are checked at compile-time.
• Example: IOException, SQLException etc.
Unchecked Exception
• The classes that extend RuntimeException are known as unchecked
exceptions.
• Unchecked exceptions are not checked at compile-time.
• Example: ArithmeticException, NullPointerException etc.
Q4. What are the different ways of thread usage?
There are two ways to create a thread:
The run() method creates a parallel thread in your programme. When run()
returns, the thread will come to an end.
The run() method creates a parallel thread in your programme. When run()
returns, the thread will come to an end.
Within the run() method, you must specify the thread’s code.
Like any other method, the run() method can call other methods, use other
classes, and define variables.
Java is always pass-by-value. This means that it creates a copy of the contents
of the parameter in memory. In Java, object variables always refer to the
memory heap’s real object.
Q5. Will the finally block get executed when the return statement is
written at the end of try block and catch block as shown below?
The finally block always gets executed even hen the return statement is written
at the end of the try block and the catch block. It always executes , whether
there is an exception or not. There are only a few situations in which the finally
block does not execute, such as VM crash, power failure, software crash, etc. If
you don’t want to execute the finally block, you need to call the System.exit()
method explicitly in the finally block.
New-
When a thread is created, and before the program starts the thread, it is in the
new state. It is also referred to as a born thread.
Runnable
When a thread is started, it is in the Runnable state. In this state, the thread is
executing its task.
Waiting
Sometimes, a thread goes to the waiting state, where it remains idle because
another thread is executing. When the other thread has finished, the waiting
thread again comes into the running state.
Timed Waiting
In timed waiting, the thread goes to waiting state. But, it remains in waiting
state for only a specified interval of time after which it starts executing.It
remains waiting either till the time interval ends or till the other thread has
finished.
Terminated
Q8. What purpose do the keywords final, finally, and finalize fulfill?
Final:
Final is used to apply restrictions on class, method, and variable. A final class
can’t be inherited, final method can’t be overridden and final variable value
can’t be changed. Let’s take a look at the example below to understand it
better.
class FinalVarExample {
1
public static void main( String args[])
2
{
3
final int a=10; // Final variable
4
a=50; //Error as value can't be
5
changed
6
}
Finally
Finally is used to place important code, it will be executed whether the
exception is handled or not. Let’s take a look at the example below to
understand it better.
class FinallyExample {
1
public static void main(String args[]){
2
try {
3
int x=100;
4
}
5
catch(Exception e) {
6
System.out.println(e);
7
}
8
finally {
9
System.out.println("finally block is
10
executing");}
11
}}
12
}
Finalize
Finalize is used to perform clean up processing just before the object is garbage
collected. Let’s take a look at the example below to understand it better.
1class FinalizeExample {
2public void finalize() {
3System.out.println("Finalize is called");
4}
5public static void main(String args[])
6{
7FinalizeExample f1=new FinalizeExample();
8FinalizeExample f2=new FinalizeExample();
9f1= NULL;
10f2=NULL;
11System.gc();
12}
13}
Throwable is a parent class of all Exception classes. There are two types of
Exceptions: Checked exceptions and UncheckedExceptions or
RunTimeExceptions. Both type of exceptions extends Exception class whereas
errors are further classified into Virtual Machine error and Assertion error.
Q16. Can we write multiple catch blocks under single try block?
Yes we can have multiple catch blocks under single try block but the approach
should be from specific to general. Let’s understand this with a programmatic
example.
public class Example {
1
public static void main(String args[]) {
2
try {
3
int a[]= new int[10];
4
a[10]= 10/0;
5
}
6
catch(ArithmeticException e)
7
{
8
System.out.println("Arithmetic exception in first catch block");
9
}
10
catch(ArrayIndexOutOfBoundsException e)
11
{
12
System.out.println("Array index out of bounds in second catch
13
block");
14
}
15
catch(Exception e)
16
{
17
System.out.println("Any exception in third catch block");
18
}
19
}
• By implementing the Runnable interface.
• By extending the Thread
Q21. What are the different types of garbage collectors in Java?
Garbage collection in Java a program which helps in implicit memory
management. Since in Java, using the new keyword you can create objects
dynamically, which once created will consume some memory. Once the job is
done and there are no more references left to the object, Java using garbage
collection destroys the object and relieves the memory occupied by it. Java
provides four types of garbage collectors: