面试题(视频)

1.SpringCloud用到那些组件?

注册中心 nacos

配置中心 nacos

远程调用 Spring Cloud gateway

远程调用 feign

负载均衡 Ribbon

服务保护

2.使用rabbitmq做了什么事情?

异步通信:mysql中的数据和es中的数据进行同步

延迟消息队列:延迟发布话题,有用户需要定时发布文章,就需要延迟消息队列

3.创建线程的方式

(1)直接Thread

(2)Thread+Runnable

(3)FutureRrask+Callable 有返回值,有阻塞

(4)直接使用线程池

4.线程池的7个参数

jdk线程池如何使用

(1)工厂类 Executors

​ newCachedThreadPool

​ newFixedThreadPool

​ newSingleThreadScheduledExecutor

​ newSingleThreadExecutor

​ 核心线程1,最大线程1

(2)使用ThreadPoolExector

​ 核心线程

​ 最大线程

​ 救济线程的存活时间

​ 救济线程的单位

​ 线程的阻塞队列

​ 创建线程的方式,可以控制创建出来的线程名字,守护线程

​ 拒绝策略

5.线程池的工作流程

添加任务----------->

1.判断核心线程是不是达到上限

2.未达到:创建核心线程执行任务

3.达到:放入工作队列

​ 工作队列满了:创建临时线程完成任务

​ 临时线程也达到上限

​ 拒绝策略

6.线程的拒绝策略

4种拒绝策略

(1)AbortPolicy 将任务丢弃,抛出异常

(2)CallerRunsPolicy 谁将该任务往线程池中添加,谁来执行

(3)DiscardOldestPolicy 将工作队列中最早的任务抛弃,将新任务添加到工作队列

(4)DiscardPolicy 将工作队列中最新的任务抛弃,将新任务添加到工作队列

7.项目中用redis做什么了?

(1)Redis中存储了时效性数据,短信验证码的登录

(2)缓存热点数据,热点话题,使用xxl-job查询分值高的数据缓存到Redis中

(3)分布式锁

​ 下单减库存

​ 用户点赞,阅读----Redis--------发布消息MQ----------文章服务更新点赞数量,需要用到分布式锁

8.Redis中放入RDB和AOF的区别?

RDB:每隔一定时间,将内存中的数据持久化到文件中

AOF:将写操作的命令,持久化到文件中

每秒

每操作

由操作系统决定

一般用那种?如果不追求极致安全,效率高,使用RDB,追求极致安全使用AOF

一次RDB花费的时间比一次AOF花费的时间长

9.项目多少人做的?

一个项目组6~8个人

6个人:3个后端+2前端+1测试

8个人:4个后端+2个前端+2个测试

10.注册中心的作用

服务注册:

​ 服务启动后将地址暴漏给注册中心

​ key 服务名称

​ value 地址列表

服务发现:

​ 服务的消费者:

​ 根据服务名称从主策中心获取地址列表

11.如何防止Redis穿透?

Redis穿透

别人恶意发送请求,redis中不存在的数据,恶意请求比较大,导致所有的请求都回查询mysql,导致mysql宕机

解决:布隆过滤器

​ mysql中商品id存入布隆过滤器

​ 1.判断布隆过滤器是否有查询数据的id

​ 2.没有,响应数据不存在

​ 3.有(可能有,因为有误判)

​ 查询redis中------有,直接返回

​ 没有,就查询myslq,将查询的结果存入redis,如果在数据据库中查询的结果没有,就在redis中缓存一个空结果

12.布隆过滤器的数组结构

位数组:仅仅存储01的数组

占用了少量的空间,时间复杂度位O(1)

存:对数据进行多次hash,多次hash值和数组进行与运算,将这个索引的位置修改为1

取:也是多次hash,与长度的位置进行与运算,判断该索引的位置是不是为1,1的就是存在(可能误判),是0的话就是一定不存在,降低误判增加数组的长度和进行多次hash

12.分布式锁

(1)Redis的分布式锁

setnx添加一个string类型的数组

​ 如果key不存在,添加成功,返回true

​ 如果key存在,添加失败,返回false

原理:

​ 加锁:

​ 多个线程一起setnx

​ 一个成功就获取到了锁

​ 其他获取锁失败

​ 释放锁:

​ 将数据删除

​ del key

(2)zk的分布式锁

加锁:多个线程一起在持久节点下创建临时顺序节点,判断创建的节点是不是在持久节点下编号最小的

如果是------>就加锁成功----->执行业务,执行完删除临时顺序节点

如果不是------->监听前一个节点删除

13.redis哨兵的所用?

(1)监听:Sentinel监听Redis主从架构中每个节点的状态

​ 主观下线,某个Sentinel认为这个节点下线

​ 客观下线,半数节点认为这个节点下线

​ 如果发现有节点客观下线,就故障转移,将该节点从集群节点列表中剔除

(2)故障转移

如果发现主节点客观下线,从从节点中选择一个升级为主节点

(3)通知,将主从变化通知给客户端

13.项目中那些地方用到了es

话题的搜索,es就是使用倒排索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值