Java常见面试题(JDK8新特性面试题)

【1】请说一下JDK8有哪些特性?

接口新增静态方法、默认方法、新日期API、Lambda表达式、函数式接口、方法引用、StreamAPI、Optional类。

【2】介绍一下日期新增API

JDK8中主要新增了如下类,Instant、Duration、Period、LocalDate、LocalTime、LocalDateTime类、ZoneDateTime;各自功能如下:

  • LocalDate:是一个不可变得本地日期对象,表示年月日,具有本地时区的偏移量,但无时区信息
  • LocalTime:是一个不可变得本地时间对象,表示时分秒,具有本地时区的偏移量,但无时区信息
  • LocalDateTime:是一个不可变的本地日期时间对象,表示年月日时分秒,具有本地时区的偏移量,但无时区信息
  • ZonedDateTime:是一个不可变的时间对象,表示年月日时分秒,具有时区的偏移量,具有时区信息
  • Instant:是一个瞬时类表示时间戳,不具有时区偏移量,不具有时区信息;可作为日期对象的中间转换对象。
  • Period:Period类表示一段时间的年月日时分秒,用于较为复杂的一段时间计算
  • Duration:Duration表示秒或纳秒时间间隔,适合处理较短的时间,需要更高的精确性的需求,例如秒杀;其中LocalDate、LocalTime、LocalDateTime的常用方法有初始化:now,of计算方法有:plusXXX,minusXXX

【3】介绍一下lambda表达式?

Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递),它可以简化函数式接口编程。其语法是:类型 变量名 = (参数列表)->{代码}。

【4】介绍一下什么是函数式接口?

只包含一个抽象方法的接口,称为函数式接口,可以通过Lambda表达式来创建接口的对象。我们可以在一个接口上使用@FunctionalInterface注解,这样做可以检查它是否是一个函数式接口。

【5】常见函数式接口有哪些?

  • Consumer<T>消费型接口,void accept(T t)
  • Supplier<T>供给型接口,T get()
  • Function<T,R>函数型接口R apply(T t)
  • Predicate<T>断定型接口boolean test(T t)

【6】介绍一下方法引用?

当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用,如:

Consumer<String> consumer2 = (t) -> System.out.println(t);
Consumer<String> consumer3 = System.out::println;

【7】介绍一下StreamAPI?

StreamAPI是一套基于集合、数组的集合流操作,是面向CPU集合计算;Stream计算需要三个操作:创建Stream、中间操作、终止操作。

常见创建操作有:集合.stream();Arrays.stream(数组),Stream.of()

常见的中间操作有:filter、limit、map、sorted等

常见的终止操作有:count、max、forEach、collect等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值