9.11面试复盘整理

项目

1.项目的细节介绍

项目的架构

项目对于安全性、可用性和并发能力的优化

2.刷题平台在考试时如何保证问答的自动保存?

  • 使用debounce防抖机制实现,用户输入停顿5s后自动触发保存

  • 在数据库中添加草稿箱表,以userID和questionId作为联合唯一索引,保证一条草稿数据

  • 先保存到本地缓存localStorage,然后异步缓存到数据中,避免后端保存失败

  • 刷新重新加载界面时先从数据库中查找,没查到再去本地中查找

3.HotKey的功能是什么?

3.1 标记Redis中的热点数据

  • HotKeyClient会通过AOP拦截Redis的访问,统计每个key的访问频率,并将一秒内的访问次数发给worker端

  • worker端将客户端发来的数据进行累加计算,如果达到规则配置的阈值,那么标记为热点,将其推送给客户端

  • 客户端缓存预热,将热点key缓存到本地缓存中

3.2 执行逻辑

  • 判断key是否被标记为热点

  • 如果是热点,直接从本地缓存中获取,本地缓存初始化时要注意的点

  • 不是热点,那么直接从Redis中获取

4.项目中ES是如何使用?

4.1先将一些字段全量存入ES数据库中

  • 字段选择如:标签,创建时间(排序),类型等字段

  • 创建索引:中文的话使用ik_smart

4.2当用户使用关键词查询时先查询ES数据库中数据,获取到题目ID然后返回

4.3如果用户点击题目查看具体内容,那么再去数据库中查找题目的所有信息并展示

5.Sentinel做的流量控制和熔断实现了什么?

  • 针对某些耗时较长,访问频率较高的接口进行控制,避免请求过多造成系统过载,比如说访问题库的接口

  • 使用@SentinelResource(value, blockHandler, fallback)注解保护资源

  • blockHandler是当触发了Sentinel流控规则时的异常,可以进行限流、熔断

  • fallback则是捕捉业务执行异常

6.使用Sa-Token实现多点登录这块简单介绍一下?

  • 在用户登录接口中使用Sa-Token添加一个判断

  • 判断用户是否已经登录,并获取Session中用户登录的设备

  • 根据配置的规则,将不符合规则的登陆设备踢下线

7.简单说一下Spring AI的组件?

8.RAG切片,切片的大小和检索是怎么考虑的?

八股

9.SQL优化的经历,产生了什么现象,如何做的优化?

10.关于垃圾回收和性能调优,项目中做了哪些呢?

11.项目中使用过的设计模式?

  • 观察者模式

  • 策略模式

  • 建造者模式

12.项目中使用到线程池和ThreaLocal的地方?

13.项目中那些地方用到了多线程?

14.SpringBoot的自动装配原理

15.循环依赖问题的解决方法

16.项目中使用的SpringMVC内容

17.AOP动态代理

18.数据库中事务的隔离级别

19.事务的传播机制

20.Redis的缓存穿透、缓存击穿、缓存雪崩

21.编写的服务如何部署?Dockers容器化了解吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值