[Java]-场景题

单点登录这块怎么实现的

单点登录的英文名叫做: Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统

单点登录解决方案

  1. JWT(常见)
  2. Oauth2
  3. CAS

JWT解决单点登录

单点登录这块怎么实现的:

1,先解释什么是单点登录

  • 单点登录的英文名叫做:Single Sign On(简称SS0)

2,介绍自己项目中涉及到的单点登录(即使没涉及过,也可以说实现的思路)

3, 介绍单点登录的解决方案,以JWT为例

I.用户访问其他系统,会在网关判断token是否有效

II.如果token无效则会返回401(认证失败)前端跳转到登录页面

lll. 用户发送登录请求,返回浏览器一个token,浏览器把token保存到cookie

IV. 再去访问其他服务的时候,都需要携带token,由网关统一验证后路由到目标服务

权限认证是如何实现的

后台的管理系统,更注重权限控制,最常见的就是RBAC模型来指导实现权限

RBAC(Role-BasedAccess Control)基于角色的访问控制

  1. 3个基础部分组成: 用户、角色、权限具体实现
  2. 5张表(用户表、角色表、权限表、用户角色中间表、角色权限中间表)
  3. 7张表(用户表、角色表、权限表、菜单表、用户角色中间表、角色权限中间表、权限菜单中间表)

RBAC权限模型

  1. 张三具有什么权限呢?
  • 流程: 张三登录系统--->查询张三拥有的角色列表--->再根据角色查询拥有的权限
  1. 权限框架:
  • Apache shiro 、Spring security (推荐)

权限认证是如何实现的

  1. 后台管理系统的开发经验:
  2. 介绍RBAC权限模型5张表的关系(用户、角色、权限)
  3. 权框架: Spring security

上传数据的安全性你们怎么控制?

使用非对称加密(或对称加密),给前端一个公钥让他把数据加密后传到后台,后台负责解密后处理数据

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

对称加密

文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥

  1. 优点: 加密速度快,效率高
  2. 缺点: 相对不太安全(不要保存敏感信息)

非对称加密

两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密

  1. 优点: 与对称加密相比,安全性更高
  2. 缺点: 加密和解密速度慢,建议少量数据加密

遇到过哪些比较棘手的问题

你负责项目的时候遇到了哪些比较棘手的问题?怎么解决的

1,什么背景(技术问题)

2,过程(解决问题的过程)

3,最终落地方案

你们是怎么做压测(性能测试)的

你们项目中日志怎么采集的

1,为什么要采集日志?

  • 日志是定位系统问题的重要手段,可以根据日志信息快速定位系统中的问题

2,采集日志的方式有哪些?

  • ELK: 即Elasticsearch、Logstash和Kibana三个软件的首字母
  • 常规采集: 按天保存到一个日志文件

ELK即Elasticsearch、Logstash和Kibana三个开源软件的缩写

你们项目中日志怎么采集的:

我们搭建了ELK日志采集系统介绍ELK的三个组件:

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

查看日志的命令

目前采集日志的方式:按天保存到一个日志文件

Linux中查看日志:

  1. 实时监控日志的变化
  2. 按照行号查询
  3. 按照关键字找日志的信息
  4. 按照日期查询
  5. 日志太多,处理方式

查看日志的命令。

怎么快速定位系统的瓶颈

怎么快速定位系统的瓶颈

  1. 压测(性能测试),项目上线之前测评系统的压力
  2. 监控工具、链路追踪工具,项目上线之后监控
  3. 线上诊断工具Arthas(阿尔萨斯),项目上线之后监控、排查

压测(性能测试)

  1. 压测目的: 给出系统当前的性能状况; 定位系统性能瓶颈或潜在性能瓶颈
  2. 指标: 响应时间、QPS、并发数、吞吐量、CPU利用率、内存使用率、磁盘IO、错误率
  3. 压测工具: LoadRunner、Apache Jmeter ...
  4. 后端工程师: 根据压测的结果进行解决或调优(接口慢、代码报错、并发达不到要求...)

监控工具、链路追踪工具

  1. 监控工具: Prometheus+Grafana
  2. 链路追踪工具: skywalking、Zipkin

线上诊断工具Arthas(阿尔萨斯)

  1. 官网:arthas
  2. 核心功能:

生产问题怎么排查

已经上线的bug排查的思路:

1,先分析日志,通常在业务中都会有日志的记录,或者查看系统日志,或者查看日志文件,然后定位问题

2,远程debug(通常公司的正式环境(生产环境)是不允许远程debug的。一般远程debug都是公司的测试环境,方便调试代码)

远程debug

前提条件: 远程的代码和本地的代码要保持一致

  1. 远程代码需要配置启动参数,把项目打包放到服务器后启动项目的参数:
  1. idea中设置远程debug,找到idea中的Edit Configurations...
  1. idea中启动远程debug
  1. 访问远程服务器,在本地代码中打断点即可调试远程

重点归类

面试准备

  1. 企业筛选简历规则
  2. 简历编写注意事项(亮点)
  3. 项目怎么找,学习到什么程度
  4. 面试过程(表达结构、什么样的心态去找工作)

MySQL

  1. 做过哪些优化(定位慢查询,排查慢查询、超大分页)
  2. 索引(底层数据结构、聚簇索引、非聚簇索引,覆盖索引)
  3. 优化经验(索引创建原则、sql优化)
  4. 事务(事务的特性,隔离级别、事务原理)

Redis

  1. 缓存相关(缓存击穿、穿透、雪崩、缓存过期淘汰、数据一致性)
  2. 分布式锁相关(redisson原理)
  3. 集群(主从、哨兵、分片集群)

SSM

  1. Spring中AOP(怎么用的,事务失效场景)
  2. Bean的生命周期和循环依赖
  3. Springboot动配置原理
  4. SpringMVC执行流程

微服务

  1. SpringCloud(常见组件、注册中心、负载均衡、熔断降级)
  2. 业务问题(限流、接口幂等、分布式事务, 分布式任务调度)

消息中间件

  1. RabbitMQ和Kafka
  2. 消息丢失
  3. 消息堆积
  4. 消息重复

常见集合

  1. ArrayListHashMap
  2. 底层源码
  3. 原理部分(数据结构)

多线程

  1. 线程基础(线程创建、状态及切换)
  2. 线程安全(synchronized、CAS、volatile、AQS、死锁)
  3. 线程池(7个参数、阻塞队列、核心线程数、项目中怎么用的)

JVM

  1. 3年以上开发人员
  2. 垃圾圆收(垃圾回收算法、垃圾回收器)
  3. JVM调优经验

企业场景问题

  1. 设计模式(工厂方法、策略、责任链)
  2. 技术场景
  • 单点登录
  • 权限认证
  • 数据安全
  • 项目中的难题
  • 日志采集和检索:
  • 生产问题排查
相关推荐
MZA6661 小时前
Spring Boot 实战:基于自定义注解 + AOP 实现 Kafka 消息无侵入异步上送
java·spring boot·kafka
我是大猴子1 小时前
为什么SSE无法代替Webscoket
java
重庆小透明1 小时前
Kafka 完全指南:从基础组件到核心原理(包含面试题)
java·分布式·微服务·架构·kafka
CodeStats1 小时前
【Java文件IO】Java 文件 IO 体系深度拆解(中):NIO API 详解、Files 与 FileChannel 巅峰对决
java·io·文件·nio·零拷贝·mmap
geovindu1 小时前
java:Observer Pattern
java·开发语言·后端·观察者模式·设计模式·行为模式
Am-Chestnuts1 小时前
通义千问任务清单怎么导出Word?用DS随心转保留层级和勾选项
开发语言·c#·word
lemon_sjdk2 小时前
ObservableNumberValue接口
java·javafx
wxwx_bscxy3222 小时前
springboot巡更系统10192
java·spring boot·后端·巡更系统
liliangcsdn2 小时前
基于信号强度的稀疏选股算法的探索分析
开发语言·python