Bootstrap

Java面试中的经典10个问题,大厂必备(附精准答案)

在Java程序员的面试中,经常会被问到类似这样的问题:

  1. Java中的函数式接口是什么意思?
  2. 注解 @FunctionalInterface 的作用是什么?
  3. 实现一个函数式接口有哪几种方式?
  4. lambda表达式和匿名内部类有什么区别?
  5. Java中的方法引用有哪几种形式?
  6. 能说说你对 Stream 接口中的 map 和 reduce 方法的理解吗?
  7. Stream并行编程的底层实现用了什么多线程框架?
  8. 能说说 Stream 并行编程的适用场景以及注意事项吗?
  9. ConcurrentHashMap中,有哪些方法具备原子性?
  10. 为什么在lambda表达式中引用外部变量时,要求外部变量是final的?怎么绕开这个限制?

问题答案

1. Java中的函数式接口是什么意思?

只有一个抽象方法的接口都属于函数式接口。英文术语为 Functional Interface 。

2. 注解 @FunctionalInterface 的作用是什么?

@FunctionalInterface 主要是告诉编译器它修饰的接口是一个函数式接口,如果接口的定义不符合函数式接口的规范,那么在编译阶段就会报错。当然,我们也可以不加这个注解,对代码的使用没有任何影响。

3. 实现一个函数式接口有哪几种方式?

有3种方式:

  • 通过一个类来实现,包括常规的类和匿名内部类
  • 通过lambda表达式来实现
  • 通过方法引用来实现
;