Java 项目源码面试题(含详细参考答案).docxVIP

  • 0
  • 0
  • 约6.42千字
  • 约 9页
  • 2026-11-16 发布于河北
  • 举报

Java 项目源码面试题(含详细参考答案).docx

Java项目源码面试题(含详细参考答案)

适用:后端开发、业务项目源码阅读、线上问题排查、工程落地面试

一、基础源码阅读类

1.说一说你阅读过哪些JDK核心类源码,挑一个讲清楚它的核心设计

参考答案:

日常重点看过ArrayList、HashMap、ThreadPoolExecutor、String这几个类。以HashMap为例:

底层是数组+链表+红黑树,数组称为哈希桶。put流程:

先对key做hash运算,定位桶下标;

如果桶位置为空,直接新建节点放入;

如果不为空,判断头节点是否和当前key相等,相等则覆盖value;

如果是链表,向后遍历,找到相同key覆盖,找不到追加到链表尾部;当链表长度达到树化阈值(默认8),同时数组容量大于等于64,链表转为红黑树;

如果是红黑树,走树节点的插入逻辑;

插入完成后判断容量,超过负载因子(默认0.75)乘以数组长度,触发扩容。

扩容时容量变为原来两倍,重新对所有节点rehash。因为容量是2的幂,rehash时节点只有两种去向:留在原下标,或者原下标+旧容量。

负载因子0.75是时间和空间的折中。太小浪费内存,太大哈希冲突概率明显上升。

2.ArrayList和LinkedList源码层面的区别,什么场景优先选哪一个

参考答案:

ArrayList底层是Ob

文档评论(0)

1亿VIP精品文档

相关文档