CAS和synchronize有什么区别?都用synchronize不行么?(CAS是乐观锁,不需要阻塞,硬件级别实现的原子性;synchronize会阻塞,JVM级别实现的原子性。使用场景不同,线程冲突严重时CAS会造成CPU压力过大,导致吞吐量下降,synchronize的原理是先自旋然后阻塞,线程冲突严重仍然有较高的吞吐量,因为线程都被阻塞了,不会占用CPU )
如果要保证线程安全怎么办?(ConcurrentHashMap)
ConcurrentHashMap怎么实现线程安全的?(分段锁)
get需要加锁么,为什么?(不用,volatile关键字)
volatile的作用是什么?(保证内存可见性)
底层怎么实现的?(说了主内存和工作内存,读写内存屏障,happen-before,并在纸上画了线程交互图)
面试官背景不同面试题目可能差别也比较大,有喜欢问基础(操作系统、网络等),也有问算法、数据结构比较多的,一般没有特别难的题目。
【拼多多校园招聘】内推链接:https://careers.pinduoduo.com/campus/grad/detail?t=Oo83ln2fak,内推码:Oo83ln2fak。服务端研发工程师 期待你的加入!我们一起,无拼不青春!(通过此链接投递计入内推,内推简历优先筛选~)
.png)
对面试或者职位有疑问的可以回复或者私信,有问必答