Monday, April 22, 2024

Top 50 Java 8 Stream, Lambda, and Functional Programming Interview Questions

Hello guys, if you are preparing for Java interviews and looking for some Java 8 Stream, Lambda Expression, and other Java 8 features then you have come to the right place. Earlier, I have shared 140+ Core Java interview questions, 50 Java Programs from Interviews and 20+ Spring Boot questions and in this article, I am going to share Stream, Lambda expression, and other Java 8 feature-based questions.  Java 8 features are now not remained as good to know features. They have been increasingly adopted by many organizations and most of the new development encourage developers to write code in Java 8 style to take full advantage of massive CPU power available in modern servers like HP 380 Gen 8 servers, also known as G8. 

The shift in programming style is also now visible on Java Interviews with more and more focus putting on Java 8 skills e.g. whether the candidate is familiar with essential Java 8 features like lambda expressions, streams, method reference, and new Date-Time API.

I have seen more and more questions being asked about motivation, implementation, and how Java programs can use new Java 8 features in their day-to-day programming. 

In this article, I have collected many of such Java 8 questions from interviews and put together this list for quick reference before going for an interview.

If you have not learned Java 8 yet, this might be a good time to learn. Even if you are not looking for a job change and not participating in Java interviews, learning Java 8 features, particularly, lambda expression and streams will help you to write better code and take advantage of new performance improvements made in JDK. 

To start with, you can join Learn Java Functional Programming with Lambdas & Streams course by Ranga Karnam on Udemy. It will give you a nice idea of essential Java 8 features like Lambda expressions and Streams and how you can use them in your day-to-day Java tasks like sorting HashMap by values.


10+ Essential Java 8 Features to Learn

Before going into Java 8 interview questions let's revisit some of the important features introduced in Java 8. I have also linked them to the relevant articles in my blog so that you can learn them in-depth if you are new to those features. 

1. Lambda expressions
2. Stream API
3. Method Reference
4. New Date and Time API (JSR 310)
5. Default methods
6. Static methods on interfaces
7. CompleteableFuture
8. Repeatable Annotations
9. StringJoiner
10. Optional
11. Miscellaneous API enhancements

By the way, if you need a comprehensive course to learn Java from scratch then I also suggest you go through The Complete Java Masterclass on Udemy. This 80+ hour course is the most comprehensive and up-to-date course to learn Java online. It's also very affordable and you can get in just $10 on Udemy sales which happens every now and then. 

Top 50 Java 8 Stream, Lambda, and Functional Programming Interview Questions


1. Java 8 Lambda Expressions Interview Questions

Lambda expression is the single most important feature of the Java 8 release. It is the basic block that allows you to write functional code in Java. Lambda is nothing but a way to pass custom code to a function to execute. This was possible earlier only with the Anonymous class which was clumsy, lambda reduced a lot of boilerplate code around that and makes it easy to write functional code in Java. 

1. What is lambda expression in Java? (answer)
Lambda expression is a way to pass code to a method. It's like anonymous function of JavaScript. For example, if a method is expecting an object with just one abstract method like Runnable or Comparable then you can pass a Lambda expression to it. That lambda expression act like the method implementation of the interface or abstract class object it expect. 

2. What are the benefits of using a lambda expression?
It allows you to pass code which means you can pass dynamic code to any method. For example, you can pass different comparison logic to a sort(Comparable cmp) method which is expecting a Comparable implementation. It also reduce boiler plate code which can generate due to use of Anonymous class. So basically you can reduce 10 line of code into 1 using Lambda expression in many cases. 

3. What is a functional interface in Java? (answer)
A functional interface is an interface which is annotated by @FunctionalInterface annotation in Java. Any interface with a single abstract method is also a functional interface in Java like Runnable, Comparable, Comparator etc. 

4. Which method you can pass lambda expression?
You can pass lambda expression to any method which accept a Functional interface object, I mean the one which is either annotated by @FunctionalInterface like Predicate, Consumer, Supplier or any interface or abstract class with just one abstract method like Runnable, Comparable etc. 

5. What is a Single Abstract Method (SAM) interface in Java 8?
Any method which just have one abstract method is know as SAM type in Java. They can also act as Functional interface and any method which accept a functional interface can also accept a lambda expression or method reference 

6. How can we define a Functional interface in Java 8? (answer)
You an use @FunctionalInterface annotation to define a functional interface in Java. You can also declare a SAM type like any class or method with just one abstract method and it can be used as functional interface in Java. 

7. What is the difference between internal and external iterator? (answer)

8. What is a Default Method in an Interface? (answer)
The default methods are methods declared using the default keyword. Before Java 8 you cannot define methods inside the interface but from Java 8 onwards, you can do it by using default methods. 

This is also known as the defender method because it allows you to evolve the interface after release I mean you can now add new methods without breaking all the clients by using the default keyword.

JDK 8 has taken extensive advantage of this and several key methods like forEach(), stream() are added as default methods on existing interfaces like Iterable and Collection here.

9. What is a Spliterator in Java 8? (answer)

10. Why do we need the Default method in a Java 8 Interface? (answer)
The default method was key to the success of Java 8 as it allowed the API designer to add new methods into existing interfaces without breaking all the classes which implement existing popular interfaces like Collection, Iterable, Map, List, etc. 

The forEach() method is a good example of why you need the default method, without the default method, it wouldn't be possible to define that method in Iterable and making it available to all the Collection classes automatically.



2. Java 8 Stream Interview Questions 

Stream API is another important enhancement from Java 8 and probably the next most important API after the Java Collection framework. It actually works nicely with Java collections and you will feel like it's part of Collections itself. Now, let's see some questions from Java 8's Stream API

11. What are the main uses of Stream API in Java 8? (answer)

12. What is map() operation in Java 8?  (answer)

13. What is flatMap() operator in Java 8? (answer)

14. What does a filter() do in Java 8? (answer)

15. What is the difference between map() and flatMap() in Java 8? (answer)

16. What are the differences between Intermediate and Terminal Operations in Java 8 Streams? (answer)
Stream class defines different types of operations you can perform on them like intermediate and terminal. The main difference between them is that you can reuse the stream after an intermediate operator but you cannot reuse the stream after performing a terminal operator.

For example, filter() is an intermediate operator and you can still call another filter, map, or flatMap after calling filter, but forEach() is a terminal operator so you cannot call any other method after calling the forEach() method. Another example of a terminal method is to collect() which allows you to accumulate stream elements into a Collection.

17. What is lazy evaluation in the context of Stream? (answer)
The stream improves performance by doing lazy evaluation like evaluation is not kicked off immediately by calling a method on Stream, it is trigged lazily when a terminal method is called e.g. forEach() or collect(). For example, suppose you have a list with 1 million integers on it and you want to print the first even number. The lazy evaluation will help you here.

18. How do you convert a List to Map in Java 8? (answer)
You can easily do that by using Stream and Collector as shown in the following example

19. What is Supplier Functional Interface? When do you need to use it?

20. What is Predicate Functional Interface? When do you need it?



3. Java 8 Date and Time Interview Questions 

Now, let's see some questions from the new Java Date and Time API, which intends to replace the old Date and Calendar API. I have answered most of these questions already in my blog. You can try to answer yourself first and then you can see the answer to learn more. 

21. How can we get current time by using the Date/Time API of Java 8? (answer)

22. How to parse the date in Java 8? (answer)

23. How to format dates in Java 8? (answer)

24. How to convert Date to LocalDate in Java 8? (answer)

25. How to convert Date to LocalDateTime in Java 8? (answer)

26. What is the difference between LocalDate, LocalDateTime, and ZonedDateTime in Java8? (answer)

27. How do you convert LocalDateTime to ZonedDateTime in Java 8? (answer)

28. How do you find a number of differences between two dates in Java 8? (example)

29. What is the difference between Period and Duration in Java 8? 
While both Period and Duration can be used to calculate the difference between dates in Java there is a subtle difference between them. Duration is the difference between two Instant while Period is the difference between two LocalDate in Java 8. The until() method of LocalDate returns a Period instead of Duration which can be used to show several elapsed days, months, and years between two dates. 

30. How do you get Day, Month, and Year from LocalDate in Java? (answer)


4. Java 8 Features Interview Questions

Now, let's see few more questions from different Java 8 features which include things like RepeatableAnnottion, multiple API enhancements like StringJoiner, Optional class, computeIfAbsent on Map interface, etc. 


31. Can you define methods inside the interface in Java? (answer)
Prior to Java 8, it wasn't possible to define methods inside interfaces because they were inherently abstract, but with Java 8 changes, it's now possible to define both default and static methods inside the interface in Java.

32. What is the purpose of a Static method in an Interface in Java 8? (answer)

33. What is the RepeatableAnnotation feature in Java8? What are its main benefits? (answer)

34. Can we provide an implementation of a method in a Java Interface? (answer)

35. What are the main differences between an interface with a default method and an abstract class in Java 8? (answer)

36. Is it mandatory to use @FunctionalInterface annotation to define a Functional interface in Java 8? (answer)

37. What is Optional in Java 8? (answer)

38. What is the main benefit of using Optional in Java 8? (answer)

39. What is StringJoiner in Java 8? (answer)

40. Difference between String.join() method and StringJoiner in Java 8? (answer)

41. How to read a file in Java 8? (answer)


5. Java 7 Interview Questions

Now, let's see some questions from Java 7 based features to wrap up this article. 

42. What are the major features introduced on JDK? (answer)
Some of the major features introduced in JDK 7 are following:
1) Improved type inference using the diamond operator.
2) Allowing String in switch and case statements
3) Automatic resource management or try-with-resource
4) Fork-Join Framework
5) Underscore in numeric literals
6) Ability to catch multiple exceptions in the single catch block
7) Binary literals with the prefix "0b"
8) Java NIO 2.0 and improved File API
9) G1 Garbage Collectors
10 More precise rethrowing of Exception in Java


43. What is ForkJoinPool in Java? (answer)
The ForkJoinPool is a special thread pool that works on the principle of work-stealing i.e. if a thread is free, it can take up work from the queue of another thread that is overloaded. This results in a more efficient solution.

44. What is Diamond Operator in Java? (answer)
The angle bracket made the diamond operator in Java, it helps with type inference e.g. you don't need to write type again on the right-hand side of the expression. This reduces coding effort and clutter without compromising code readability.

45. What are try-with-resources statements in Java? (answer)
The try-with-resources statement allows automatic closure of resource opened inside to try to block i.e. if you open an InputStream you don't need to call the close() method explicitly, JVM will call for you. This is also known as automatic resource management or ARM. 

The key thing to know is that the resource must implement the AutoClosable interface in order to be used inside try-with-resource statements.

That's all about some of the important Java 8 Interview Questions. These questions will not only help you to do well on interviews focused on Java 8 features but also learn more about the advanced features of Java 8 to improve your day-to-day coding. You should not stop here and try to learn more about the features which you have first heard of and have less practical knowledge.

Further Learning


Other Interview Questions articles you may like
  • 40+ Object-Oriented Interview Questions with Answers (questions)
  • 15 Spring Data JPA Interview Questions (list)
  • 10 Dynamic Programming Problems for Coding interviews (questions)
  • 25 Spring Security Interview Questions with Answers (questions)
  • 5 Best Courses to learn Java Programming  (best courses)
  • 130+ Java Interview Questions with Answers (list)
  • 17 Spring AOP Interview Questions with Answers (list)
  • 20+ JUnit Interview Questions for Java developers (questions)
  • 35 Python Interview Questions for Beginners (python questions)
  • 50+ SQL and Database Phone Interview questions (SQL questions)
  • 20 Spring MVC Interview Questions with answers (spring questions)

Thanks for reading this article so far. If you like these Java 8 interview questions then please share them with your friends and colleagues. If you have any questions or feedback then please drop a note. 


2 comments:

  1. Can you also post answers for all the questions? your explanation of concept is to the point and it is really nice

    ReplyDelete