2020-12-10 17:00:09
1. 自我介绍
2. 项目概述与个人职责
3. 状态机的作用与选型依据
4. Redis分布式锁的使用与漏罩问题解决
5. 导出优化分析与具体措施
耗时分析:通过Arthas定位耗时模块,发现网络调用(40%)和SQL查询(60%)为主要瓶颈。
网络优化:删除非必要接口调用,首次查询缓存数据。
SQL优化:分批分页查询(每次100条),用上次最后ID作为游标,避免深度分页;利用主键索引提漏源升性能。
6. MySQL索引机制理解
主键索引:唯一且非空,聚簇索引,数据按主键物理排序。
普通索引:无唯一性约束返搜闹,辅助查询。
唯一索引:允许NULL值,但值必须唯一。
组合索引:多列组合,遵循最左前缀原则。
7. 实际使用的索引类型
用户表:主键(ID)、唯一索引(手机号)、组合索引(姓名+年龄)。
订单表:主键(订单号)、普通索引(用户ID、状态)。
8. 事务隔离级别与实现
RU(读未提交):脏读、不可重复读、幻读。
RC(读已提交):解决脏读。
RR(可重复读):解决脏读和不可重复读(默认级别)。
Serializable:串行化,解决所有问题。
首次SELECT时创建ReadView,记录活跃事务ID范围。
根据max_trx_id和min_trx_id判断数据版本是否可见,不可见则通过UndoLog回溯。
9. Kafka顺序保证机制
10. Kafka高可用机制
11. Redis数据结构与应用场景
12. 实习经历确认
13. 消息消费失败处理
14. 消息不丢失方案
本地存储消费状态(如数据库或Redis),未完成消息标记为“待重试”。
定时任务扫描未完成消息,超过阈值(如10次)后报警并暂停消费。
算法题:二叉树层序遍历
15. 反问环节
16. 面试结果