部门:京东零售-平台产品与研发中心
30min,拷打简历,面试官人挺好的
面试后第四天,已挂
自我介绍
先聊天,问最快什么时候能来,能来多久(说少啦,该说6个月的)
问了我简历上的竞赛项目做了什么(以前从没面试官感兴趣过)
问蓝桥杯是什么,山东省自己组织的吗
八股:
- 说一下哈希表的实现原理
- 为什么链表长度为8时,要转换成红黑树
在Java的HashMap中,当链表长度≥8且哈希表容量≥64时,链表会转为红黑树;
链表查找时间复杂度为O(n),红黑树为O(logn)。当链表较长时,红黑树显著提升查询效率;
根据泊松分布,哈希冲突导致链表长度≥8的概率极低(约0.00000006),此时转为红黑树是权衡空间与时间的优化;
当红黑树节点数≤6时,会退化为链表以节省空间;
防止用户实现低效哈希算法导致链表过长,红黑树作为极端情况的保底策略。 - 什么情况会破坏双亲委派机制
- 说一下SPI和热部署
SPI(Service Provider Interface)服务接口由启动类加载器加载,DriverManager
由启动类加载器加载,但数据库驱动实现(如MySQL Connector)需由应用类加载器加载。JDBC 4.0后通过SPI机制动态加载驱动。
热部署:开发工具(如JRebel)通过自定义类加载器直接加载修改后的类文件,跳过双亲委派。一些应用服务器(如 Tomcat)需要支持动态加载和卸载类,因此会打破双亲委派模型,允许子加载器优先加载某些类。 - 说一下Java内存模型JMM(发现回答的时候以为是JVM内存模型)
- 为什么内存模型要这么划分,以及会出现哪些问题
- 线程池有哪些参数
- 说说每一个参数是什么作用
- 关于锁了解多少
- 事务ACID特性都是怎么实现的
- 慢查询了解多少
- 分库分表了解多少,会存在什么问题
- Redis会丢数据吗
- 除了持久化的丢数据,还有什么情况会丢数据
内存溢出触发淘汰策略、服务器断电或崩溃时,未持久化的内存数据立即丢失 - Redis的缓存雪崩、缓存击穿和缓存穿透
- 生产者消费者模型的应用场景
消息队列
视频直播中,生产者编码视频帧,消费者解码播放。缓冲区确保流畅性
线程池任务队列即为缓冲区,生产者提交任务,工作线程消费执行 - 简单说一下IoC和AOP
- 没有IoC会怎么样
需要手动new,高耦合,维护困难,冗余代码,生命周期管理复杂
项目拷打:
- 项目是自己学习用的吗
- 项目过程中遇到了哪些问题,花费了大量时间解决
- 继续追问我说的问题,哪些数据存redis里,哪些数据存数据库里
Redis 是内存数据库,适合存储高频访问、临时性、低持久性需求的数据
MySQL 是关系型数据库,适合存储持久化、结构化、事务性的数据 - 继续追问,如果redis和数据库同步的过程中,redis宕机了,该怎么解决
持久化、主从复制、哨兵模式、双写、异步队列 - 根据我说的第二个问题继续问,除了布隆过滤器判断数据库中不存在这个数据,还有没有别的方法判断
- 消息如何不重复消费
主动介绍他们的部门,主要做中间件的开发
反问