Multi-threading and concurrency questions are an essential part of any Java interview. If you are going for any Java interview on any Investment bank e.g. Barclays, Citibank, Morgan Stanley for equities front office Java Developer position, you can expect a lot of multi-threading interview questions on your way. Multi-threading and concurrency are favorite topics on Investment banking interviews, especially on electronic trading development jobs and they grill candidate on many tricky java thread interview questions . They just want to ensure that the guy has solid knowledge of multi-threading and concurrent programming in Java because most of them are in the business of performance which provides them a competitive advantage.
For example, high volume and low latency Electronic Trading Systems which are used for Direct to Market (DMA) trading are usually concurrent in nature. Most of the time the focus on microsecond latency, that's why a good knowledge of how to use effectively to minimize latency and improve throughput is important.
These are some of my favorite thread interview questions on Java asked on different on a different time. I am not providing an answer to these thread interview questions but I will give you hint whenever possible, some time hint is also enough to answer. I will update the post further with detailed answers just like I did for 10 Singleton interview questions in Java recently.
After the introduction of concurrency package in JDK 1.5 questions on concurrent utility and concurrent collections were increased e.g. ThreadLocal , BlockingQueue , Counting Semaphore and ConcurrentHashMap become popular.
Same is true for Java 8 and Java 9, where questions on lambda expression and parallel streams, new fork-join pool, CompletableFuture is also on the rise in 2018 and will remain in 2019. Hence you should prepare well for those topics.
Anyway, without any further ado, here is my list of some of the frequently asked Java multithreading and concurrency questions from Java developer Interviews on Investment banks e.g. Barclays, Morgan Stanley, Citibank etc.
1) You have thread T1, T2, and T3, how will you ensure that thread T2 run after T1 and thread T3 run after T2?
This thread interview question is mostly asked in the first round or phone screening round of interview and purpose of this multi-threading question is to check whether the candidate is familiar with the concept of "join" method or not. The answer to this multi-threading questions is simple it can be achieved by using join method of Thread class.
2) What is the advantage of new Lock interface over a synchronized block in Java? You need to implement a high-performance cache which allows multiple readers but the single writer to keep the integrity how will you implement it?
The major advantage of lock interfaces on multi-threaded and concurrent programming is they provide two separate lock for reading and writing which enables you to write high-performance data structure like ConcurrentHashMap and conditional blocking .
This java threads interview question is getting increasingly popular and more and more follow-up questions come based on the answer of the interviewee.
I would strongly suggest reading Locks before appearing for any Java multi-threading interview because nowadays It's heavily used to build cache for an electronic trading system on client and exchange connectivity space.
3) What are differences between wait and sleep method in Java?
Another frequently asked thread interview question in Java mostly appear in a phone interview. The only major difference is to wait for release the lock or monitor while sleep doesn't release any lock or monitor while waiting. The wait is used for inter-thread communication while sleep is used to introduce pause on execution. See my post wait vs sleep in Java for more differences
4) Write code to implement blocking queue in Java?
This is relatively tough java multi-threading interview question which serves many purposes, it checks whether a candidate can actually write Java code using thread or not, it sees how good candidate is on understanding concurrent scenarios and you can ask a lot of follow-up question based upon his code. If he uses wait() and notify() method to implement blocking queue, Once candidate successfully writes it you can ask him to write it again using new Java 5 concurrent classes etc.
5) Write code to solve the Produce consumer problem in Java? ( solution )
Similar to above questions on the thread but more classic in nature, some time interviewer ask follow up questions How do you solve producer consumer problem in Java, well it can be solved in a multiple ways, I have shared one way to solve producer consumer problem using BlockingQueue in Java, so be prepared for surprises. Sometimes they even ask to implement a solution of dining philosopher problem as well.
6) Write a program which will result in deadlock? How will you fix deadlock in Java?
This is my favorite java thread interview question because even though deadlock is quite common while writing multi-threaded concurrent program many candidates not able to write deadlock free code and they simply struggle.
Just ask them you have N resources and N threads and to complete an operation you require all resources.
Here N can be replaced with 2 for the simplest case and higher number to make the question more intimidating. see How to avoid deadlock in java for more information on the deadlock in Java.
7) What is an atomic operation? What are atomic operations in Java?
Simple java thread interview questions, another follow-up is do you need to synchronize an atomic operation? :) You can read more aboutjava synchronization here.
8) What is a volatile keyword in Java? How to use it? How is it different from the synchronized method in Java?
Thread questions based on a volatile keyword in Java has become more popular after changes made on it on Java 5 and Java memory model. It’s good to prepare well about how volatile variables ensures visibility, ordering, and consistency in a concurrent environment.
9) What is a race condition? How will you find and solve race condition?
Another multi-threading question in Java which appear mostly on senior-level interviews. Most interviewer grill on recent race condition you have faced and how did you solve it and sometime they will write sample code and ask you detect race condition. See my post on the Race condition in Java for more information. In my opinion, this is one of the best java thread interview questions and can really test the candidate's experience on solving race condition or writing code which is free of data race or any other race condition. Best book to get the mastery of this topic is "Concurrency practices in Java'".
10) How will you take thread dump in Java? How will you analyze Thread dump?
In UNIX you can use kill -3 and then thread dump will print on log on windows you can use "CTRL+Break" . Rather simple and focus thread interview question but can get tricky if he asks how you analyze it. A thread dump can be useful to analyze deadlock situations as well.
11) Why we call start() method which in turns calls run() method, why not we directly call run() method?
Another classic java multi-threading interview question This was my original doubt when I started programming in the thread. Now days mostly asked in a phone interview or first round of interview at mid and junior level java interviews.
The answer to this question is that when you call start() method it creates new Thread and executes code declared in the run() while directly calling run() method doesn’t create any new thread and execute code on the same calling thread. Read my post Difference between start and run method in Thread for more details.
12) How will you awake a blocked thread in Java?
This is tricky question on threading, blocking can result in many ways, if thread is blocked on IO then I don't think there is a way to interrupt the thread, let me know if there is any, on the other hand, if thread is blocked due to result of calling wait() , sleep(), or join() method you can interrupt the thread and it will awake by throwing InterruptedException. See my post How to deal with blocking methods in Java for more information on handling blocked thread.
13) What is the difference between CyclicBarriar and CountdownLatch in Java? ( answer )
New Java thread interview questions mostly to check familiarity with JDK 5 concurrent packages. One difference is that you can reuse CyclicBarrier once the barrier is broken but you can not reuse CountDownLatch. If you want to learn more see Multithreading and Parallel Computing in Java course on Udemy.
14) What is an immutable object? How does it help in writing a concurrent application?
Another classic interview questions on multi-threading, not directly related to the thread but indirectly helps a lot. This java interview question can become more tricky if ask you to write an immutable class or ask you Why String is immutable in Java as a follow-up.
15) What are some common problems you have faced in multi-threading environment? How did you resolve it?
Memory-interference, race conditions, deadlock, livelock, and starvation are an example of some problems comes in multi-threading and concurrent programming. There is no end of a problem if you get it wrong and they will be hard to detect and debug.
This is mostly experienced based interview question on java thread instead of fact-based. You can further see Java Concurrency in Practice Course by Heinz Kabutz for some real-world problems faced in actual high-performance multi-threaded applications.
These were some of my favorite J ava thread interview questions and mostly asked on Investment banks . This list is by no means complete so please contribute some of interesting java thread questions you have faced during the interview. Purpose of this article is to collect and share great interview questions on multi-threading concept which not only helps in the interview but opens the door for learning a new threading concept.
One of the Javarevisited readers, Hemant has contributed some more thread interview questions in Java, though he hasn’t provided answer sand left that job for me, I will certainly do when time allows, just like I have recently updated 10 Singleton interview question in Java with answers.
If you guys know answers to this Java concurrency questions than please post a comment.
Here are his comment “Good questions on multi-threading though you may need to prepare more in order to clear any multi-threading interview, you need to be familiar with the concept of immutability , thread-safety , race condition and many more.
10 or 15 question is good for the quick recap but you at least need to prepare more than 50 questions on threading and concurrency to perform better on Java interview.
You can find some interesting thread question below which is no doubt highly popular –
1) Difference between green thread and native thread in Java?
2) Difference between thread and process? ( answer )
3) What is context switching in multi-threading?
4) Difference between deadlock and livelock, deadlock and starvation?
5) What thread-scheduling algorithm is used in Java?
6) What is thread-scheduler in Java?
7) How do you handle an unhandled exception in the thread?
8) What is thread-group, why its advised not to use thread-group in Java?
9) Why Executor framework is better than creating and managing thread by the application?
10) Difference between Executor and Executors in Java? ( answer )
11) How to find which thread is taking maximum CPU in windows and Linux server?
Apart from practicing these question answers, more important is to understand the concept behind these multi-threading questions simply mugging the answers of these thread interview questions is not going to help because there would be a lot of follow-ups based on your answer and if you haven't mastered the particular thread topic it would be difficult to answer them.
Other Java Interview Questions on different topics you may like to Explore
Top 10 Spring Framework Interview Questions with Answers ( see here )
20 Java Design Pattern Questions asked in Interviews (see here)
10 Frequently asked Servlet Interview Questions with Answers ( see here )
10 JSP Questions from J2EE Interviews ( read here )
12 Good RESTful Web Services Questions from Interviews ( read here )
10 JDBC Interview Questions for Java Programmers ( questions )
15 Java NIO and Networking Interview Questions with Answers ( see here )
15 Data Structure and Algorithm Questions from Java Interviews (read here
Thanks for reading this article so far. If you like these multi-threading and Concurrency Interview questions then please share with your friends and colleagues. If you have any questions or feedback then please drop a note.