【高频面试题】常见技术场景

news/2024/11/8 3:16:49/

文章目录

    • 单点登录这块怎么实现的
    • 权限认证是如何实现的
    • 上传数据的安全性怎么控制?
    • 你们项目中日志怎么采集的
    • 查看日志的命令
    • 生产问题怎么排查
    • 怎么快速定位系统的瓶颈

单点登录这块怎么实现的

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

单体项目(基于session):

在这里插入图片描述

单个tomcat服务session可以实现用户信息共享

1、每次在做请求的时候,都会去判断session中是否有用户登录的信息
2、 如果没有就不让访问,直接跳转到登录页面进行登录
3、 登录校验成功后再把用户的登录信息放到session中
4、在退出登录的时候照样删除用户的session信息

微服务项目(基于cookie+token):

在这里插入图片描述
常见的方式有JWT

例如:以下微服务板块:

在这里插入图片描述

在这里插入图片描述
核心步骤:

  1. 用户访问其他系统,会在网关判断token是否有效
  2. 如果token无效则会返回401(认证失败)前端跳转到登录页面
  3. 用户发送登录请求,返回浏览器一个token,浏览器把token保存到cookie
  4. 再去访问其他服务的时候,都需要携带token,由网关统一验证后路由到目标服务

权限认证是如何实现的

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

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

3个基础部分组成:用户、角色、权限
具体实现

  • 5张表(用户表、角色表、权限表、用户角色中间表、角色权限中间表)
  • 7张表(用户表、角色表、权限表、菜单表、用户角色中间表、角色权限中间表、权限菜单中间表)

以5张表的为例:
在这里插入图片描述
流程:张三登录系统—> 查询张三拥有的角色列表—>再根据角色查询拥有的权限

根据用户去查对应角色,再根据角色去查权限,然后把这些信息封装到一个集合中返回。

基本都要搭配权限框架去实现权限控制
权限框架:
Apache shiro 、 Spring security(推荐)
参考链接:【Spring Security权限框架】SpringBoot整合Spring Security实现权限控制

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

也就是当我们在浏览器向后台上传数据的时候,会涉及到网络传输,这一阶段如果有人通过某种手段可以截取数据,造成数据泄漏。
在这里插入图片描述
解决方案:
使用非对称加密(或对称加密),给前端一个公钥让他把数据加密后传到后台后台负责解密后处理数据

对称加密:
文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥
当然加密算法也是一样的

在这里插入图片描述非对称加密:
两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密私有密钥解密
在这里插入图片描述

两者对比无非就是加密和解密使用的秘钥是相同还是不同。 并且优缺点也很明显,实现简单的速度就快,缺点就是不安全,实现复杂的速度就慢,安全性高。

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

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

采集日志的方式有哪些?

通常使用:ELK:即Elasticsearch、Logstash和Kibana三个软件的首字母

在这里插入图片描述

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

查看日志的命令

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

Linux中查看日志:
实时监控日志的变化
按照行号查询
按照关键字找日志的信息
按照日期查询
日志太多,处理方

在这里插入图片描述

生产问题怎么排查

已经上线的bug排查的思路:
1,先分析日志,通常在业务中都会有日志的记录,或者查看系统日志,或者查看日志文件,然后定位问题(ELK)
2,远程debug(通常公司的正式环境(生产环境)是不允许远程debug的。一般远程debug都是公司的测试环境,方便调试代码)

远程debug
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

怎么快速定位系统的瓶颈

  1. 压测(性能测试),项目上线之前测评系统的压力

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

  1. 监控工具、链路追踪工具,项目上线之后监控

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

  1. 线上诊断工具Arthas(阿尔萨斯),项目上线之后监控、排查

官网:https://arthas.aliyun.com/
核心功能:
在这里插入图片描述

火焰图:
在这里插入图片描述


http://www.ppmy.cn/news/1031558.html

相关文章

设计师常用的UI设计软件推荐

如今,随着互联网时代设计岗位的演变,近年来出现了一位新兴而受欢迎的专业UI设计师。对于许多对UI设计感兴趣或刚刚接触UI设计的初学者来说,他们不禁想知道,成为一名优秀的UI设计师需要掌握哪些UI软件?今天,…

Python爬虫——selenium的安装和基本使用

1.什么是selenium? selenium是一个用于web应用程序测试的工具selenium测试直接运行在浏览器中,就像真正的用户在操作一样支持通过各种driver(FrifoxDriver,ItenrentExploreDriver,OperaDriver,ChromeDrive…

CF 1859E Maximum Monogonosity 绝对值的巧妙处理和状态设计

CF 1859E 题意:给你两个长度为 n n n的数组 a a a, b b b,选择一些点对 ( l i , r i ) (l_i,r_i) (li​,ri​)。 每个点对对答案产生贡献 a b s ( b l i − a r i ) a b s ( b r i − a l i ) abs(b_{l_i}-a_{r_i})abs(b_{r_i}-a_{l_i}) abs(bli​​−ari​​)abs(…

配置网络设置和修改主机名

bash 题目: 在 node1 上配置网络,要求如下: 主机名:node1.domain8.rhce.cc IP地址: 172.25.250.10/24 ##注意掩码 网关: 172.25.250.250 DNS: 172.25.250.250 ##名称服务器 做法: nmtui 回车…

go内存管理机制

golang内存管理基本是参考tcmalloc来进行的。go内存管理本质上是一个内存池,只不过内部做了很多优化:自动伸缩内存池大小,合理切割内存块。 基本概念: Page:页,一块 8 K大小的内存空间。Go向操作系统申请和…

Axure RP移动端高保真CRM办公客户管理系统原型模板及元件库

Axure RP移动端高保真CRM办公客户管理系统原型模板及元件库,一套典型的移动端办公工具型APP Axure RP原型模板,可根据实际的产品需求进行扩展,也可以作为移动端原型设计的参考案例。为提升本作品参考价值,在模板设计过程中尽量追求…

代码生成模型任务设计

背景: 模型应该具备,理解代码的能力、知道代码规则的能力、知道关键词和变量的能力、知道代码逻辑的能力、文本到代码翻译能力、代码关联能力、代码续写能力。 代码理解能力:pretrain让模型读足够多代码、记住代码一些规则、代码问答、基于…

【LeetCode每日一题】——128.最长连续序列

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 中等 三【题目编号】 128.最长连续序列 四【题目描述】 给定一个未…