Table of Contents
- 1. Guess the output of below program.
- 2. Guess the output of below program.
- 3. Guess the output of below program.
- 4. What will happen in case of below program?
- 5. What will happen in case of below program?
- 6. What will happen in case of below program?
- 7. Guess the output of below program.
- 8. Guess the output of below program.
- 9. How to decide young generation and old generation size for your application?
- 10. What is garbage collection in java?
- 11. What are types of garbage collectors in java?
- 12. What is difference between Collection.synchronizedMap(map) and ConcurrentHashMap?
- 13. What will happen when you run below code
- 14. Write a program to print odd even numbers using threads in sequence?
- 15. Which design pattern you have used in your project?
- 16. What is double level locking in singleton design pattern?
- 17. Write a program to implement producer-consumer problem using BlockingQueue?
- 18. Have you worked on Java 8? Can you share major changes in Java 8?
- 19. Have you worked on Serialization? Can you tell difference between Serializable and [Externalizable](https://java2blog.com/externalizable-in-java/ “Externalizable”)?
- 20. How will you detect memory leak in your application?
In this post, we will see Java interview questions for 5 to 6 years experience.
When you have 5 years of experience as java developer, you need to have a good understanding of collections, multithreading concepts.
If you are looking for the below queries then this post will help you as well.
- Java interview questions for 4 years experience
- Java interview questions for 6 years experience
- Java interview questions for 7 years experience
Here are some questions which are most asked for 5 years of experience java programmers. You might find some of the questions very easy but believe me most developers failed to answer these questions.
1. Guess the output of below program.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
package org.arpit.java2blog; class A { void m1() { System.out.println("In m1 A"); } } class B extends A { void m1() { System.out.println("In m1 B"); } void m2() { System.out.println("In m2 B"); } } public class Test { public static void main(String[] args) { A a=new B(); a.m2(); } } |
What will be the output?
A. In m2 B
B. Compile time error
C. Runtime error
2. Guess the output of below program.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package org.arpit.java2blog; class A { void m1() throws ArrayIndexOutOfBoundsException { System.out.println("In m1 A"); } } class B extends A { void m1() throws IndexOutOfBoundsException { System.out.println("In m1 B"); } } public class Test { public static void main(String[] args) { A a=new B(); a.m1(); } } |
What will be the output?
A. In m1 B
B. Compile time error
C. Runtime error
3. Guess the output of below program.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package org.arpit.java2blog; import java.io.IOException; class A { void m1() throws IOException { System.out.println("In m1 A"); } } class B extends A { void m1() throws Exception { System.out.println("In m1 B"); } } public class Test { public static void main(String[] args) { A a=new B(); try { a.m1(); } catch (IOException e) { e.printStackTrace(); } } } |
What will be the output?
A. In m1 B
B. Compile-time error
C. Runtime error
4. What will happen in case of below program?
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class A { synchronized void m1() { System.out.println("In m1 A"); } void m2() { System.out.println("In m2 A"); } } |
There are two threads T1 and T2. T1 is accessing m1 method. Will T2 be able to access m2 method on the same instance at the same time?
5. What will happen in case of below program?
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class A { synchronized void m1() { System.out.println("In m1 A"); } synchronized void m2() { System.out.println("In m2 A"); } } |
There are two threads T1 and T2. T1 is accessing m1 method. Will T2 be able to access m2 method on the same instance at the same time?
6. What will happen in case of below program?
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class A { synchronized static void m1() { System.out.println("In m1 A"); } synchronized void m2() { System.out.println("In m2 A"); } } |
There are two threads T1 and T2. T1 is accessing m1 method. Will T2 be able to access m2 method on the same instance at the same time?
7. Guess the output of below program.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package org.arpit.java2blog; import java.util.HashSet; public class Customer { String name; int age; Customer(String name,int age) { this.name=name; this.age=age; } public static void main(String[] args) { Customer c1= new Customer("John",20); Customer c2= new Customer("John",20); HashSet<Customer> customerSet=new HashSet<>(); customerSet.add(c1); customerSet.add(c2); System.out.println(customerSet.size()); } // getters and setters } |
8. Guess the output of below program.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
package org.arpit.java2blog; public class Employee { String name; int age; public Employee(String name,int age) { this.name=name; this.age=age; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Employee other = (Employee) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } |
Main class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package org.arpit.java2blog; import java.util.HashMap; import java.util.Map; public class HashMapMain { public static void main(String[] args) { Employee emp1=new Employee("Martin",27); Map<Employee,String> hm=new HashMap<Employee,String>(); hm.put(emp1, "Verified"); emp1.setName("John"); System.out.println(hm.get(emp1)); } } |
9. How to decide young generation and old generation size for your application?
It depends on nature of application.
If you have lots of temporary objects then there will be lot of minor gc. You can provide arguments XX:NewRatio=1 to distribute 50% to young generation and 50% to old.
By default, NewRatio=2 hence young Generation is 1/3 of total heap.
Similarly, If you have too many long-lived objects, then you might need to increase the size of tenure space by putting high value of NewRatio.
10. What is garbage collection in java?
Garbage collection is the process of identifying used and unused objects on java heap and removing unused object from the heap.
A live object means an object is still being referred to some part of program. Unused object means object is not being referred by any part of program and is eligible for garbage collection.
Programmer does not have to do manual garbage collection like C or C++. Java takes care of
11. What are types of garbage collectors in java?
You can see a detailed answer over here.
12. What is difference between Collection.synchronizedMap(map) and ConcurrentHashMap?
When you make map thread safe by using Collection.synchronizedMap(map), it locks whole map object, but ConcurrentHashMap does not lock the whole map, it just locks part of it(Segment).
You can read more about ConcurrentHashMap over here.
13. What will happen when you run below code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package org.arpit.java2blog; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; public class IterateMapMain { public static void main(String args[]) { // HashMap with Country as key and capital as value HashMap<String,String> map=new HashMap<String,String>(); map.put("India","Delhi"); map.put("Japan","Tokyo"); map.put("France","Paris"); map.put("Russia","Moscow"); // Iterating java iterator System.out.println("Iterating java Iterator"); Iterator<String> countryKeySetIterator=map.keySet().iterator(); while(countryKeySetIterator.hasNext()){ String countryKey=countryKeySetIterator.next(); map.put("Nepal", "KathMandu"); System.out.println(countryKey); } System.out.println("-----------------------------"); } } |
14. Write a program to print odd even numbers using threads in sequence?
Here is the program to print odd and even numbers using threads in sequence.
15. Which design pattern you have used in your project?
You can name few design patterns such as Singleton, Observer etc. which you might have used in your project.
16. What is double level locking in singleton design pattern?
Double level locking in Singleton design pattern is used to make it thread-safe.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public static Singleton getInstance() { if (_instance == null) { // Single Checked synchronized (Singleton.class) { if (_instance == null)// Double checked { _instance = new Singleton(); } } } return _instance; } |
Let’s say two threads(T1 and T2) checked for null and both reached at synchronized (Singleton.class). T1 gets the lock and create instance of Singleton and return. Now T2 enters in a synchronized block, as we have checked for null again, it will not create object again.
17. Write a program to implement producer-consumer problem using BlockingQueue?
You can find detailed answer over here
If you have worked on Java 8, you can share major changes such as Stream, lambda expression, defaults method in interface etc.
19. Have you worked on Serialization? Can you tell difference between Serializable and [Externalizable](https://java2blog.com/externalizable-in-java/ “Externalizable”)?
You can find detailed answer over here
20. How will you detect memory leak in your application?
There is no simple answer to this question. You can take thread dump via JVisualVM and do the analysis in eclipse memory analyzer tool.
You may also like:
- Java Collections interview questions
- Java String interview questions
- OOPs interview questions in java
- Java Multithreading interview questions
- Exceptional handling interview questions in java
- Java Serialization interview questions in java
- Method overloading and overriding interview questions
- web services interview questions
- restful web services interview questions
- Data structure and algorithm Interview Questions
- Spring interview questions
- Hibernate interview questions
That’s all about Java interview questions for 5 to 6 years experience.
Excellent questions.
nearly 4 question i have missed
Thaks a lot for this post, its just up to mark.
Very detailed and logical questions but short and effective explanation. Thank you Sir.
Excellent questions….