11-Interview

1. Runtime data area

  1. 强引用、软引用、弱引用、虚引用有什么区别?具体使用场景是什么?
  2. 你开发中使用过WeakHashMap吗?
    • WeakHashMap用来存储图片信息,可以在内存不足的时候,及时回收,避免了OOM
  3. Java常见的垃圾收集器有哪些?
  4. Serial、Parallel、CMS有什么不同呢?
    • 最小化地使用内存和并行开销,Serial
    • 最大化应用程序的吞吐量,Parallel
    • 最小化GC的中断或停顿时间,CMS
  5. 不使用标记整理算法?
    • 并发清除与用户线程并行,Mark Compact更适合STW
  6. 举例栈溢出的情况(StackOverflowError)?
    • 通过-Xss设置栈的大小。OOM
  7. 调整栈大小,就能保证不出现溢出么?
    • 不能保证不溢出(死递归)
  8. 分配的Stack内存越大越好么?
    • 不是,一定时间内降低了OOM概率,但是会挤占其它的线程空间,因为整个空间是有限的
  9. 垃圾回收是否涉及到JVM_Stack?
    • 不会

2. JMM

  1. 说一下JVM内存模型吧,有哪些区?分别干什么的?
  2. Java8的内存分代改进
  3. JVM内存分哪几个区,每个区的作用是什么?
  4. JVM内存分布/内存结构?栈和堆的区别?堆的结构?为什么两个Survivor区?
  5. Eden和Survior的比例分配
  6. JVM内存分区,为什么要有新生代和老年代
  7. 讲讲JVM运行时数据区
  8. 什么时候Obj会进入老年代?
  9. JVM的内存结构,Eden和Survivor比例
  10. JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden、Survivor
  11. JVM内存模型以及分区,需要详细到每个区放什么
  12. JVM的内存模型,Java8做了什么修改
  13. JVM内存分哪几个区,每个区的作用是什么?
  14. JVM的永久代中会发生垃圾回收吗?
  15. JVM内存分区,为什么要有新生代和老年代?
  16. 对象在JVM中是怎么存储的?
  17. 对象头信息里面有哪些东西?
  18. Java对象头有什么?

3. GC

1. 蚂蚁金服

  • 你知道哪几种垃圾回收器,各自的优缺点,重点讲一下CMS和G1?
  • JVM GC算法有哪些,目前的JDK版本采用什么回收算法?
  • G1回收器讲下回收过程?GC是什么?为什么要有GC?
  • GC的两种判定方法?CMS收集器与G1收集器的特点?

2. 百度

  • 说一下GC算法,分代回收说下
  • 垃圾收集策略和算法

3. 天猫

  • JVM GC原理,JVM怎么回收内存
  • CMS特点,垃圾回收算法有哪些?各自的优缺点,他们共同的缺点是什么?

4. 滴滴

  • Java的垃圾回收器都有哪些,说下g1的应用场景,平时你是如何搭配使用垃圾回收器的

5. 京东

  • 你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点。垃圾回收算法的实现原理

6. 阿里

  • 讲一讲垃圾回收算法?
  • 什么情况下触发垃圾回收?
  • 如何选择合适的垃圾收集算法?
  • JVM有哪三种垃圾回收器?

7. 字节跳动

  • 常见的垃圾回收器算法有哪些,各有什么优劣?
  • System.gc()Runtime.gc()会做什么事情?
  • Java GC机制?GC Roots有哪些?
  • Java对象的回收方式,回收算法
  • CMS和G1了解么,CMS解决什么问题,说一下回收的过程?
  • CMS回收停顿了几次,为什么要停顿两次?