面试问题实录 2206253

82 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1.springboot - springcloud区别(好处)

Spring Cloud是构建在Spring Boot之上的服务治理框架。快速构建分布式系统的一些通用模式,例如:配置管理、注册中心、服务发现、限流、网关、链路追踪等

SpringBoot使用了默认大于配置的理念,集成了快速开发的Spring多个插件,同时自动过滤不需要配置的多余的插件,简化了项目的开发配置流程,一定程度上取消xml配置,是一套快速配置开发的脚手架,能快速开发单个微服务;

SpringCloud大部分的功能插件都是基于SpringBoot去实现的,SpringCloud关注于全局的微服务整合和管理,将多个SpringBoot单体微服务进行整合以及管理;

SpringCloud依赖于SpringBoot开发,而SpringBoot可以独立开发;

2.分布式架构负载均衡 (TODO)

负载均衡(LB,Load Balance),是一种技术解决方案。用来在多个资源(一般是服务器)中分配负载,达到最优化资源使用,避免过载image.png

3.其他实现负载均衡

(TODO)

4.负载均衡算法

常用的负载均衡算法有:轮询随机最少链接源地址散列加权等方式

1 轮询

将所有请求,依次分发到每台服务器上,适合服务器硬件同相同的场景。

优点:服务器请求数目相同;

缺点:服务器压力不一样,不适合服务器配置不同的情况;
2 随机

请求随机分配到各个服务器。\
优点:使用简单;

缺点:不适合机器配置不同的场景;

3 最少链接

将请求分配到连接数最少的服务器(目前处理请求最少的服务器)。

优点:根据服务器当前的请求处理情况,动态分配;

缺点:算法实现相对复杂,需要监控服务器请求连接数;

4 Hash(源地址散列)

根据IP地址进行Hash计算,得到IP地址。

优点:将来自同一IP地址的请求,同一会话期内,转发到相同的服务器;实现会话粘滞。

缺点:目标服务器宕机后,会话会丢失;

5 加权

在轮询,随机,最少链接,Hash等算法的基础上,通过加权的方式,进行负载服务器分配。

优点:根据权重,调节转发服务器的请求数目;

缺点:使用相对复杂;

5.Ribbon负载均衡默认算法是什么

轮询

6.分布式网关是什么 gateway

springcloud的gateway是网关,取代了zuul官网,在微服务中有重要的作用,常见的功能有路由权限验证限流控制具体是route去处理的,filters是各种过滤器。

7.gateway 做哪些设置

可以做限流配置,跨域配置

中间件:

有node中间件,Express中间件 TODO

redis:

8.redis为什么快 高效在那里

  • 基于内存实现 读写速度快
  • 数据结构简单,操作快
  • 单线程,避免线程上下切换,使用IO多路复用
  • 简单的自定义协议

9.redis底层采用NIO还是BIO

Redis底层采用NIO中的多路IO复用的机制

10.redis 集群部署

  1. 主从复制(缺点,主挂掉后,需要人工切换干预,不能保证服务的高可用)

  2. 哨兵模式(一主多从,主挂掉后,会自动选举主再提供服务。缺点:1. 极端情况下网络不是很好的情况,选举需要花时间,可能服务不可用。2. 资源浪费,Redis 数据节点中 slave 节点作为备份节点 )

  3. 集群模式 类似于前两者的升级版。哨兵的从服务器中,保存的数据都是一样的。集群模式在此技术上做出了改进,从服务器保存的数据是不一样的。减少系统资源的浪费

11.reids分布式锁 死锁

12.redisson 可重入锁 那些操作例如:第二次拿锁会做哪些处理

13.队列是否有序

14.redis keys&scan

rabbitmq:

15.订单使用mq过程

16.rabbitmq搭建过程

17.rabbitmq confirm模式

18.confirm模式怎么实现消息不丢失

19.rabbitmq持久化机制

20.服务雪崩

21.hystrix阈值怎么设置

22.服务熔断降级有什么区别

23.特定时间段接受大量需求怎么做 限流

24.限流几种方法 sentinel 自定义切面 Ratelimiter

25.sentinel限流底层 详细

26.慢接口如何优化 思路 方法 解决方案

27.分布式2PC调用链路 怎么监控 : 链路追踪

28.链路过长怎么解决

29.mybatis 分页底层 分页插件 limit

30.mybatis 生命周期 作用域

多线程:

31.线程池创建过程

32.拒绝策略 阻塞队列哪几种 区别

33.关闭线程池 shutdown shutdownnow()区别

34.原子类 原子工具

锁:

35.synchronized锁升级过程

36.升级到轻量级 怎么完成锁和线程的绑定

37.spring单体事务传播行为 传播属性

38.transaction底层常用参数

MySQL:

39.怎么建索引

40.索引有几种

41.聚簇索引和二级索引区别

42.一级索引和二级索引区别

43.索引底层

44.回表操作

45.查询数据不包含2级索引 会回表吗

46.oom的锁定

47.搜索引擎

11系统 财务 联调

rabbitMQ死信队列