- 2
- 0
- 约6.21千字
- 约 8页
- 2026-10-05 发布于河北
- 举报
阿里后端高频面试题及详细真实答案(无模板、贴合实战)
说明:所有题目为阿里近年真实面试高频题,答案摒弃书面模板,贴合一线开发实操经验,适配阿里P5-P7面试场景,语言口语化、接地气,无生硬套话。
一、Java基础核心(必问)
1、String为什么不可变?底层实现、优缺点及实战坑点
参考答案:
String不可变核心是底层字符数组被privatefinal修饰,且没有提供任何修改数组的对外方法。一旦初始化赋值,字符内容就无法被更改,所有拼接、截取操作都会生成新的String对象。
底层源码层面,JDK9之前使用char[]存储字符,JDK9之后优化为byte[],根据字符编码自适应存储,节省内存。
优点:第一,线程安全,多线程并发访问无需加锁;第二,支持字符串常量池复用,减少重复对象创建,节省内存;第三,作为HashMap的key更稳定,哈希值不会变动,避免映射失效。
缺点与实战坑点:频繁字符串拼接场景下性能极差,会产生大量无效临时对象,触发频繁GC。日常开发中,循环拼接必须用StringBuilder,多线程拼接场景用StringBuffer。
2、ArrayList和LinkedList底层区别、适用场景、并发问题
参考答案:
ArrayList底层是动态扩容的数组,默认初始容量10,扩容时扩容1.5倍,支持随机访问,通过下标查询
原创力文档

文档评论(0)