小米 一面
自我介绍
实验室做算法的,为什么没有投算法的岗位?
做到题先
要求 15 min 内做完。
给定一个链表,将相邻的 0 之间的节点合并,合并操作为 val 加和。
输入:[0,1,2,0,3,2,0,1,0]
输出:[3,5,1]
10min 秒,bugfree。面试官看写完了就要运行,本来想再检查下。
项目问题(参杂部分八股)
- 介绍下IM项目
- 如果消息推送到了NettyB时,clentB 掉线了,怎么办?(断线重连,离线流程)
- rocketMq 有用到吗?用处是?
- 用户量多大
- JKD 调度线程池无界,为什么你的要有界?
- 线程池参数?各自的作用
- blockingQueue简历有写,take 过程?(有点忘了)
- 消息单聊的流程介绍下
- 你的线程池拒绝策略是什么?
- 你的 Netty 底层用的什么协议,注意是网络协议?(TCP,websocket)
- 消息可靠性如何保证?
- 你的消息协议序列化方式?消息都包含哪些字段?
- 介绍下你的项目中提到的几个指标
- condition 实现?(我不知道具体实现,只能说说AQS)
- 消息去重怎么实现? key 存的是什么?(我搞错了,注意zset是三元组 key,value,score)。复习下这个时间窗口的操作。
- Netty NIO 高效的原因?(介绍 BIO,NIO)
- epool 事件触发机制(ET,LT)(复习下,有一点点模糊)
- 消息都会存在哪里?
- 消息中的 seq 号作用?
总体是问项目,没怎么问八股。
问的也不是很深入,面试官人挺好,交流挺愉快的,人也挺实在。
反问
部门:手机智能制造,给工厂开发系统
技术栈:java,go