【Java面试丨企业场景】常见技术场景
一、单点登录怎么实现的
1. 介绍
- 单点登录(Single Sign On,SSO):只需要登录一次,就可以访问所有信任的应用系统
2. 解决方案
- JWT解决单点登录问题
- 用户访问应用系统,会在网关判断Token是否有效
- 如果Token无效,则会返回401(认证失败),前端跳转到登录界面
- 用户发送登录请求,网关路由到登录服务,认证校验返回给浏览器一个Token,浏览器将Token保存到Cookie中
- 随后,再去访问应用系统其他服务时,都需要携带Token,由网关统一验证后路由到目标服务
二、权限认证是如何实现的
1. 介绍
- 后台的管理系统更加注重权限控制,最常见的是RBAC模型来实现
- RBAC(Role-Based Access Control):基于角色的访问控制
- 具体实现
(1)5张表(用户表、角色表、权限表、用户-角色中间表、角色-权限中间表)
(2)7张表(用户表、角色表、权限表、菜单表、用户-角色中间表、角色-权限中间表、权限-菜单中间表)
2. 案例分析
三、上传数据的安全性怎么控制(网络传输数据安全性)
1. 介绍
- 用户通过浏览器发送请求,请求数据通过网络传输的,如果是非常敏感的数据,如果有人恶意拦截,可能造成损失
- 可以使用非对称加密(或者对称加密),给前端一个公钥让其把数据加密后传到后台,后台负责解密后处理数据
2. 解决方案
- 对称加密:数据加密和解密使用相同的秘钥,即加密秘钥也可以用作解密秘钥
(1)优点:加密速度快,效率高
(2)缺点:相对不太安全(不要保存敏感信息) - 非对称加密:有两个秘钥,公开秘钥负责加密,私有秘钥负责解密
(1)优点:与对称加密相比,安全性更高
(2)缺点:加密和解密速度慢,建议少量数据加密
3. 总结
- 文件很大建议使用对称加密,不过不能保存敏感信息
- 文件较小,要求安全性高,建议采用非对称加密
四、负责的项目模块遇到哪些棘手问题,如何解决
1. 介绍
- 什么背景(技术问题)
- 解决问题过程
- 最终落地方案
2. 案例分享
五、怎么做压测(性能测试)的
六、项目中日志如何采集的
1, 介绍
- 日志是定位系统问题的重要手段,根据日志信息快速单位系统中的问题
- 采集日志的方式
(1)常规采集:按天保存到一个日志文件
(2)ELK:Elasticsearch、Logstash、Kibana
2. ELK案例分享
- Elasticsearch:全文搜索分析引擎,可以对数据存储、搜索、分析
- Logstash:数据收集引擎,可以动态收集数据,对数据进行过滤、分析,将数据存储到指定的位置
- Kibana:数据分析和可视化平台,配合Elasticsearch对数据进行搜索、分析、图表化展示
七、查看日志的命令
- 目前采集日志的方式:按天保存到一个日志文件中
- Linux中查看日志
(1)实时监控日志的变化
(2)按照行号查询
(3)按照关键字查找日志信息
(4)按照日期查询
(5)日志太多,处理方式
八、怎么快速定位系统的瓶颈
- 压测(性能测试):项目上线之前测评系统的压力
- 监控工具、链路追踪工具:项目上线之后监控
- 线上诊断工具Arthas:项目上线之后监控、排查
九、生产问题怎么排查
1. 介绍
- 已经上线的bug排查思路
(1)先分析日志,通常在业务中都会有日志的记录,或者查看系统日志,或者查看日志文件,然后定位问题
(2)远程debug:debug公司的测试环境,调试代码