Wednesday, June 25, 2014

Java/J2EE (Core Java, Spring, HIbernate, JSP, Ajax) Interview Questions

Interview Question
Core Java
Basics
  1. What do you understand by JVM.
  2. Relate JDK and JRE and its uses.
  3. How to generate class file from java file
javac Test.java

  1. If i create java file in windows and compiles in windows and run in linux .What I have to do to make it compatible.
  2. What are different ways of instantiating a class.
MyObject object = new MyObject();

            MyObject object = (MyObject) Class.forName("subin.rnd.MyObject").newInstance();

           MyObject anotherObject = new MyObject();
           MyObject object = anotherObject.clone();

           ObjectInputStream inStream = new ObjectInputStream(anInputStream );
           MyObject object = (MyObject) inStream.readObject();





  1. Describe public, private and protected modifiers.
  2. Say I have Test class with main method.
Public class Tests {
public static void main(String[] args) {
testMethod();
}


private static void testMethod() {
testMethod();
}
}

Stack overflow error

  1. Interface vs abstract class
  2. Method overloading and overriding, which polymorphism works at runtime and compile time, give examples.
  3. Autoboxing and unboxing.

Exception handling
  1. What is hierarchy
  2. Try, catch and finally. Use of catch, finally
  3. What to do if I do not want to execute finally
  4. If I want to write my own exception class
  5. If I write return statement in try. Below question. Output..?? ab

public class HelloWorld{
public static void main(String []args){
String s= "";
s = getMsg();
System.out.println(s);
}
private static String getMsg(){
String a = "a";
try{
a=a+"b";
return a;
}catch(Exception e){
}finally{
a=a+"c";
System.out.println(a);
}
return "fi";
}
}
Generic
  1. What are generics and when and why were they introduced.
  2. When does generics come into play, compile time or runtime or both.
  3. What happens to generic code when you compile a class.
  4. Design a generic class which can except any type employee id.

Log4J
  1. Levels and there logging hierarchy.
Serialization
  1. What is serialization and why do we need serialization.
  2. How can I achieve serialization
  3. What are the methods present in serializable interface.
  4. What is the use of serial version id.
  5. What I will do if I do not want to serialize a particular attribute of the object.
  6. What is externalization.

Collections
  1. What are different types of collections used.
  2. Diff between hashmap and hashtable.
  3. What is concurrent hashmap
  4. How hashing and equals method works
  5. Hashset internal working – don’t add equals and hash method , then output
  6. Treeset add objects of simple class – exception occurs
  7. Comparator and comparable.
  8. Describe about collection and collections.
  9. Iterator and list Iterator
  10. Concurrent modification exception example.
  11. FailFastVSFailSafe
Threads
  1. How to implement threads
  2. Diff between booth implementation
  3. Static vs instance method calling.
//Creating new instance for every thread access.
 ExtendsThread tc1 = new ExtendsThread();

//Multiple threads share the same object.
 ImplementsRunnable rc = new ImplementsRunnable();

  1. Idea about fork joins
Java Design pattern - singleton
JSP
  1. JSP lifecycle
JSP Page Translation:
jSP Page Compilation:
Class Loading:
Execution phase:
Initialization:
jspService() execution:
jspDestroy() execution

  1. What if I write destroy method in jsp, will page destroy or show
  2. Dynamic vs static include
The syntax for static include is <%@ include file=”filename.jsp” %> and the syntax for dynamic include is <jsp:include page=”filename.jsp” />

  1. Difference between Scriptlet and Declaration
Declaration :- Used for declaring variables and methods.
example : <%!  int num =0;  %>
During translation and compilation phase of JSP life cycle all variables declared in jsp declaration become instance variables of servlet class and all methods become instance methods. Since instance variables are automatically initialized,all variables declared in jsp declaration section gets their default values.
Scriptlet:- Used for embedding java code fragments in JSP page.
example : <%  num++; %>
During translation phase of JSP Life cycle all scriptlet become part of _jspService() method. So we cannot declare methods in scriptlet since we cannot have methods inside other methods. As the variables declared inside scriptlet will get translated to local variables they must be initialized before use.

Hibernate
  1. Load V/S Get –
The get() method will return a FULL initialized object if nothing is on the session cache, that means several DB hits depending on your mappings. 

While the load() method will return a proxy (or the instance if already initialized), allowing lazy initialization and thus better performance


If load() can’t find the object in the cache or database, an exception is 
thrown. The load() method never returns null. The get() method returns
 
null if the object can’t be found.
 


  1. Cache implementation
  2. Composite key example
  3. Mappings in hibernate
  4. Xml based or annotation based
  5. hibernate_inheritance_strategy
  6. list vs set
  7. referred and owned collections
  8. use of cascade select and orphan removal
  9. hibernate API’s, query, criteria and hql.
  10. Session factory and session
  11. transaction managers
  12. configuring datasource



Spring
  1. Explain Spring DI and IOC
  2. Life cycle of spring bean.
  3. What happens if I have two beans of same name and using in service through injection
  4. Scope of beans
  5. Application context vs bean factory
  6. Spring aop
  7. Spring transactional management and programmatic management
  8. beanPostProcesssor
  9. singletone with dependency of prototype bean
  10. spring singleton vs java singleton
  11. @Autowired
  12. Spring MVC
  13. Init binders
  14. Validators


AJAX
  1. Make ajax request
  2. Get html in response.
  3. Async example
What is ReadWrite Lock? Does ConcurrentHashMap uses ReadWrite Lock?
ReadWrite Lock is an implementation of lock stripping, where two separate locks are used for read and write operation. Since read operation doesn't modify state of object, it's safe to allow multiple access of shared object to multiple reader without locking, and by splitting lock into ReadLock and WriteLock, you can easily do that. Java provides an implementation of ReadWriteLock in form of ReentrantReadWritLock, which is worth looking. Also ConcurrentHashMap doesn't use ReadWriteLock, instead it divides maps into several segments and lock them separately using different locks, which means any given time, only a portion of map is locked, instead of whole map. This question is also very popular on Senior and experienced level Java interviews, expect Interviewer to go into more detail, e.g. asking you to provided an implementation of ReadWriteLock with different policies.

  1. How to make an Object Immutable in Java? Why should you make an Object Immutable?
    Well, Immutability offers several advantage including thread-safety, ability to cache and result in more readable multithreading code. See here to learn how to make object Immutable. Once again, this question can also go into more detail and depending upon your answer, can bring several other questions e.g. when you mention Spring is Immutable, be ready with some reasons on Why String is Immutable in Java.

    11) Which design patterns have you used?
    Always expect design and patterns related question for Senior developer Core Java Interview. It's best to mention any GOF design pattern rather than Singleton or MVC, which almost every other Java developer use it. Your best bet can be Decorator pattern or may be Dependency Injection Pattern, which is quite popular in Spring Framework. It's also good to mention only design pattern, which you have really used in your project and knows it's tradeoffs. As once you mention a particular design pattern say Factory, Interviewer's next question would be, have you used in your project? So be ready with proper example and why you choose a particular pattern.
14)  How  do you prevent SQL Injection in Java Code?
This question is more asked to Java EE developers than core Java developers but still a good question to know, PreparedStatement is the way to go. PreparedStatement not only provides better performance but also shield from SQL Injection attack. If you are working more on Java EE or J2EE side, than you should also be familiar with other security issues including Session Fixation attack or Cross Site Scripting attack and how to resolve them.

Why Java doesn't support multiple inheritance

1) First reason is ambiguity around Diamond problem, consider a class A has foo() method and then B and C derived from A and has there own foo() implementation and now class D derive from B and C using multiple inheritance and if we refer just foo() compiler will not be able to decide which foo() it should invoke. This is also called Diamond problem because structure on this inheritance scenario is similar to 4 edge diamond, see below
           A foo()
           / \
          /   \
   foo() B     C foo()
          \   /
           \ /
            D
           foo()

In my opinion even if we remove the top head of diamond class A and allow multiple inheritances we will see this problem of ambiguity.

How do you detect deadlock in Java ?
though this could have many answers , my version is first I would look the code if I see nested synchronized block or calling one synchronized method from other or trying to get lock on different object then there is good chance of deadlock if developer is not very careful.

other way is to find it when you actually get locked while running the application , try to take thread dump , in Linux you can do this by command "kill -3" , this will print status of all the thread in application log file and you can see which thread is locked on which object.

other way is to use jconsole , jconsole will show you exactly which threads are get locked and on which object.


Why JDBC has all interfaces and no implementation classes
Securing URL parameters.
Sorting algorithms