Introduction
Java 8 was one of the most revolutionary releases in Java history. It introduced Functional Programming concepts into Java and added several features that changed the way modern Java applications are developed.
This article contains 50 interview-focused MCQs covering:
- Lambda Expressions
- Functional Interfaces
- Method References
- Streams API
- Optional
- Default & Static Methods
- New Date and Time API
- CompletableFuture
- Nashorn
- Collectors
- Parallel Streams
- Interface Enhancements
- Miscellaneous Java 8 Features
Each question includes the answer and explanation.
Lambda Expressions
Q1. Which feature was introduced to support Functional Programming in Java 8?
A. Generics
B. Lambda Expressions
C. Reflection
D. Serialization
Answer
B. Lambda Expressions
Explanation
Lambda expressions allow functions to be passed as arguments and reduce boilerplate code.
Q2. Which of the following is a valid Lambda expression?
A.
() -> {}
B.
x -> x * 2
C.
(int x) -> x * 2
D. All of the above
Answer
D. All of the above
Explanation
Java allows multiple valid lambda syntaxes depending on parameter count and type inference.
Q3. What is the primary benefit of Lambda Expressions?
A. Faster JVM
B. Reduced boilerplate code
C. Reduced memory
D. Better Garbage Collection
Answer
B. Reduced boilerplate code
Q4. Can Lambda Expressions access local variables?
A. No
B. Yes, only final variables
C. Yes, final or effectively final variables
D. Any variable
Answer
C
Explanation
Variables must be effectively final.
int x = 10;
Runnable r = () -> System.out.println(x);
Valid.
Functional Interfaces
Q5. What is a Functional Interface?
A. Interface with one method
B. Interface with one abstract method
C. Interface with one default method
D. Marker interface
Answer
B
Q6. Which annotation is used for Functional Interfaces?
A.
@Override
B.
@FunctionalInterface
C.
@Interface
D.
@Lambda
Answer
B
Q7. Is Runnable a Functional Interface?
A. Yes
B. No
Answer
A
Explanation
Runnable contains only one abstract method:
void run()
Method References
Q8. Which operator is used for Method References?
A.
->
B.
::
C.
..
D.
##
Answer
B
Q9. Which is equivalent?
s -> System.out.println(s)
A.
System.out::println
B.
System::println
C.
println::System
D. None
Answer
A
Streams API
Q10. What is a Stream?
A. Collection
B. Data Structure
C. Sequence of elements supporting aggregate operations
D. Thread
Answer
C
Q11. Does Stream store data?
A. Yes
B. No
Answer
B
Explanation
Streams process data from collections; they don’t store data.
Q12. Which operation is Intermediate?
A.
collect()
B.
forEach()
C.
filter()
D.
count()
Answer
C
Q13. Which operation is Terminal?
A.
map()
B.
filter()
C.
sorted()
D.
collect()
Answer
D
Q14. What is Lazy Evaluation?
A. Operations execute immediately
B. Operations execute only after terminal operation
C. JVM optimization
D. Thread optimization
Answer
B
Q15. Output?
Stream.of(1,2,3)
.filter(x -> x > 1);
A. Prints 2,3
B. Executes filter
C. Nothing happens
D. Compile error
Answer
C
Explanation
No terminal operation.
Q16. Which operation transforms elements?
A.
filter()
B.
map()
C.
count()
D.
findFirst()
Answer
B
Q17. Which operation flattens nested collections?
A.
map()
B.
reduce()
C.
flatMap()
D.
groupingBy()
Answer
C
Q18. Output?
Stream.of(1,2,3)
.reduce(0,Integer::sum);
A. 3
B. 5
C. 6
D. 0
Answer
C
Q19. What does distinct() do?
A. Sort
B. Remove duplicates
C. Group
D. Filter nulls
Answer
B
Q20. Which Collector returns List?
A.
Collectors.toList()
B.
Collectors.groupingBy()
C.
Collectors.counting()
D.
Collectors.mapping()
Answer
A
Optional
Q21. Why was Optional introduced?
A. Improve performance
B. Replace collections
C. Reduce NullPointerException
D. Replace exceptions
Answer
C
Q22. How to create Optional?
A.
Optional.of(value)
B.
Optional.empty()
C.
Optional.ofNullable(value)
D. All
Answer
D
Q23. Difference between of() and ofNullable()?
Answer
Optional.of(null)
throws exception.
Optional.ofNullable(null)
returns empty Optional.
Q24. Which method returns default value?
A.
get()
B.
orElse()
C.
filter()
D.
map()
Answer
B
Q25. Which method throws custom exception?
A.
orElseThrow()
B.
orElse()
C.
get()
D.
empty()
Answer
A
Default Methods
Q26. Why were default methods introduced?
A. Improve JVM
B. Backward compatibility
C. Replace abstract classes
D. Improve GC
Answer
B
Q27. Can interface contain implementation in Java 8?
A. No
B. Yes
Answer
B
Q28. Can interfaces contain static methods?
A. No
B. Yes
Answer
B
Date and Time API
Q29. Which package introduced new Date API?
A.
java.util.date
B.
java.time
C.
java.calendar
D.
java.datetime
Answer
B
Q30. Which class represents date only?
A.
LocalDate
B.
LocalDateTime
C.
Instant
D.
ZonedDateTime
Answer
A
Q31. Which class represents time only?
A.
LocalDate
B.
LocalTime
C.
Date
D.
Calendar
Answer
B
Q32. Which class represents date and time?
A.
LocalDate
B.
LocalTime
C.
LocalDateTime
D.
Duration
Answer
C
Q33. Which class supports timezone?
A.
LocalDate
B.
ZonedDateTime
C.
LocalTime
D.
Instant
Answer
B
Q34. Are java.time classes mutable?
A. Yes
B. No
Answer
B
Explanation
All major classes in java.time are immutable and thread-safe.
Q35. How to get current date?
A.
new Date()
B.
LocalDate.now()
C.
Calendar.getInstance()
D. Both A and B
Answer
B
Q36. Which class represents machine timestamp?
A.
Instant
B.
LocalDate
C.
Period
D.
Duration
Answer
A
Q37. Difference between Period and Duration?
Answer
Period:
Years Months Days
Duration:
Hours Minutes Seconds
Parallel Streams
Q38. How to create parallel stream?
A.
parallel()
B.
parallelStream()
C. Both
D. None
Answer
C
Q39. Parallel streams use?
A. ExecutorService
B. ForkJoinPool
C. ThreadPoolExecutor
D. Timer
Answer
B
Q40. Are parallel streams always faster?
A. Yes
B. No
Answer
B
Explanation
Depends on workload and CPU cores.
CompletableFuture
Q41. Which interface extends Future?
A.
Executor
B.
CompletableFuture
C.
Callable
D. None
Answer
B
Q42. Which method creates async task?
A.
runAsync()
B.
supplyAsync()
C. Both
D. None
Answer
C
Q43. Difference between runAsync and supplyAsync?
Answer
runAsync:
CompletableFuture<Void>
No return value.
supplyAsync:
CompletableFuture<T>
Returns value.
Q44. Which method combines two futures?
A.
thenCombine()
B.
thenAccept()
C.
join()
D.
complete()
Answer
A
Q45. Which method waits without checked exception?
A.
get()
B.
join()
Answer
B
Collectors
Q46. Which collector groups data?
A.
groupingBy()
B.
joining()
C.
counting()
D.
mapping()
Answer
A
Q47. Which collector creates comma-separated String?
A.
toList()
B.
joining()
C.
counting()
D.
partitioningBy()
Answer
B
Miscellaneous
Q48. What is Nashorn?
A. JVM
B. JavaScript Engine
C. Compiler
D. Collection
Answer
B
Q49. Which new interface was introduced for Lambda support?
A.
Function<T,R>
B.
Predicate<T>
C.
Consumer<T>
D. All
Answer
D
Q50. Which Java 8 feature had the biggest impact on enterprise application development?
A. Lambda Expressions
B. Streams API
C. CompletableFuture
D. All of the above
Answer
D
Explanation
Modern Spring Boot, Microservices, Reactive Programming, Stream Processing, and Concurrent Applications extensively leverage Lambda Expressions, Streams, and CompletableFuture.
Quick Revision Cheat Sheet
| Feature | Key Classes |
|---|---|
| Lambda | -> |
| Method Reference | :: |
| Stream API | Stream |
| Optional | Optional |
| Date API | LocalDate, LocalTime, LocalDateTime |
| Timezone | ZonedDateTime |
| Timestamp | Instant |
| Async Programming | CompletableFuture |
| Functional Interfaces | Function, Predicate, Consumer, Supplier |
| Default Methods | interface default methods |
| Parallel Processing | parallelStream() |
| Aggregation | Collectors |
Interview Tip
If a candidate understands:
- Lambda Expressions
- Functional Interfaces
- Streams vs Collections
- Optional
- LocalDateTime vs Date
- CompletableFuture
- Default Methods
they generally possess a solid working knowledge of Java 8 and are ready for most enterprise Spring Boot development roles.