Boss直聘后端一面社招
1、介绍自己做过的项目--->项目中的难点(你怎么解决和思考的)
2、java的基础知识:
2.1、问了hashMap底层原理,以及为什么hashMap线程不安全。
我说了一下数组+链表+红黑树(1.8),在链表长度链表长度 > 8 且数组长度 ≥ 64 时,链表转为红黑树,红黑树节点数 < 6 时,退化为链表。hashMap的内部操作不是原子性的,在多线程情况下会出现数据覆盖和丢失问题。比如两个线程同时put,发现key的hash位置为空。线程a挂起,线程b写入,随后A恢复,会直接覆盖b的数据。
2.2、GC垃圾回收算法
我说了分代收集法、复制算法、标记清楚法,以及他们的优缺点
2.3、JVM调优问题
我说了调优的一般流程:看CPU信息、看JVM内存指标、看JVM GC指标,以及一些常用指令。
2.4、给了一个具体的案例问题进行分析
问题:一个业务正常运行了一个月,逻辑是一个简单的查询服务,现在突然报警,数据库连接池耗尽,问可能的原因
答:
1、连接泄露(错误答案,因为业务正常运行了一个月)
2、maxLifitime过大,连接长期存活,但因为网络问题被服务端断开,而连接池未及时检查,导致死链接
3、业务运行一个月后用户/数据量发生较大变化,导致最初的连接池配置有问题
2.5、问如何实现一个百米赛跑问题,有1000人参加,每次8个人比赛,最后得到比赛结果
一个多线程问题,核心点在于如何模拟8个人同时开跑,即8个线程同时运行。我没答上来,应该用栅栏机制解决
2.6、RocketMQ消息队列,具体在哪些场景下应用了(因为我项目中提到了使用了消息队列)
2.7、问有没有看过java源码
回答只看过spring boot关于反射的一些源码,面试官也没再问,并建议我多看些。
总结:一面面试官应该挺满意的,面试完半小时就收到了二面通知。
ps:为什么会有三轮技术面,太折磨了。另外本人两年工作经验,求问大家社招怎么准备的
#社招##后端##面经#
查看4道真题和解析