分析场景题常用思路?

  1. 问题定位
  2. 收集必要信息
  3. 优化排查

单例模式中懒汉、饿汉的区别

  1. 懒汉模式:调用时才会创建,是延迟加载,默认线程不安全需要加锁,节省内存,调用速度低一点
  2. 饿汉模式:类创建时就会创建实例,线程安全,调用速度快,可能会浪费资源

数据库线程池占满了可能原因?

  1. 问题定位 通过日志,监控面板,工具 是否突发
  2. 收集信息 连接池信息,资源利用率,是否有激增流量或者代码变更
  3. 分析环节 sql语句慢查询 连接未关闭,连接长时间不释放,连接泄漏
  4. 调整连接池配置 参数,超时设置

内存泄漏和内存溢出的区别?

  1. 内存泄漏:对象使用完成之后没有正确释放,垃圾回收器没有正确回收。长时间问题,长时间运行后会导致OOM
  2. 内存溢出:对象申请内存时,没有足够的内存分配,会导致程序崩溃。

内存溢出OOM可能原因?

  1. 一开始分配内存过小
  2. GC速度跟不上内存使用速度
  3. 有内存泄漏情况

cpu占用率高怎么解决?

  1. 问题定位:确认高CPU进程
  2. 收集信息:通过日志和工具收集信息。(堆栈/GC/内存)
  3. 分析原因:死循环,频繁GC,锁竞争,io密集型操作

接口调用api响应慢怎么解决?

  1. 问题确认:单个/整体 慢
  2. 收集信息:使用工具,日志
  3. 优化与排查:cpu/内存 磁盘/网络IO 数据库问题(慢查询,连接池) 代码编写 外部依赖与中间件

OOM怎么解决?

  1. 先扩大虚拟机内存
  2. 问题定位:OOM发生位置,堆/栈/直接内存/元空间
  3. 收集信息:使用MAT分析dump文件/日志/其他监控工具
  4. 优化排查:排查内存泄漏/代码问题/堆参数配置不合理

OOM发生原因?

  1. 内存泄漏累积
  2. 配置参数设置不合理
  3. GC速度跟不上写入速度

慢查询怎么优化?

  1. 问题确定
  2. 收集信息
  3. 优化
  4. 慢查询日志 explain
  5. 索引失效 语句不对 数据库设计问题 硬件与配置问题