贝壳面经
一面(9.26 早10点,全程40分钟多点):
1. jvm组成,运行时数据区
2. 什么是CAS,原理
3. hashmap数据结构,扩容过程
4. Redis有什么数据结构,说一下跳表的查找过程
5. 什么是MySQL事务,ACID,回滚怎么实现的,说一下MVCC原理
6. 线程池参数详解
7. 固定线程数的阻塞队列采用哪个(我实在是没听懂面试官的意思,当时理解是new Single那个线程池的实现类采用的工作队列了...)
算法题:LeetCode原题,判断一棵树是不是AVL树
因为是原题,写的比较快,面试官看了一下时间,然后还没到40分钟,然后就问我是不是了解设计模式(自我介绍说了了解),然后让我现场实现观察者模式...
思路跟面试官说了他说没问题,但是确实没撕出来,我用的抽象类,他说用接口比较好...
二面(9.26 早10点45左右,紧接着一面,全程40分钟左右):
1. 项目。。。(说了大概十分钟)
2. 100万个数求最大10个数(我说分治法,分成10个小文件,然后快排,再用一个10个元素的大顶堆,面试官问我为什么要分成10个文件,让我回去想分成10个文件有没有必要)
3. 为什么项目用 socket不用http,区别
4. 什么是https
5. http请求过程
6. volatile的作用,怎么保证有序性和可见性,保证多线程安全的方式还有哪些(锁,ThreadLocal)
7. 怎么理解java面向对象三大特性,继承,封装,多态,继承和组合有什么区别
8. springIOC底层怎么实现(没能答上来),问让我实现怎么实现
9. springAOP底层怎么实现,问aop动态代理会生成一个新类吗?
10. 问我sql语句执行过程,(我直接说成了mvc执行过程,面试官说他的意思是问sql执行的过程),我就说如果是InnoDB或者MyISAM聚簇索引和非聚簇索引,或者二级索引回表,或者没有索引走全表扫描。。。
11. 问sql优化,我说用explain执行计划。。。
12. 问计算机系统层面你了解的缓存,当时我就懵了...然后说只知道虚拟技术的页面置换使用到了缓存,然后他让我解释了什么是页面置换
13. 问阻塞IO和非阻塞IO的区别,问什么是IO多路复用,怎么理解多路复用(没答好)
14. 问我最近有看什么书,我说深入理解Java虚拟机,看了一下垃圾收集器,Shenandoah,ZGC和Epsilon垃圾收集器,看了一下并发可达性分析,CMS的增量更新算法和G1的原始快照算法。然后面试官让我说了一下G1的原始快照算法(三色标记法那些)
HR面(9.26 早11点40左右,接着二面,全程20多分钟)
1. 家住哪
2. 有没有女朋友,目的是怕女朋友对公司选择或者地点有要求啥的?(内心:作为程序猿,不需要对象,如果需要,new一个就行了)
3. 对公司,地点有什么要求
4. 对贝壳公司的理解和认识
5. 讲一下简历上的项目
6. 最近或者后续还有哪一些面试或者打算
7. 后续有时间实习?导师同意吗?
8. 非计算机专业为啥要学这个,就是说为什么不做本专业的方向?
9. 反问(前两面都没有反问我都惊了...)
总体来说还是相对来说愉快的,但是确实二面面试官没有啥表情,我内心也很慌,但是面试官人都很好,说是国庆之后一两周给结果,许愿offer...求求...😂😂😂