去哪儿 9.23号 一二三面 面经(许愿OC)
10点 一面 时长35min
- 自我介绍
- 给题分析
HashMap map = new HashMap<>(100); map.put("a", 1);
[1] 如果不指定大小,map有多大
[2] 如果指定100,并且不断放入元素,放到第几个会进行扩容
[3] 为什么容量是2的N次幂
[4] put过程
[5] 为什么计算hash值的时候要进行两步的运算
[6] 扩容过程,数组中的元素、链表、红黑树的改变(红黑树的过程不了解,面试官给我补充了:树比较小时会解开,比较大时就不一定解开) - 线程1的lock()的过程(AQS)
- ===中间面试官接了个电话===
- java中有哪些方法可以让线程挂起或暂停(sleep、wait、park、join,面试官补充并解释的join)
- CAS 以及 可能造成的问题
- volatile 作用,如何实现的可见性和有序性
- springboot如何实现自动配置
- springboot的启动流程
- 那之前说的select在什么时候触发
- BeanFactory 跟 ApplicationContext的区别
- 然后面试官开始给我科普springboot的知识(上面几个点的知识)
- update语句的流程。(之前看到过!然后我觉得太高级了,应该不会问就没去了解了,呜呜呜。最后面试官给我科普这个过程)
- 设计索引时考虑的场景,字段后跟null会触发索引吗
- 联合索引要考虑什么原则,除了最左匹配
- mysql的默认隔离级别。如何实现可重复读的。
- MVCC的实现原理
(面试官主动评价我:技术还是有一些使用跟了解的,整体不错,让我等二面)
11点 二面 时长20min
- 看着简历问,选一个比赛分享其中最有挑战性的东西。
- 问项目
- 智力题:烧一根不均匀的绳,从头烧到尾总共需要一个小时,如何用它来判断半个小时?现在有若干条材质相同的绳子,如何用烧绳的方法来计时 1 小时 15 分钟呢?
(我当时想了挺久,然后回答头尾两头开始烧,相遇就是半小时,面试官让我证明为什么相遇就是半小时,我当时也是猜的,就没法证明了,呜呜呜,然后这题就过去了) - 反问
下午3点半 hr面 时长20多分钟
就聊一些常规的hr问题,然后反问,很常规
许愿offer啊