Home/Blog/Interview Prep/Java 8: Functional programming interview questions
Home/Blog/Interview Prep/Java 8: Functional programming interview questions

Java 8: Functional programming interview questions

10 min read
Feb 07, 2022

Become a Software Engineer in Months, Not Years

From your first line of code, to your first day on the job — Educative has you covered. Join 2M+ developers learning in-demand programming skills.

The key contribution that Java 8 introduced to the Java programming model is functional programming. This article focuses on questions related to functional programming, and some other significant changes that the Java 8 release introduced.

We’ll go over examples of interview questions related to Lambda calculus, functional interfaces, and more to test your knowledge of these concepts.

Let’s get started!

Java 8 interview questions and answers#

1. What important features were introduced in Java 8?#

These are some of the core concepts and features included with the Java 8 release. Understanding these concepts will not only prepare you for common Java-related interview questions, but will also help you be a better programmer in general. The most important features added were:

  • Lambda expressions are an anonymous, classless function.
  • Method references are shorthand notations of lambda expressions used to call methods.
  • Functional interfaces are interfaces with a single abstract method.
  • Default methods enabled backward compatibility by allowing developers to add new methods to an interface without needing to modify the implementation class.
  • Static methods belong only to the interface, so implementation of this method can only be written in the interface itself.
  • Stream APIs are used to perform aggregate operations on elements returned from various data sources (such as collections or arrays).
  • Date-Time APIs improved on the old design by making them more readable, and easier to use with differing time zones.

2. What is a lambda expression, and what is its ideal use case?#

A lambda expression is a function that can be referenced and passed around as an object. Lambda expressions helped introduce the functional programming paradigm to Java. Most Java functions exist inside an object’s scope, but lambda expressions do not and can be called from anywhere in the program.

Lambda expressions are often used to express instances of single-method classes more clearly and compactly than if you used the syntax of anonymous classes.

3. Explain the syntax of a lambda expression.#

A lambda expression consists of:

  • Arguments: Formal parameters enclosed in parentheses. A lambda expression can have zero or more parameters.
  • The array token ->: Points arguments to the body of the lambda expression.
  • Body: Contains expressions or statements. If there is only one statement, curly braces are not required.
(Arguments list)->{expression;} or
(Arguments list)->{statements;}

4. Execute a thread using a lambda expression.#

Here’s an example of how you would execute a thread using a lambda expression:

public class LambdaThread {
public static void main(String[] args) {
 New Thread(()->System.out.println("Executing thread")).start();
   }
} 

5. What is a method reference?#

A method reference is a type of lambda expression used to refer to the method of a functional interface. Lambda expressions are used to create anonymous methods, but when you want to call an existing method, you can make reading your code easier by calling that method by its name. So, a method reference can be used to replace lambda expressions when calling existing methods.

6. What is a functional interface?#

A functional interface in Java 8 is an interface that can only have one abstract method. Functional interfaces are also referred to as SAM interfaces, or, Single Abstract Method interfaces. However, they can contain any number of default or static methods.

The @FunctionalInterface annotation is optional and can be used to prevent functional interfaces from having more than one abstract method.

7. What are some commonly used functional interface types?#

Java 8 introduced four types of functional interfaces:

  • Consumer: Accepts an argument, returns nothing.
  • Function: Accepts an argument, returns a value.
  • Predicate: Accepts an argument, returns a boolean value.
  • Supplier: Does not accept an argument, returns a value.

8. What is a default method? What is a static method?#

Default: The default method was introduced in Java 8 to allow for default implementations of methods within interfaces. This meant that existing interfaces could be backward compatible with their older versions. Lambda expressions could be used without having to provide the implementation code in the implementation class.

Default methods can be overridden by classes that implement these interfaces.

Static: The static method introduced in Java 8 functions similarly to the default methods but cannot be overridden when implementing class.

They are associated with the class in which they exist and can be called without creating an instance of that class.

9. What conditions must be fulfilled to match a lambda expression against a functional interface?#

There are three conditions that must be satisfied: The functional interface must only have one unimplemented method. The parameters within the method must match the parameters of the lambda expression. The return type of the method must match the return type of the lambda expression.

10. What is the Optional class?#

Optional is a value-based class introduced in Java 8 as a container object that can use the boolean isPresent() method to check for a non-null value inside itself.

This can make your code easier to read because instead of returning a RuntimeException:

Exception in thread "main" java.lang.NullPointerException

The Optional class can be used to run your program without crashing it by returning an alternate block of code that you specify.

Note: You must import java.util.package to use the Optional class.

11. What are the advantages of using Date-Time APIs introduced in Java 8?#

The new Date-Time APIs are faster than their predecessors, thread-safe, and compliant with ISO standards.

Developers had previously struggled with writing code that accounted for differences in time zones. To solve this, Java 8 included separate classes for handling local date-time when the use of timezones was not required and zoned date-time for when they were.

12. What are some Date-Time APIs, and what do they do?#

  • Local: LocalDate, LocalTime, and LocalDateTime are classes that represent the local date and time of the person using the program.

    • LocalDate: Displays date in (year, month, day (yyyy-MM-dd) format.
    • LocalTime: Displays time in (hour, minute, second, and nanosecond (HH-mm-ss-ns)) format.
    • LocalDateTime: Displays both date and time in (yyyy-MM-dd-HH-mm-ss-ns) format.
  • Zoned:

    • ZonedDateTime: Immutable class storing all date and time fields, and a time-zone that can be used with ZoneOffset to handle ambiguous local date-times.

13. Write a program that displays the current date and time.#

Here’s one example of how you could implement this:

import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
LocalDateTime exampleProgram = LocalDateTime.now();
System.out.println(exampleProgram);
}
}

Answer any Java interview problem by learning the patterns behind common questions.

Cover
Grokking the Coding Interview Patterns

With thousands of potential questions to account for, preparing for the coding interview can feel like an impossible challenge. Yet with a strategic approach, coding interview prep doesn’t have to take more than a few weeks. Stop drilling endless sets of practice problems, and prepare more efficiently by learning coding interview patterns. This course teaches you the underlying patterns behind common coding interview questions. By learning these essential patterns, you will be able to unpack and answer any problem the right way — just by assessing the problem statement. This approach was created by FAANG hiring managers to help you prepare for the typical rounds of interviews at major tech companies like Apple, Google, Meta, Microsoft, and Amazon. Before long, you will have the skills you need to unlock even the most challenging questions, grok the coding interview, and level up your career with confidence. This course is also available in JavaScript, Python, Go, and C++ — with more coming soon!

85hrs
Intermediate
301 Challenges
302 Quizzes

14. What is the Stream API, and how is it used?#

The Stream API is used to convey collections of objects or primitives from a data source through a “stream” that performs computational operations on the various data elements passing through.

Three main components of a Stream:

  • A data source.
  • A set of intermediate operations to process the data.
  • A sole terminal operation to return the result.

Streams are used alongside the Collectors class to filter and manipulate elements, making them ideal for projects that involve database operations, pipeline operations, or parallel processing. Streams function similarly to loops but are easier to read at a glance, and tend to be better at processing large data lists. For smaller data lists, loops are sufficient.

15. What is a collector?#

When all computational operations in a stream have been performed on the elements passing through, a collector is used to combine the final results and return them as lists or strings.

To learn more about collection, check out Collections in Java, which walks you through one of the most important topics in Java programming.

The course covers:

  • How data is modified within collections.
  • How to sort a collection.
  • How to make a collection thread-safe.
  • And more!

16. What are intermediate operations, and what do they do?#

Stream intermediate operations return another Stream as a result, allowing you to call multiple operations as a query. Intermediate operations are considered “lazy” because they do not evaluate until a terminal operation initiates.

  • map(): Returns the results of a Stream after a given function is applied to the elements of a Stream.
  • filter(): Returns a Stream consisting of elements that match a given predicate (another type of functional interface).
  • sorted(): Returns the elements of a Stream after they have been sorted.

Other intermediate operations include:

  • distinct()
  • flatMap()
  • limit()
  • peek()
  • skip()

17. What are terminal operations, and what do they do?#

Terminal operations denote the end of a Stream and return the result.

  • collect(): Returns the collective result of all intermediate operations performed on the Stream.
  • forEach(): Accepts a consumer and iterates through each element of a Stream.
  • reduce(): Reduces the elements of a Stream and returns the result as a single value.
  • count(): Returns the number of elements in a Stream.
  • min(): Returns the smallest element from a Stream.
  • max(): Returns the greatest element from a Stream.

18. Collect Stream elements into a List using the toList() method.#

Here’s an example solution:

import java.util.List; 
import java.util.stream.Stream;
import java.util.stream.Collectors;
 
public class Main {
   public static void main(String[] args) {
       List<Integer> list = Stream.of(1, 2, 3).collect(Collectors.toList());  
   }
import java.util.List;
import java.util.stream.Stream;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> list = Stream.of(1, 2, 3).collect(Collectors.toList());
}
}

19. Determine the number of elements in a given Stream.#

To find the number of elements in a given Stream, use the .count() operation.

import java.util.List;
import java.util.stream.Stream;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> list = Stream.of(1, 2, 3).collect(Collectors.toList());
Long count = list.stream().collect(Collectors.counting());
System.out.print(count);
}
}

20. What is the random keyword used for?#

In Java 8, the random keyword can be used to generate random values.

21. What is a supplier?#

A Java 8 supplier is a common type of functional interface in the Standard Library that does not accept any parameters as arguments.

22. What is a consumer?#

A Java 8 consumer is another common type of functional interface with a single argument.

Unlike a predicate, another single argument functional interface, a consumer accepts arguments but does not return any values.

23. What’s the syntax for a predicate interface?#

Predicates are functional interfaces that accept an object and return a Boolean value.

The syntax for this is:

public boolean test(T object){
	Return boolean;
}

24. What is functional programming?#

  • Functional programming is a declarative programming paradigm where programs are constructed with sequential functions rather than statements.

  • Functions can be independent and reusable, allowing statements to execute in any order, regardless of the program state.

Answer any Java interview problem by learning the patterns behind common questions.

Cover
Grokking the Coding Interview Patterns

With thousands of potential questions to account for, preparing for the coding interview can feel like an impossible challenge. Yet with a strategic approach, coding interview prep doesn’t have to take more than a few weeks. Stop drilling endless sets of practice problems, and prepare more efficiently by learning coding interview patterns. This course teaches you the underlying patterns behind common coding interview questions. By learning these essential patterns, you will be able to unpack and answer any problem the right way — just by assessing the problem statement. This approach was created by FAANG hiring managers to help you prepare for the typical rounds of interviews at major tech companies like Apple, Google, Meta, Microsoft, and Amazon. Before long, you will have the skills you need to unlock even the most challenging questions, grok the coding interview, and level up your career with confidence. This course is also available in JavaScript, Python, Go, and C++ — with more coming soon!

85hrs
Intermediate
301 Challenges
302 Quizzes

Wrapping up and additional resources#

In summary, learning Java 8 is absolutely worth it if writing efficient, readable, reliable code sounds appealing to you. The popularity of Java 8 is another good reason to familiarize yourself with its concepts, as it’s likely that you’ll come across programs written in Java 8 at some point in your career.

Also, the core concepts introduced in Java 8 are great to know for anyone who wants to be a better, more versatile programmer that can collaborate in a broader range of Java projects.

At Educative, we’re passionate about advancing developers’ careers. That’s why we’ve created the following resources to help you master Java 8 and land the career of your dreams:

Happy Learning!

Continue learning about Java interview prep#


Written By:
 
Join 2.5 million developers at
Explore the catalog

Free Resources