百度Java后台开发一面凉经 9.19
1. 用过Spring吧,说一说Spring中Bean的加载过程,BeanFactory和FactoryBean有什么区别?(上来第一个问题就懵逼了)
2. 场景题:有A、B、C三个方法,分别是循环输出A,输出B,输出C 10次,使用多线程实现按照“ABC”的顺序输出10次
3. Synchronized的底层原理,字节码层面如何实现加锁的?
4. ReentrantLock如何实现非公平锁的?重点是如何实现“非公平”,和“公平锁”有什么区别?
5. 知道hashmap不安全吧,concurrentHashmap是安全的吧,那你知道concurrentHashmap的size()怎么求吗,在并发场景下,需要怎么设定锁?
6. 编程题:给定一颗二叉树,实现一个方法让每个节点新增一个next,next指向当前节点右边的第一个兄弟节点。
我用的层次遍历,面试官说试试用dfs来写,dfs应该比层次遍历简单
7. 编程题:一个二维矩阵,矩阵中标0的位置是道路,标1的位置是墙壁,矩阵的边界也是墙壁,然后有一个起始点p和终点q,问:一个小球起始位于p,小球停止时可以选择一个方向一直滚动,碰到墙壁就停下来,问:小球能否从p滚到q,即最终要在q静止,滚过去不行。
8. MySQL用的什么索引?
9. B+树为什么索引快?
10. 幻读知道吗?Innodb如何避免幻读的?
11. 上一问我回答的间隙锁,然后面试官又问:间隙锁的锁定范围是多少?Select * from t where id<4,这条sql中,间隙锁锁的范围是什么?是(1,4)还是(-无穷,4)?
太菜了,基本没一个问题是完全答出来的,果然是大厂,多数都是问底层源码和汇编层次的原理,好好加油吧!