欢迎光临
我们一直在努力

小米Java基础专项面经:GC算法、synchronized、动态代理的实现原理

小米Java基础专项面试:小米Android开发覆盖MIUI系统定制、IoT设备互联。技术栈偏底层,面试官喜欢问系统级原理和性能数据。技术方向偏向MIUI定制、IoT互联。特色专项包括MIUI系统定制与IoT设备开发。今天8道题覆盖小米Java基础专项面试核心考点。

Q1:GC算法和垃圾收集器对比?

基础算法:标记-清除(有碎片)、标记-复制(浪费一半空间但无碎片)、标记-整理(无碎片但慢)。分代策略:新生代用复制算法,老年代用标记-整理。收集器演进:Serial→Parallel→CMS(低停顿)→G1(Region化管理)→ZGC(<10ms停顿)。

深度解析:GC 目标是回收不可达对象。判断可达性用 GC Roots 引用链。Android ART 默认分代、并发、部分压缩,尽量缩短 Stop-The-World。容易踩的坑是:频繁创建临时对象会引发频繁 Minor GC,造成内存抖动和卡顿。;面试官常追问:追问:finalize 为什么不推荐?不确定性高且拖慢回收。。

追问:G1的Mixed GC是什么?同时回收新生代和部分标记为可回收的老年代Region,避免Full GC。

Q2:synchronized和ReentrantLock的区别?

synchronized是JVM关键字,自动释放锁;ReentrantLock是API类,必须手动unlock放finally里。ReentrantLock多了公平锁、可中断、tryLock超时、多Condition等高级特性。JDK6后synchronized大优化——偏向锁→轻量级锁→重量级锁的升级链让性能差距不大了。

赞(0)
未经允许不得转载:171主机测评 » 小米Java基础专项面经:GC算法、synchronized、动态代理的实现原理
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址