实习面经摘录(六)

来自网络,供个人学习,侵删 某滴

先完成再完美

1.JVM内存结构

也被定义为 运行时数据区,JVM内存结构分为两大类:线程私有区域/线程共享区域

3.内存泄漏怎么处理排查

常见内存泄漏场景

  • 静态集合类:不断add却从不remove。
  • 未关闭的资源:数据库连接、IO流、Socket连接未关闭(虽然现代框架大多自动管理,但手动编码时易犯)。
  • 监听器和回调:注册了监听器却忘记注销。
  • ThreadLocal 使用不当:线程池复用线程时,ThreadLocal变量未remove,导致大对象一直被线程引用。
  • 内部类持有外部类引用:非静态内部类隐式持有外部类实例,若内部类生命周期长,外部类也无法回收。

4.死锁条件,怎么排查;在写代码时候怎么避免死锁

  • 互斥条件;
  • 持有并等待条件;
  • 不可剥夺条件;
  • 环路等待条件;

jstack 是 JDK 自带的强大工具,能直接检测出死锁。

Linux: top -H -p <pid> 查看线程 CPU 占用。死锁的线程通常 CPU 为 0%(因为在 wait 状态),但状态是 BLOCKED。

使用资源有序分配法,来破环环路等待条件。

5.mysql中sql语句执行流程;

连接,查询缓存,解析sql,执行sql(预处理,优化,执行)

6.SELECT* 和SELECT 字段有什么区别;

后者若查询字段刚好在索引上,可实现覆盖索引扫描,无需回表,速度极快。

7.SELECT 字段一定可以避免死锁吗

1.经典的"交叉更新"死锁(最常见)

2.锁升级死锁 (S 锁 -> X 锁)

  • A 等 B 释放 S 锁以便升级。

  • B 等 A 释放 S 锁以便升级。

  • 死锁形成。

相关推荐
三无少女指南29 分钟前
从这里开始:Java 后端与 AI 工程的三条阅读路线
java·学习路线·ai工程
香蕉大香蕉(06敬畏市场)1 小时前
MySQL 单点详解(07)
java·数据库·mysql·ai·博客·八股
nice_lcj5201 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试
骑着蜗牛撵大象3272 小时前
2026 后端 AI 工程化:Spring AI 管调用、MCP 管工具、Agent 内嵌管自治
java·人工智能·后端·spring·ai·可观测性·mcp
tryxr2 小时前
JVM 垃圾回收机制
java·jvm·gc·垃圾回收
揣一尾游鱼yu3 小时前
Spring上(IOC)笔记
java·笔记·spring·ioc
荣码3 小时前
长上下文与大文档处理:200页PDF怎么喂给AI,我踩了4个坑
java·python
极限挑战哥3 小时前
共享电单车联营平台分账架构实践:二清合规与自动分账零人工方案
java·大数据·人工智能·微信小程序·架构·微信公众平台
皮皮林5514 小时前
比 VMware 更快,更轻的虚拟机,横空出世!
java
Thomas.Sir4 小时前
第13课:MyBatis-Plus整合SpringBoot4.x,分页、条件查询、逻辑删除实战
java·spring boot