一面(50min):
- 自我介绍
- 项目(20分钟)
- RocketMQ延时消息(项目用到了)底层怎么实现的(不会)
- 消息量太大导致读消息延迟时间很长怎么办
- 项目还有啥优化
- 讲一讲redis
- redis为什么快(说了内存、数据结构优化、单线程不用考虑线程安全、io多路复用)
- 单线程模型有什么缺点,有什么不太适用的场景
- redis的大key问题,为什么会产生大key
- redis怎么设置过期时间,底层是怎么实现的,有哪些过期删除策略
- 普通索引、(a b c)联合索引,如果只通过b等值查询能走索引吗,如果用a和c呢
- 线程池主要解决什么问题,有什么优点
- 线程池的原理、来了一个任务后的处理流程
- keepAliveTime对核心线程是否生效,是否能杀死核心线程
- 那如果我想杀死核心线程应该怎么做(不太会,说了动态地修改核心线程数,下来查资料才知道有核心线程的过期时间参数)
- 线程安全问题怎么解决
- 除了加锁还有什么方法,有没有无锁化方法
- 读写锁听过吗,大概说说
- ThreadLocal说说
- 线程池和ThreadLocal一起用会有什么问题吗(说了内存泄漏,面试官补充了个可能有脏数据)
- lc53 最大子数组和
- 反问
面试体验很好,是目前为止体验最好的一次。面试官会给很多反馈和补充,所以更像是在和面试官讨论而不是单纯的面试考察。面完第二天约二面
二面(1h15min)
- 自我介绍
- 实习
- 项目
- 布隆过滤器原理(项目用到了)
- 布隆过滤器有什么问题,为什么不能删除
- Object类有哪些方法,都有什么用
- hashcode和equal有什么关系
- hash冲突有哪些解决方法
- wait和notify是用来做什么的
- wait和sleep有什么区别
- wait带参和不带参有什么区别
- 如果wait带参,到时间后会做什么
- 到时之后如果获取不到对象锁不还是得等别的线程notify吗,这和不带参有啥区别
- 说说垃圾回收
- lc32 最长有效括号
前面聊得也很好,结果手撕给了道hot100 hard,鼠鼠太菜了没刷过hard。写了整整40分钟才写出来,好在面试官有耐心写了40分钟都没打断我。本来感觉要寄了,结果面完1小时就约了三面(原来出hard就是不想要你这句话对字节不适用)。
三面(1h)
- 自我介绍
- 实习
- 项目
- 什么场景适合分布式事务
- 微服务了解吗
- 说说tcp,它有哪些优点在平时的开发中有借鉴意义
- 说说http
- java的NIO主要是为了减少线程数,为什么线程数多了会有问题
- 线程安全版lru
- 给了道sql,没写出来
- 入职时间、实习时长、实习地点有没有要求
三场面试体验都很好,面试官主要也都是围绕项目来问,从项目中延伸出相关的八股。
#字节面试题##字节offer#
#软件开发2024笔面经#