当前位置: 首页 > news >正文

java八股文之企业场景

1.说一说工厂模式

  1. 简单工厂
    – 所有的产品都共有一个工厂,如果新增产品,则需要修改代码,违反开闭原则
    – 是一种编程习惯,可以借鉴这种编程思路
  2. 工厂方法模式
    – 给每个产品都提供了一个工厂,让工厂专门负责对应的产品的生产,遵循开闭原则
    – 项目中用的最多
  3. 抽象工厂方法模式
    – 如果有多个纬度的产品需要配合生产时,优先建议采用抽象工厂(工厂的工厂)
    – 如果要新增维度需要改动所有工厂,工作量大。 一般的企业开发中的较少

2.说一说策略模式

策略模式是一种行为设计模式,核心思想是将一组算法封装成独立的类,并让它们彼此之间可以互换。它通过三个角色实现:

  1. 抽象策略(Strategy):定义算法的公共接口
  2. 具体策略(Concrete Strategy):实现具体的算法逻辑,例如不同的交通方式
  3. 环境类(Context):持有策略对象,并在运行时动态切换策略

3.说一说责任链模式

在责任链模式中,通常每个接收者都包含对下一个接收者的引用。如果一个接收者不能处理某个请求,它会把这个请求传给下一个接收者,以此类推。这种模式非常适合用于实现过滤器或拦截器等应用场景,也可以用来处理GUI事件、web请求预处理等。
组成部分

  1. Handler(抽象处理者):定义一个处理请求的接口。如果有需要,还可以实现后继处理器的属性。
  2. ConcreteHandler(具体处理者):处理它所负责的请求。可以访问它的后继者,以备请求需被转发时使用。
  3. Client(客户端):向链上的具体处理者提交请求。
    优点
  • **降低耦合度:**责任链中的对象只与自己的后继者有联系,这降低了系统的耦合度。
  • 增强灵活性: 可以根据条件动态地添加或修改责任链中的节点。
  • 简化职责分配: 通过设置不同的处理器来处理特定类型的请求,使得职责分配更加清晰。

缺点

  • 如果没有明确的责任链结构,可能会导致循环引用的问题。
  • 责任链过长可能会导致性能问题,因为每个请求都要遍历整个链条直到找到能够处理该请求的对象。

4.单点登录如何实现

单点登录的英文名叫做:Single Sign On(简称SSO)
实现单点登录以jwt为例:

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

5.权限认证如何实现

后台的管理系统,最常见的就是RBAC模型来指导实现权限,RBAC(Role-BasedAccessControl)就是基于角色的访问控制

  • 3个基础部分组成:用户、角色、权限
  • 具体实现一般是两种
    – 5张表(用户表、角色表、权限表、用户角色中间表、角色权限中间表)
    – 7张表(用户表、角色表、权限表、菜单表、用户角色中间表、角色权限中间表、权限菜单中间表)
  • 一般用Spring security框架实现

6.如何保证上传数据的安全

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

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

7.项目遇见哪些棘手问题,如何解决的

从四个大方面回答,选择其一即可

  1. 设计模式
    – 工厂
    – 策略
    – 责任链等等
  2. 线上bug
    – CPU彪高
    – 内存泄露
    – 线程死锁等等
  3. 调优
    – 慢接口
    – 慢SQL
    – 缓存方案
  4. 组件封装
    – 分布式锁
    – 接口幂等
    – 分布式事务
    – 支付通用等

8.如何采集项目中的日志

搭建ELK日志采集系统
ELK三个组件:

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

9.查看日志的命令

实时监控日志的变化

  • 实时监控某一个日志文件的变化
tail -f xx.log;
  • 实时监控日志最后100行日志
tail -n 100 -f xx.log

按照行号查询

  • 查询日志尾部最后100行日志
tail -n 100 xx.log
  • 查询日志头部开始100行日志
head -n 100 xx.log
  • 查询某一个日志行号区间(查询100行至200行的日志)
cat - n xx.log | tail -n +100 | head -n 100

按照关键字找日志的信息(查询日志文件中包含debugl的日志行号)

cat -n xx.log | grep "debug"

按照日期查询

sed -n '/2023-05-18 14:22:31.070/,/2023-05-18 14:27:14.158/p' xx.log

日志太多,处理方式

  • 分页查询日志信息:
cat -n xx.log | grep "debug" more
  • 筛选过滤以后,输出到一个文件
cat -n xx.log | grep "debug" >debug.txt

10.如何排查生产日志

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

11.怎么快速定位系统瓶颈

  • 压测(性能测试)
    – 压测目的:给出系统当前的性能状况;定位系统性能瓶颈或潜在性能瓶颈
    – 指标:响应时间、QPS、并发数、吞吐量、CPU利用率、内存使用率、磁盘IO、错误率
    – 压测工具:LoadRunner、Apache Jmeter.
    – 后端工程师:根据压测的结果进行解决或调优(接口慢、代码报错、并发达不到要求)
  • 监控工具、链路追踪工具
    – 监控工具:Prometheus+Grafana
    – 链路追踪工具:skywalking、Zipkin
  • 线上诊断工具Arthas(阿尔萨斯)
    – 实时监控(Dashboard):实时查看 JVM 的 CPU、内存、GC、线程等状态。支持定时刷新,提供系统运行的全局视角。
    – 线程分析:查看所有线程的堆栈信息,快速定位阻塞或死锁。自动检测线程死锁并输出详细堆栈。
    – 性能分析:监控指定方法的执行时间、调用次数及耗时分布。:通过 profiler 命令生成火焰图,定位性能瓶颈。
    – 动态代码修改:无需重启应用,可动态重新加载类(redefine 命令)。通过 JavaAgent 技术修改运行时字节码,支持在线调试。
    – 类与方法操作:查看类的加载路径、加载器及依赖的 JAR 包。反编译运行中的类(jad 命令),查看代码逻辑。监控方法入参、返回值及异常(watch、monitor 命令)。
    – 调试与日志:跟踪方法执行的输入输出(trace 命令)。实时捕获指定方法抛出的异常。在运行时动态修改日志级别(如 logger 命令)。
    – 内存与对象分析:查看堆内存使用情况、GC 日志。定位 JVM 中特定类的实例对象(sc 命令)。
    – 问题排查工具:快速定位类加载问题(如 class 命令查看类来源)。提供丰富的命令(如 thread、stack、sm 等),支持快速排查问题。

相关文章:

  • rv1106抓h264流
  • 从泛读到精读:合合信息文档解析如何让大模型更懂复杂文档
  • 【leetcode刷题记录】(java)贪心
  • Netty - 从Nginx 四层(TCP/UDP)流量中获取客户端真实/网络出口IP
  • Java实现pdf中动态插入图片
  • 如何在 Postman 中正确设置 Session 以维持用户状态?
  • 亚马逊云科技提供完全托管的DeepSeek-R1模型
  • SEO(搜索引擎优化)详解
  • 处理脚本中函数调用的异常
  • 基于深度强化学习的智能机器人路径规划技术研究
  • 第六届 蓝桥杯 嵌入式 省赛
  • Postman CORS 测试完全指南:轻松模拟跨域请求,排查 CORS 相关问题
  • 软考中级-软件设计师 23种设计模式(内含详细解析)
  • Gateway实战(二)、负载均衡
  • React 中shouldComponentUpdate生命周期方法的作用,如何利用它优化组件性能?
  • Python爬虫如何检测请求频率?
  • Docker-Volume数据卷详讲
  • 循环神经网络 - 给网络增加记忆能力
  • 优化webpack打包体积思路
  • WebSocket:实时双向通信技术详解与实战示例优化指南
  • 上海市重大工程一季度开局良好,多项生态类项目按计划实施
  • 最高法、证监会:常态化开展证券纠纷代表人诉讼,降低投资者维权成本
  • 西班牙政府排除因国家电网遭攻击导致大停电的可能
  • 美国4月CPI同比上涨2.3%低于预期,为2021年2月来最小涨幅
  • 河南信阳拟发文严控预售许可条件:新出让土地开发的商品房一律现房销售
  • 地下5300米开辟“人造气路”,我国页岩气井垂深纪录再刷新