面试题-每日5道

51.synchronized和lock有什么区别?

  • synchronized可以给类,方法,代码块加锁;而lock只能给代码块加锁。
  • synchronized不需要手动加锁和释放锁,使用简单,发生异常会自动释放锁,不会造成死锁;而lock需要自己加锁和释放锁,如果使用不当没有unlock()去释放锁就会造成死锁。
  • 通过lock可以知道有没有成功获取锁,而synchronized却无法办到。

52.synchronized和reentrantlook有什么区别?

synchronized 早期的实现比较低效,对比 ReentrantLock,大多数场景性能都相差较 大,但是在 Java 6 中对 synchronized 进行了非常多的改进。

主要区别如下:

  • ReentrantLock 使用起来比较灵活,但是必须有释放锁的配合动作;
  •  ReentrantLock 必须手动获取与释放锁,而 synchronized 不需要手动释放和开锁
  • ReentrantLock 只适用于代码块锁,而 synchronized 可用于修饰方法、代码 块等。  
  • volatile 标记的变量不会被编译器优化;synchronized 标记的变量可以被编 译器优化。

53.什么是反射?

反射就是类在运行期间把类中成员抽取为其他类的过程。

54.什么是Java序列化?什么情况下使用序列化?

Java序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象状态在读取出来

以下情况需要使用Java序列化:

  • 想把内存中的对象状态保存到一个文件中或者数据库中时候
  • 想用嵌套字在网络上传送对象的时候
  • 想通过RMI(远程方法调用)传输对象的时候

55.动态代理是什么?有哪些应用?

动态代理是运行时动态生成的代理类。

动态代理的应用有spring aop,hibernate数据查询,测试框架的后端mock,rpc,Java注解对象获取等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值