面试官问(说说你对Java函数式编程的理解)
常见的面试问题
总结一下,在Java程序员的面试中,经常会被问到类似这样的问题:
- Java中的函数式接口是什么意思?
- 注解 @FunctionalInterface 的作用是什么?
- 实现一个函数式接口有哪几种方式?
- lambda表达式和匿名内部类有什么区别?
- Java中的方法引用有哪几种形式?
- 能说说你对 Stream 接口中的 map 和 reduce 方法的理解吗?
- Stream并行编程的底层实现用了什么多线程框架?
- 能说说 Stream 并行编程的适用场景以及注意事项吗?
- ConcurrentHashMap中,有哪些方法具备原子性?
- 为什么在lambda表达式中引用外部变量时,要求外部变量是final的?怎么绕开这个限制?
- Java中的函数式接口是什么意思?
- 注解 @FunctionalInterface 的作用是什么?
- 实现一个函数式接口有哪几种方式?
- 通过一个类来实现,包括常规的类和匿名内部类
- 通过lambda表达式来实现
- 通过方法引用来实现
- lambda表达式和匿名内部类有什么区别?
- Java中的方法引用有哪几种形式?
- object::instanceMethod 对象 + 实例方法
- ClassName::staticMethod 类名 + 静态方法
- ClassName::new 类名 + new关键字,构造方法引用
- ClassName::instanceMethod 类名 + 实例方法
- 能说说你对 Stream 接口中的 map 和 reduce 方法的理解吗?
reduce方法的作用是使用指定的计算逻辑,将多个元素逐个计算处理,最终得到一个结果。简单来说,reduce的过程就是将多个元素转换为一个最终结果。典型的包括将多个数字累加得到一个和,或者累乘得到一个积,或者将多个元素汇总起来得到一个ArrayList。
- Stream并行编程的底层实现用了什么多线程技术?
- 能说说 Stream 并行编程的优点和局限性吗?
但如果是在某些任务单一、能确保不影响其它任务的场景中,使用 Stream 并行编程能带来编码上的便利性:即使数据源不是线程安全的,通过 Stream 并行编程,也能轻松写出多线程并行处理任务的代码,不需要考虑加锁。
- ConcurrentHashMap中,有哪些方法具备原子性?
- compute
- computeIfAbsent
- computeIfPresent
- putIfAbsent
- 为什么在lambda表达式中引用外部变量时,要求外部变量是final的?怎么绕开这个限制?
【面试官问(说说你对Java函数式编程的理解)】但是,我们可以通过将该外部变量声明为一个数组或一个类(包括容器类)就可以修改其中的值。
推荐阅读
- “不完美,才美”01(190410)
- 说睡
- 2018国考外交部面试演讲不再难——只需把握好三点
- iOS面试题--基础
- java|java 常用知识点链接
- 年薪30万的Java架构师必会的springboot面试题
- linux笔记|linux 常用命令汇总(面向面试)
- 说说”格物致知“
- 说说富兰克林的13个成功秘诀
- 阿里Web前端面试题