正在打开页面…

面试题:后端

后端工程师岗位相关的接口设计、服务端基础、并发、存储和稳定性面试准备。

JVM 运行时数据区分别保存什么,哪些区域由线程共享?

JVM 运行时通常包括程序计数器、虚拟机栈、本地方法栈、堆和方法区等区域;栈和程序计数器具有线程私有特征,堆和类元数据通常由线程共享。

Java/JVM后端中频题

Java 类加载过程有哪些阶段,双亲委派解决什么问题?

类加载通常经历加载、验证、准备、解析和初始化等阶段;双亲委派让类加载器先请求父加载器,避免核心类被应用类覆盖并减少重复加载。

Java/JVM后端中频题

Java 对象在堆上如何分配,逃逸分析可能带来什么优化?

对象通常在堆上分配,但 JIT 可以通过逃逸分析判断对象是否离开方法或线程作用域,从而进行标量替换、栈上分配等优化;这些是运行时优化而非代码契约。

Java/JVM后端中频题

Java 堆、栈和元空间的内存问题应怎样区分?

堆问题通常表现为 Java heap space,栈问题常见 StackOverflowError 或线程栈占用,元空间问题常见 Metaspace OOM;诊断要结合错误类型和运行时指标。

Java/JVM后端中频题

GC Roots 包括哪些对象,为什么判断对象可回收不能只看引用计数?

垃圾回收器从 GC Roots 遍历可达对象;不可达对象才具备被回收的条件。Java 不采用单纯引用计数,因为循环引用仍可能整体不可达。

Java/JVM后端中频题

Minor GC、Major GC、Full GC 分别应怎样理解,为什么不能只按名称判断停顿?

这些名称在不同收集器中的边界并不完全统一;应关注收集了哪些区域、是否移动对象、暂停时间和对应用吞吐的影响。

Java/JVM后端中频题

G1、ZGC 等低停顿收集器解决什么问题,为什么不是延迟越低越好?

低停顿收集器通过并发标记、分区或着色指针等机制降低停顿,但仍要付出 CPU、内存、写屏障和吞吐成本,选择取决于延迟目标和堆规模。

Java/JVM后端中频题

StackOverflowError、OutOfMemoryError 和 Java heap space 应怎样区分?

StackOverflowError 常与线程栈深度有关,OutOfMemoryError 是内存资源无法满足分配,Java heap space 是其中针对堆分配失败的典型信息。

Java/JVM后端中频题

JIT 编译、解释执行和热方法分别是什么,为什么预热会影响 Java 性能?

Java 代码通常先由解释器执行,热点代码被识别后由 JIT 编译为机器码并进行内联等优化;启动阶段和稳态阶段的性能可能不同。

Java/JVM后端中频题

Java 内存模型中的可见性、有序性和 happens-before 如何理解?

Java 内存模型定义线程间读写的可见性和排序关系;锁释放与获取、volatile 写与读、线程启动和结束等建立 happens-before。

Java/JVM后端中频题