2019-06-03 面试题
2019-06-03 本文已影响0人
ben大福
遇到的面试题
1,实现一个CAS(乐观锁)的方法
参考 :https://www.jianshu.com/p/db5c964a61ee
https://blog.csdn.net/qq_35571554/article/details/82892806
全称compare and swap,通过cpu指令实现锁同步,java中concurrent基本都使用了CAS机制,操作类是sun.misc.Unsafe类。比较交换。对象可以用AtomicReference类都在atomic包下。还有一种实现锁机制方法 ReentrantLock。
参考:https://blog.csdn.net/u011202334/article/details/73188404
AbstractQueuedSynchronizer是很重要的一个类
2,Dex的组成,为什么每个dex会有65536的限制
参考 :https://juejin.im/entry/5a330ecff265da430e4f3108
invoke-kind (调用各类方法)指令中,方法引用索引数是 16 位的,也就是最多调用 2^16 = 65536 个方法,这就是 DexFormat 中 MAX_MEMBER_IDX 为 0xFFFF 的原因。
3,手写消费者生产者模型
主要在于生产者插入的时候有锁控制线程和消费者获取的时候锁控制线程
https://www.jianshu.com/p/a42b89287359
4,SPI到字节码注入,优缺点
spi:https://www.jianshu.com/p/b8eac304e183
字节码注入:ASM,JavaAgent https://www.jianshu.com/p/f108f7cde54a
spi缺点 1,不需要的类也会实例化 2,获取某个实现类的方式不够灵活,只能通过Iterator的形式获取,不能根据某个参数来获取对应的实现类。