黑马Java面试教程_P11_技术场景
系列博客目录
文章目录
- 系列博客目录
- 前言
- 1.单点登录这块怎么实现/SSO怎么实现的?
- 面试文稿中回答要点
- 2.权限认证是如何实现的
- 面试文稿中回答要点
- 3.上传数据的安全性你们怎么控制?
- 面试文稿中回答要点
- 4.你负责项目的时候遇到了哪些比较棘手的问题?怎么解决的
- 面试文稿中回答要点
- 5.你们项目中日志怎么采集的?
- 面试文稿中回答要点
- 6.查看日志的命令
- 面试文稿中回答要点
- 7.生产问题怎么排查
- 面试文稿中回答要点
- 8.怎么快速定位系统的瓶颈
- 面试文稿中回答要点
前言
下面9个问题都是比较通用的,不管你做过什么项目,都会包含下面的技术场景。我们针对的是如何回答这些面试问题,只告诉回答问题的核心要点,和回答问题的思路,并不会再实现一边,如果要深入学习这些内容,要自己系统学习。
1.单点登录这块怎么实现/SSO怎么实现的?
单点登录的英文名叫做:Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统。
单点登录解决方案如下:
- JWT(常见)(针对前后端分离的项目,所以比较常见)
- Oauth2
- CAS
下面讲解一下,JWT解决单点登录,下面是四个微服务。
面试文稿中回答要点
- 先解释什么是单点登录
单点登录的英文名叫做:Single SignOn(简称SSO) - 介绍自己项目中涉及到的单点登录(即使没涉及过,也可以说实现的思路)
- 介绍单点登录的解决方案,以JWT为例
- 用户访问其他系统,会在网关判断token是否有效
- 如果token无效则会返回401(认证失败)前端跳转到登录页面
- 用户发送登录请求,登陆成功后返回给浏览器一个token,浏览器把token保存到cookie
- 再去访问其他服务的时候,都需要携带token,由网关统一验证后路由到目标服务
2.权限认证是如何实现的
后台的管理系统,更注重权限控制,最常见的就是RBAC模型来指导实现权限。RBAC(Role-Based Access Control)基于角色的访问控制。
例子:下图中,下面两个是中间表。
张三具有什么权限呢?流程:张三登录系统—>查询张三拥有的角色列表—>再根据角色查询拥有的权限
权限框架:Apache shiro 、Spring security(推荐)
面试文稿中回答要点
- 后台管理系统的开发经验
- 介绍RBAC权限模型5张表的关系(用户、角色、权限)
- 权限框架:Spring security
3.上传数据的安全性你们怎么控制?
强调的是网络上传输数据如何保证安全性
解决方案:使用非对称加密(或对称加密),给前端一个公钥让他把数据加密后传到后台,后台负责解密后处理数据。
面试文稿中回答要点
使用非对称加密(或对称加密),给前端一个公钥让他把数据加密后传到后台,后台负责解密后处理数据。
- 文件很大建议使用对称加密,不过不能保存敏感信息(密钥容易泄露)
- 文件较小,要求安全性高,建议采用非对称加密(加解密速度慢,但是比对称加密安全)
4.你负责项目的时候遇到了哪些比较棘手的问题?怎么解决的
考察你是否有过开发经验,是不是核心开发人员。
下面提供四个方向,找一个好好准备即可。
面试文稿中回答要点
- 什么背景(技术问题)
- 过程(解决问题的过程)
- 最终落地方案
5.你们项目中日志怎么采集的?
- 为什么要采集日志?
日志是定位系统问题的重要手段,可以根据日志信息快速定位系统中的问题。 - 采集日志的方式有哪些?
ELK:即Elasticsearch、Logstash和Kibana三个软件的首字母。
常规采集:按天保存到一个日志文件。
一般使用ELK进行常规采集。
面试文稿中回答要点
我们搭建了ELK日志采集系统
介绍ELK的三个组件:
- Elasticsearch是全文搜索分析引擎,可以对数据存储、搜索、分析
- Logstash是一个数据收集引擎,可以动态收集数据,可以对数据进行过滤、分析,将数据存储到指定的位置
- Kibana是一个数据分析和可视化平台,配合Elasticsearch对数据进行搜索,分析,图表化展示
6.查看日志的命令
考察你是否在线调试过项目。
面试文稿中回答要点
上面图中的前几个比较重要。
7.生产问题怎么排查
已经上线的bug排查的思路:
- 先分析日志,通常在业务中都会有日志的记录,或者查看系统日志,或者查看日志文件,然后定位问题。
- 远程debug。(通常公司的正式环境(生产环境)是不允许远程debug的。一般远程debug都是公司的测试环
境,方便调试代码)
远程Debug
前提条件:远程的代码和本地的代码要保持一致
- 远程代码需要配置启动参数,把项目打包放到服务器后启动项目的参数:
java -jar -agentlib:jdwp=transport=dt socket,server=y,suspend=n,address=5005 project-1.0-SNAPSHOT.jar
- idea中设置远程debug,找到idea中的 Edit Configurations…
- idea中启动远程Debug
在远程服务器上出错的代码会被自动定位到本地代码上。
面试文稿中回答要点
已经上线的bug排查的思路有两种:
-
第一种先分析日志,通常在业务中都会有日志的记录,或者查看系统日志,或者查看日志文件,然后定位问题
-
第二种方案就是远程Debug,说一下远程debug的大体思路。
8.怎么快速定位系统的瓶颈
考察你是否有过线上调试系统的经验。一般压测是必须要做的。
- 压测(性能测试),项目上线之前测评系统的压力
- 监控工具、链路追踪工具,项目上线之后监控
- 线上诊断工具Arthas(阿尔萨斯),项目上线之后监控、排查
具体内容如下:只有压测上线前的工作
-
压测(性能测试)
- 压测目的:(项目上线前)给出系统当前的性能状况;定位系统性能瓶颈或潜在性能瓶颈
- 指标:响应时间、 QPS、并发数、吞吐量、CPU利用率、内存使用率、磁盘10、错误率
- 压测工具:LoadRunner、Apache Jmeter …
- 后端工程师:根据压测的结果进行解决或调优(接口慢那就调接口呗、代码报错那就调代码呗、并发达不到要求.)
-
监控工具、链路追踪工具
- 监控工具:Prometheus+Grafana
- 链路追踪工具:skywalking、zipkin
-
线上诊断工具Arthas(阿尔萨斯)
- 官网:https://arthas.aliyun.com/
- 核心功能:
横向表示时间越长,所以越容易出现瓶颈。高度是栈的长度。
面试文稿中回答要点
上线前用压测,上线后可以用阿尔萨斯,比如可以通过火焰图来快速定位应用热点。