阿里Java后端高频面试题+真实口语化答案(P5_P6通用).docxVIP

  • 1
  • 0
  • 约5.72千字
  • 约 8页
  • 2026-09-18 发布于河北
  • 举报

阿里Java后端高频面试题+真实口语化答案(P5_P6通用).docx

阿里Java后端高频面试题+真实口语化答案(P5/P6通用)

一、Java基础核心(必问)

1、String为什么不可变?底层原理、优缺点、实际坑点

参考答案:

首先,String底层是privatefinal的char数组(JDK9+换成byte数组),而且没有提供任何修改数组的方法,外部无法改动,所以天然不可变。

不可变的好处很实用:第一是线程安全,多线程并发访问不用加锁,不会出现数据错乱;第二是可以做缓存池,字符串常量池复用对象,减少内存占用;第三是作为HashMap的key很安全,哈希值不会变,不会出现key找不到的情况。

实际开发的坑点:很多人误以为拼接字符串是修改原对象,其实每次+、concat都会新建新的String对象。循环拼接大量字符串的时候,不用StringBuilder会产生大量临时对象,触发频繁GC,这是线上常见的性能问题。

补充:StringBuilder线程不安全、效率高;StringBuffer加了synchronized,线程安全但性能差,日常单线程开发优先用StringBuilder。

2、ArrayList和LinkedList区别?实际业务怎么选型

参考答案:

底层结构不一样,ArrayList是动态扩容的数组,LinkedList是双向链表。

ArrayList优势是随机访问快,通过下标查询时间复杂度O(1),但

文档评论(0)

1亿VIP精品文档

相关文档