Review of Java Multithreading for Senior Engineering Interviews
By: Double Pointer
Tags: Technology, Coding Interviews, Tech, Codingbootcamp, Coding

Java Multithreading for Senior Engineering Interviews

Today we’ll be reviewing one of the most popular courses on Educative.io Java Multithreading for Senior Engineering Interviews. This was the first course on concurrency and multi-threading on Educative.io. The real value the course delivers is the aggregation of the basics of Concurrency theory and its practice in Java. The course starts with general theory and then dives into the specifics of Java. However, note that all the topics discussed in the course can be found online for free. The only propriety aspect about the course is the interview questions which are indeed innovative and challenging. For instance, the quintessential concurrency producer/consumer problem is solved using mutex, semaphore and monitor in Java. Usually, you’ll find this problem solved online on various websites and blogs using a single concurrency construct. Seeing the problem get solved by all the different building blocks of concurrency truly drives home how to correctly apply each tool to a given situation. Then there’s also an excellent section on the Java memory model and how it affects multi-threading in Java.

In total there are eighteen interview questions and few are solved using multiple approaches. Questions such as implementing a semaphore using a monitor, difference between semaphore and mutex, thread-safe singleton pattern, use of the volatile keyword, read-write lock, dining philosophers are all problems that make good candidates for interview questions, especially for seasoned engineers. Two of the questions are said to have appeared in interviews for the author at Netflix and Oracle. The author’s linked-in profile lists him as have worked at these two companies. Because of the author’s professional experience, the course feels very practical and industry-orientated rather than academic in nature. The same author also has concurrency courses on Python, Ruby and C#. The Python and Java ones seem more popular than the other two, judging by users’ commentary on Educative’s online forums.

Compared to baeldung.com and tutorials.jenkov.com, the course provides a gist or summary of the concurrency knowledge required for most software engineers. The fundamentals and basics are explained really well along with executable examples that demonstrate race conditions, deadlocks, and other bugs common in the concurrency realm. Baeldung lacks a structured approach to follow when a newbie is learning concurrency while Jenkov doesn’t support executable code snippets. Both, lack a section on interview preparation. However, Educative’s course seems to strike the right balance for beginners and intermediate professionals with just enough detail and practical application in sample problems. We definitely consider the course a great fit for someone new to concurrency or preparing for interviews. On the contrary, if you are already an experienced Java professional then this course is likely not for you. You are probably familiar with the basics and the twists and turns of the Java memory model viz-a-viz concurrency. Any advanced topics can be dug-up online searching on Google. Finally there are areas of improvement in the course such as advanced constructs in Java e.g. CompletableFuture aren’t discussed. Some readers may also not like the UI which is a departure from Educative’s traditional course-UI. The price point of $59 seems a tad bit high too. But on the whole, this is definitely one of the gems Educative.io has to offer!