This time its servlet interview questions, I was thinking what to pick for my interview series and then I thought about J2EE and Servlet is my favorite on that space. Servlet is an important part of any J2EE development and serves as Controller on many web MVC frameworks and that’s why it’s quite popular on J2EE interviews. These Servlet questions are based on my experience as well as collected by friends and colleague and they are not only good for interview practice but also shows a new direction of learning for anyone who is not very familiar with servlet technology.
As said earlier this interview question article is part of my earlier series java interview questions , UNIX command interview questions and Java threading interview questions.
You can find answers to all these questions on google but I have also listed my answers for quick reference.
Servlet Questions Asked in Interview
Question 1: In web.xml file <load-on-startup>1</load-on-startup> is defined between <servlet></servlet> tag what does it means. (detailed answer)
Ans: whenever we request for any servlet the servlet container will initialize the servlet and load it which is defined in our config file called web.xml by default it will not initialize when our context is loaded .defining like this <load-on-startup>1</load-on-startup> is also known as pre-initialization of servlet means now the servlet for which we have defined this tag has been initialized in starting when context is loaded before getting any request.When this servlet question was asked to me in an interview few years back , I was not even aware of this element but this questions pointed me to look DTD of web.xml and understand other elements as well.
Question 2: How can we create deadlock condition on our servlet? (detailed answer)
Ans: one simple way to call doPost() method inside doGet() and doGet()method inside doPost() it will create deadlock situation for a servlet. This is rather a simple servlet interview questions but yet tricky if you don’t think of it J
Question 3: For initializing a servlet can we use a constructor in place of init()? (detailed answer)
Ans: No, we can not use constructor for initializing a servlet because for initialization we need an object of servletConfig using this object we get all the parameter which are defined in deployment descriptor for initializing a servlet and in servlet class we have only default constructor according to older version of java so if we want to pass a Config object we don’t have parametrized constructor and apart from this servlet is loaded and initialized by container so it's a job of container to call the method according to servlet specification they have lifecycle method so init() method is called firstly.
More important Java doesn't allow interfaces to declare constructors. These kinds of servlet interview questions are quite popular on service based companies who just want to dig one level more. You can also refer Programming Interviews Exposed for more of such questions.
Question 4: Why super.init (config) is the first statement inside init(config) method. (detailed answer)
Ans: This will be the first statement if we are overriding the init(config) method by this way we will store the config object for future reference and we can use by getServletConfig() to get information about config object if will not do this config object will be lost and we have only one way to get config object because servlet pass config object only in init method . Without doing this if we call the ServletConfig method will get NullPointerException.
Question5: Can we call destroy() method inside the init() method is yes what will happen? (detailed answer)
Ans: Yes we can call like this but if we have not overridden this method container will call the default method and nothing will happen.after calling this if any we have overridden the method then the code written inside is executed.
Question 6: How can we refresh servlet on client and server side automatically? (detailed answer)
Ans: On the client side we can use Meta HTTP refresh and server side we can use server push.
Question 7: How can you get the information about one servlet context in another servlet? (detailed answer)
Ans: In context object we can set the attribute which we want on another servlet and we can get that attribute using their name on another servlet.
Context.setAttribute (“name”,” value”)
Question 8: Why we need to implement Single Thread model in the case of Servlet. (detailed answer)
Ans: In J2EE we can implement our servlet in two different ways either by using:
1. Single Thread Model
2. Multithread Model
Depending upon our scenario, if we have implemented single thread means only one instance is going handle one request at a time no two thread will concurrently execute service method of the servlet.
The example in banking accounts where sensitive data is handled mostly this scenario was used this interface is deprecated in Servlet API version 2.4.
As the name signifies multi-thread means a servlet is capable of handling multiple requests at the same time. This servlet interview question was quite popular few years back on entry level but now it's losing its shine.
Question 9: What is servlet collaboration? (detailed answer)
Ans communication between two servlets is called servlet collaboration which is achieved by 3 ways.
1. RequestDispatchers include () and forward() method .
2. Using sendRedirect()method of Response object.
3. Using servlet Context methods
Question 10: What is the difference between ServletConfig and ServletContext? (detailed answer)
Ans: ServletConfig as the name implies provide the information about the configuration of a servlet which is defined inside the web.xml file or we can say deployment descriptor.its a specific object for each servlet.
ServletContext is an application specific object which is shared by all the servlet belongs to one application in one JVM .this is a single object which represents our application and all the servlet access application specific data using this object.servlet also use their method to communicate with the container.
Question 11: Explain Servlet Life Cycle in Java EE environment?
A picture is worth thousand words, here is a diagram which explains the Servlet life cycle:
Question 12: What is the difference between HttpServlet and GenericServlet in Servlet API? (answer)
GenericServlet provides framework to create a Servlet for any protocol e.g. you can write Servlet to receive content from FTP, SMTP etc, while HttpServlet is built-in Servlet provided by Java for handling HTTP requests. See detailed answer for deep discussion.
These Servlet interview questions are good for the quick recap of important concept before appearing on any J2EE interview. Please share if you have come across any other interesting interview question on Servlets.