常规自我介绍,项目简介
1.异步秒杀具体思路?为什么用redis stream:更安全,别的不清楚
2.队列主要是什么作用,请求量大了返回什么数据?redis缓存热点数据库存,有则对用户返回下单成功,执行异步扣减库存
3.采用redis steam做消息队列相比kafka和rabbitMQ有什么区别?微服务可能造成雪崩
4.redis缓存雪崩,怎么结合lua脚本解决缓存击穿/穿透:
缓存击穿:热点key过期
缓存穿透:key不存在
做一人一单限制,lua保证操作原子性,具体利用setnx ex 设key
5.安全验证具体是怎么做的? 集群一主一从节点,登录校验可以用cookie session,项目里用的JWT
6.使用mysql存哪些数据?redis只缓存热点数据,mysql存了user 优惠券,商家等信息,不需要频繁修改
7.用mysql时有考虑到索引创建吗?维护了user表,数据量大,”select * “优化,没走非聚簇索引,以及模糊场景违反最左匹配,导致没走索引,相当于索引失效场景,解决还是explian排查,定位,语句问题改语句
8.聚簇索引和非聚簇索引的区别:聚簇索引叶子节点封装行数据,非聚簇索引未存储完整数据可能触发回表操作
9.你提到了回表操作,那么不触发回表操作需要哪些条件?确保查询列在索引包含范围内
10.MySQL事务隔离级别有哪几种:读未提交(非解决脏读)、读已提交(解决脏读无法解决不可重复读)、可重复读(解决不可重复读无法解决幻读,mysql默认隔离级别)、串行化(全部解决,性能最低)
11.读已提交和可重复读在逻辑上的实现区别是?不知道
12.mvcc简单介绍一下:隐型字段+undolog(保证操作原子性)+readview
13.java本身juc包用过哪些?Synchronized
14.简单介绍一下你怎么用的?spring框架两个@bean方法调用,用Synchronized控制锁颗粒度
15.锁的颗粒度,Synchronized的升级过程了解吗?
算法题:重排链表(力扣143)
反问:具体业务:ai大模型接口对接,用springai吗?不是,就是http直接接取,参数转换