快手社招 java 一二面
📍面试公司:快手
👜面试岗位: java 开发
📖面试问题:
一面
- 自我介绍+项目
- 分层缓存架构
- 数据如果只存在 redis 中可以吗
- DB 中的写压力
- MQ 有消息积压吗
- DB 的 TPS
- 怎么分库分表的
- 读写分离
- 如果你们的redis中要新增一个数据,是怎么做的
- 怎么做的异步重试
- redis 中是什么形式来存的数据
- 如果突然有很多数据要写进redis了,有什么措施
- 如果缓存了 5 页数据,这个时候新增加了一条,会发生什么
- 每台实例上的本地缓存都要存储所有的数据信息吗
- 如果数据越来越多会对本地缓存造成什么影响
- 本地缓存淘汰策略
- 秒杀场景下单全流程
- 库存回刷
- 有一笔订单用户取消了,这个时候 redis 成功了但是数据库没成功,会发生什么
- 如果你们在凌晨对账同步的时候刚好碰上用户下单呢
- 被拦截的用户会看到什么报错
- 具体加了什么锁
- 分布式锁的原理是什么
- 回删完成后怎么解锁
- 锁的安全性怎么保证
- 为什么你们释放锁的时候需要用一个唯一的 id 做校验
- threadLocal 怎么做到线程安全的
- threadLocalMap 和 HashMap 的区别
- ThreadLocal怎么避免内存泄漏
- AtomicInteger 类,这个类是线程安全的吗,原理是什么
- 线程池调度机制
- Synchronized 和 reentrantlock的区别
- select * from t where a = 100 and b > 100 and b <= 1000 and c = 10,给这个 sql 创建索引
- innodb 默认事务隔离级别
- 可重复读和读已提交的区别
- 算法题:有序链表去除重复元素 给出1→2→3→3→4→4→5,返回1→2→5
🙌面试体验:面试节奏很和谐
二面:
- 项目+自我介绍
- 具体说一下缓存优化和高并发下单
- redis 预占库存,先预占还是先下单
- 如果预占成功但是下单失败呢
- redis 慢查询的优化怎么做的
- 怎么判断 redis 有无慢查询
- MySQL的锁
- 间隙锁之间互斥吗
- 索引
- 主键索引和非主键索引
- 索引失效
- 场景设计:有一个直播间打赏的 MQ,记录某用户在某直播间打赏了某主播,有多少打赏金额。实现一个直播间送礼金额榜单,需要展示 top100。要求:准时实时性;准确性;高并发
- 算法题:实现一个 LinkedList 双向链表的数据结构,里面有 add 方法和 remove 方法
- 了解可靠消息原理吗
- 不支持两段式提交怎么实现事务消息
- 如何判断消息需要重试
🙌面试体验:非常难
#软件开发笔面经#