面试鸭 Java 后端面试题, 北京某互联网公司 Java 面经
面试鸭 Java 后端面试题, 北京某互联网公司 Java 面经
QA
Step 1
Q:: 面试题: 解释一下 Java 的内存模型 (Java Memory Model, JMM)
?
A:: 答案: Java 内存模型 (Java Memory Model, JMM)
定义了 Java 程序中各种变量(包括实例字段、静态字段和构成数组对象的元素)的访问规则。JMM 是为了解决多线程编程中存在的内存可见性问题,确保在多线程环境下,每个线程对内存的读写操作是可预期的。JMM 规定了一个线程写入共享变量后的新值对其他线程可见的时间和方式,并规范了内存屏障和 volatile 关键字的使用。
Step 2
Q:: 面试题:
解释一下 Java 中的垃圾回收机制?
A:: 答案: Java 的垃圾回收机制主要是为了自动管理内存,回收不再使用的对象,从而避免内存泄漏。Java 使用的是标记-清除、复制、标记-整理等多种垃圾回收算法。JVM 中的垃圾回收器有多种实现,如 Serial、Parallel、CMS (Concurrent Mark-Sweep) 和 G1 (Garbage-First)
等。垃圾回收机制主要包括年轻代(Eden、Survivor)和老年代的管理,不同垃圾回收器在不同代上有不同的策略。
Step 3
Q:: 面试题:
什么是 Java 中的线程池?为什么要使用线程池?
A:: 答案:
线程池是一种多线程处理模式,通过预先创建一组线程来应对大量并发请求。使用线程池的主要优点是减少了线程的创建和销毁所带来的开销、提高了响应速度以及更好地管理系统资源。Java 提供了 Executor 框架来管理线程池,可以使用如 FixedThreadPool、CachedThreadPool、ScheduledThreadPool 和 SingleThreadExecutor 等不同类型的线程池来处理不同的任务需求。