- day01
- 思考面试提问:
- 请简单介绍一下你们的项目?
- 你们项目的技术架构是怎样的?
- 你们项目的技术架构是怎样的?
- 你们Springboot及SpringCloud使用的版本?
- 你是如何理解前后端分离开发的?
- 你们后端接口是如何测试的?
- SpringMVC接收参数的注解有哪些?
- @RequestBody :当前端在请求体中传入的是json对象时
- @RequestParam :当前端在请求体中传入的是key=value参数时
- @PathVaribale:当前端在请求体中传入的参数在路径上 /user/101
- 你们的接口文档是如何定义的:
- 你们项目的数据库设计情况? 你是否有独立设计过数据库?
- 项目中异常是怎么处理的?
- 项目中注册中心的作用?
- 项目中api网关的作用?
- 思考面试提问:
day01
思考面试提问:
请简单介绍一下你们的项目?
- 资讯,新闻,头条相关的项目
- toc 面向互联网用户
- 类似于今日头条,通过微服务的技术,为用户提供最新,最热点的热门资讯
你们项目的技术架构是怎样的?
你们项目的技术架构是怎样的?
- Nginx:接受用户请求,将请求反向代理到网关
- nginx: 接收用户请求 将请求反向代理到网关
- gateway: api网关,将请求路由到微服务
- nacos:注册中心,配置中心
- feign:服务调用
- ribbon:负载均衡器
- sentinel、hystrix:微服务保护
- SSM:SpringMVC、Spring、MyBatisPlus
- mysql、mogoDB、redis、oss、elasticsearch
- 分布式事务seata、分布式锁redisson 、分布式调度xxljob、消息队列rabbitmq、分布式日志ELK
你们Springboot及SpringCloud使用的版本?
- Springboot:2.3.9
- SpringCloud:hoxton.SR8
你是如何理解前后端分离开发的?
- 前后端根据需求梳理业务,产出API接口文档
前后端基于接口文档并行开发
- 前端:基于接口文档生成mock数据,按照需求实现页面效果
- 后端:基于接口文档,提供接口实现,调用postman测试接口
前后端联调
- 前端将调用地址改为后端网关地址,实现后台真实数据的调用
- 测试整体功能
- 出现问题,谁的问题谁去改
你们后端接口是如何测试的?
- postman进行接口测试
- Swagg
- knif4j
SpringMVC接收参数的注解有哪些?
@RequestBody :当前端在请求体中传入的是json对象时
@RequestParam :当前端在请求体中传入的是key=value参数时
你们的接口文档是如何定义的:
1. 接口描述
2. 请求路径
3. 请求方式
4. 请求参数类型
5. 请求参数
6. 响应参数类型:application/json
7. 响应参数:{
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