记2017.3.21阿里面试经历,java方向

本文详细回顾了2017年在阿里巴巴的Java面试经历,涵盖Java新特性,如Lambda表达式、接口默认方法,以及synchronized的实现原理。同时讨论了数据库索引和Redis与关系型数据库的同步策略,为面试和实际开发提供了宝贵经验。
摘要由CSDN通过智能技术生成

1. Java有什么新特性

  • Java语言
  • 编译器
  • 类库
  • 工具
  • Java运行时

1. 1 Java语言

  • Lambda表达式(闭包)允许把函数作为一个方法的参数,或者把代码看成数据。
Arrays.asList("a","b","d").forEach(e->System.out.println(e));
Arrays.asList( "a", "b", "d" ).forEach( e -> {
    System.out.print( e );
    System.out.print( e );
} );
Arrays.asList( "a", "b", "d" ).sort( ( e1, e2 ) -> e1.compareTo( e2 ) );
  • 增加函数式接口,可以被隐式转换为lambda表达式@FunctionInterface,默认方法与静态方法并不影响函数式接口的契约。
  • 接口的默认方法与静态方法,所有实现者将会默认继承它(如果有必要的话,可以覆盖这个默认实现)
  • 方法引用:构造器引用Class::new(无参),静态方法引用Class::static_method,特定类的任意对象Class::method,特定对象instance::method
  • 重复注解

1. 2 Java编译器的新特性

  • 参数名字,方便获取参数名字

1. 3 Java类库的新特性

  • Optional 一个容器,可以保存类型T的值,或者仅仅保存null,提供有用的方法,这样我们就不用显示进行空值检。如果Optional类的实例为非空值的话,isPresent()返回true,否则返回false,为了防止Optional为空值,orElseGet()方法通过回调函数来产生一个默认值。map()函数对当前Optional的值进行转换,然后返回一个新的Optional实例。
  • Stream 真正的函数式变成风格引入到Java中,极大简化了集合框架的处理。
  • Date/Time API  Clock类,指定时区,获得当前时刻,日期,时间
  • parrellelSort()方法,在多核机器上极大提高数组排序速度。
Optional< String > fullName = Optional.ofNullable( null );
System.out.println( "Full Name is set? " + fullName.isPresent() );        
System.out.println( "Full Name: " + fullName.orElseGet( () -> "[none]" ) ); 
System.out.println( fullName.map( s -> "Hey " + s + "!" ).orElse( "Hey Stranger!" ) );

2. synchronized如何实现

  • 对象头 Mark
锁就保存在对象头中,对象头分为两部分信息,第一部分用于存储对象自身运行时的数据,如HashCode,GC分代年龄等,另一部分用于存储指向方法区类型数据的指针。
  • 偏向锁
偏向锁实际上是一种优化锁,其目的是为了减少数据在无竞争情况下的性能损耗。其核心思想就是锁会偏向第一个获取它的线程,在接下来的执行过程中该锁没有其他的线程获取,则持有偏向锁的线程永远不需要同步。
  • 轻量级锁
在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能损耗。
  • 自旋锁
sychronized锁是一种重量级锁,在互斥状态下,没有得到锁的线程会被挂起阻塞,而挂起线程和恢复线程的操作都需要转入内核态中完成。所谓自旋锁,就是让没有获得锁的进程自己运行一段时间自循环(默认开启),但是不挂起线程的代价就是该线程会一直占用处理器,如果锁占用的时间很短,自旋等待的效果很好,反之,自旋锁会消耗大量处理器资源,因此,自旋的等待时间必须有一定限度,超过限度还没有获得锁,就要挂起线程。
  • 锁的升级过程
  • 6
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值