26年2月京东 Java开发工程师 一面
1. Java中String a = "test" 和 String b = new String("test"),a==b 和 a.equals(b) 结果分别是什么?
思路
== 比较地址,equals 比较内容;常量池和 new 对象地址不同。
回答示例
面试官您好,a==b 的结果是 false,因为 a 指向常量池,b 指向堆上新创建的对象,地址不一样。
a.equals(b) 结果是 true,因为 equals 比较的是字符串内容,两个字符串内容完全一样。
2. ArrayList和LinkedList的区别?什么场景下LinkedList反而比ArrayList慢?
思路
结构、查询、插入、内存;随机访问场景 LinkedList 更慢。
回答示例
ArrayList 是数组结构,查询快、插入删除慢;LinkedList 是双向链表,插入删除快、查询慢。
LinkedList 占内存更大,因为要存节点指针。
在大量随机访问、根据下标 get 的场景下,LinkedList 比 ArrayList 慢很多,因为它要从头遍历找节点。
3. HashMap的底层数据结构?JDK 1.8中链表长度超过多少会转为红黑树?
思路
数组+链表+红黑树;阈值 8,退化 6。
回答示例
HashMap 底层是 数组 + 链表 + 红黑树。
JDK 1.8 中,当链表长度 超过 8,并且数组长度 ≥ 64 时,会转换成红黑树。
当红黑树节点数降到 6 时,会转回链表。
4. 线程池的七大参数有哪些?核心线程数如何合理设置?
思路
七大参数背诵;CPU 密集型/IO 密集型设置规则。
回答示例
七大参数是
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
【八股真解】精炼最新高频面经 文章被收录于专栏
本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏
查看15道真题和解析