请简单介绍一下你们的项目?

    1. 资讯 新闻 头条
    2. toC 面向互联网用户
    3. 类似于今日头条,通过微服务的技术 为用户提供最新 最热点的热门资讯

    你们项目的技术架构是怎样的?

    nginx:  接收用户请求 将请求反向代理到网关
    
    gateway: api网关,将请求路由到微服务
    
    nacos: 注册中心、配置中心
    
    feign: 服务调用
    
    ribbon: 负载均衡器
    
    sentinel、hystrix: 微服务保护
    
    SSM: Spring SpringMVC mybatisPlus
    
    mysql、mongoDB、redis、oss、elasticsearch
    
    分布式事务seata  分布式锁redisson 分布式调度xxljob 消息队列rabbitmq 分布式日志:ELK
    

    你们Springboot及SpringCloud使用的版本?

    Springboot: 2.3.9
    SpringCloud:  hoxton.SR8
    

    你是如何理解前后端分离开发的?

    1. 前后后端根据需求梳理业务,产出API接口文档
    
    2. 前后端基于接口文档 ==> 并行开发
                2.1 前端 基于接口文档生成mock数据,按照需求实现页面效果
    
          2.2 后端 基于接口文档,提供接口实现,使用postman测试接口
    
    3. 前后端联调
                前端将调用地址改为后端网关地址,实现后台真实数据的调用
    
          测试整体功能
    
          出现问题,谁的问题谁去改
    

    你们后端接口是如何测试的?

    Postman进行接口测试
    
    Swagger 
    
    Knife4j
    

    SpringMVC接收参数的注解有哪些?

    @RequestBody   当前端在请求体中传入的是json对象时
    @RequestParam   当前端在请求中传入的是key=value参数时
    @PathVariable   当前端在请求中传入参数在路径上  /user/101
    

    你们的接口文档是如何定义的:

    
    接口描述:
    请求路径:
    请求方式:
    请求参数类型:
    请求参数:
    
    响应参数类型: application/json
    响应参数: 
    {
       code: 状态码
       msg: 提示信息
       data: 数据
    }
    

    你们项目的数据库设计情况? 你是否有独立设计过数据库?

    采用了分库的设计,按照业务进行拆分,每个微服务都访问独立的数据库
    
    6个数据库  , 70张表
    

    能否说出SpringBoot的自动装配原理?

    META-INF/spring.factories
    
    key:EnableAutoConfiguration 
    
    1. 去重
    2. 排除指定配置
    3. 按照条件注解筛选配置
    
    @ConditionalOnClass(rabbitTemplate.class)
    

    项目中是否自定义过starter起步依赖,如何定义?

    全局异常的统一配置
    
    小刀文档的统一配置
    

    项目中异常是怎么处理的?

    @ControllerAdvance    
    contrller增强注解
    
    @ExceptionHandler(Exception.class)
    全局异常处理器
    
    @ExceptionHandler(CustomException.class)
    自定义异常处理器
    

    项目中注册中心的作用?配置中心的作用?

    
    共享配置:
            多个微服务需要相同的配置  可以单独创建一个配置文件微服务
                如:  data-id: share-feign.yml
    
            其它微服务想用这个共享配置:
                    share-configs:  引入共享配置
                    - data-id: share-feign.yml
                    group: DEFAULT_GROUP
                    refresh: 是否热更新
    

    项目中api网关的作用?

    filters: 
    
        stripPrefix: 去除前缀的过滤器   1
    
      http://localhost:6001/admin/api/v1/channel/list
    
      http://localhost:9001/admin/api/v1/channel/list
      ==> 去除前缀: /admin
      http://localhost:9001/api/v1/channel/list