【Java面试丨企业场景】常见技术场景

一、单点登录怎么实现的

1. 介绍

  • 单点登录(Single Sign On,SSO):只需要登录一次,就可以访问所有信任的应用系统
    【Java面试丨企业场景】常见技术场景_第1张图片

2. 解决方案

  • JWT解决单点登录问题
    【Java面试丨企业场景】常见技术场景_第2张图片
  • 用户访问应用系统,会在网关判断Token是否有效
  • 如果Token无效,则会返回401(认证失败),前端跳转到登录界面
  • 用户发送登录请求,网关路由到登录服务,认证校验返回给浏览器一个Token,浏览器将Token保存到Cookie中
  • 随后,再去访问应用系统其他服务时,都需要携带Token,由网关统一验证后路由到目标服务

二、权限认证是如何实现的

1. 介绍

  • 后台的管理系统更加注重权限控制,最常见的是RBAC模型来实现
  • RBAC(Role-Based Access Control):基于角色的访问控制
  • 具体实现
    (1)5张表(用户表、角色表、权限表、用户-角色中间表、角色-权限中间表)
    【Java面试丨企业场景】常见技术场景_第3张图片
    (2)7张表(用户表、角色表、权限表、菜单表、用户-角色中间表、角色-权限中间表、权限-菜单中间表)

2. 案例分析

【Java面试丨企业场景】常见技术场景_第4张图片

三、上传数据的安全性怎么控制(网络传输数据安全性)

1. 介绍

【Java面试丨企业场景】常见技术场景_第5张图片

  • 用户通过浏览器发送请求,请求数据通过网络传输的,如果是非常敏感的数据,如果有人恶意拦截,可能造成损失
  • 可以使用非对称加密(或者对称加密),给前端一个公钥让其把数据加密后传到后台,后台负责解密后处理数据

2. 解决方案

  • 对称加密:数据加密和解密使用相同的秘钥,即加密秘钥也可以用作解密秘钥
    【Java面试丨企业场景】常见技术场景_第6张图片
    (1)优点:加密速度快,效率高
    (2)缺点:相对不太安全(不要保存敏感信息)
  • 非对称加密:有两个秘钥,公开秘钥负责加密,私有秘钥负责解密
    【Java面试丨企业场景】常见技术场景_第7张图片
    (1)优点:与对称加密相比,安全性更高
    (2)缺点:加密和解密速度慢,建议少量数据加密

3. 总结

  • 文件很大建议使用对称加密,不过不能保存敏感信息
  • 文件较小,要求安全性高,建议采用非对称加密

四、负责的项目模块遇到哪些棘手问题,如何解决

1. 介绍

  • 什么背景(技术问题)
  • 解决问题过程
  • 最终落地方案

2. 案例分享

【Java面试丨企业场景】常见技术场景_第8张图片

五、怎么做压测(性能测试)的

六、项目中日志如何采集的

1, 介绍

  • 日志是定位系统问题的重要手段,根据日志信息快速单位系统中的问题
  • 采集日志的方式
    (1)常规采集:按天保存到一个日志文件
    (2)ELK:Elasticsearch、Logstash、Kibana

2. ELK案例分享

【Java面试丨企业场景】常见技术场景_第9张图片

  • Elasticsearch:全文搜索分析引擎,可以对数据存储、搜索、分析
  • Logstash:数据收集引擎,可以动态收集数据,对数据进行过滤、分析,将数据存储到指定的位置
  • Kibana:数据分析和可视化平台,配合Elasticsearch对数据进行搜索、分析、图表化展示

七、查看日志的命令

  • 目前采集日志的方式:按天保存到一个日志文件中
  • Linux中查看日志
    (1)实时监控日志的变化
    (2)按照行号查询
    (3)按照关键字查找日志信息
    (4)按照日期查询
    (5)日志太多,处理方式
    【Java面试丨企业场景】常见技术场景_第10张图片

八、怎么快速定位系统的瓶颈

  • 压测(性能测试):项目上线之前测评系统的压力
  • 监控工具、链路追踪工具:项目上线之后监控
  • 线上诊断工具Arthas:项目上线之后监控、排查
    【Java面试丨企业场景】常见技术场景_第11张图片

九、生产问题怎么排查

1. 介绍

  • 已经上线的bug排查思路
    (1)先分析日志,通常在业务中都会有日志的记录,或者查看系统日志,或者查看日志文件,然后定位问题
    (2)远程debug:debug公司的测试环境,调试代码

2. 远程debug案例分析

【Java面试丨企业场景】常见技术场景_第12张图片【Java面试丨企业场景】常见技术场景_第13张图片

你可能感兴趣的:(Java面试,java)