帆软Java二面
开始折磨!
- 讲讲你对锁的理解和分类
- CAS一般来说是怎么实现的
- 如果我们实现一个自旋锁的话应该怎么利用CAS
- CAS自旋会有什么问题
- 怎么让自旋过程不那么消耗资源
- 还有别的锁的分类吗
- Java种哪一类实现了公平和非公平锁
ReentrantLock
的非公平性是怎么实现的- 讲一下对索引的理解
- 除了数据库,举几个在其他地方用到索引的例子
- 讲一下往跳表里插入和查找数据的流程
- 往跳表里面存n个数据,占用的空间是多少
- 为什么索引查会更快一些
- 数据库常见的连接类型
- B+树和B树的区别,那只从查询的角度来说的话,有什么区别
- 这两个树查询一条数据的流程说一下
- 怎么快速判断一个数是不是2的n次方(直接把所有的结果存下来、转成二进制右移、利用补码:
(x != 0) && ((x & -x) == x);
或者((x != 0) && ((x & x - 1) == 0));
- 给定1到100,只有一个数出现了奇数次,剩下的数都出现了偶数次,怎么快速找到这个基数次的数字(数组、直接异或)
- 8G的内存,有1亿个IP地址,现给出一个IP地址,判断是否在这1亿个IP地址中(hashmap、数组,把每一个IP定义成一个byte
总结:二面的体验没有一面那么好了,多了一些场景&智力题,这些见过就会了,没见过感觉很难自己想出来。八股上问的更深一些了,感觉需要看过CAS和AQS源码才能答出来了,自己这方便确实比较薄弱,需要再加强一下了。
#面经##Java##后端##秋招##面试#