答案是:面试应聚焦字符串不可变性、intern机制、equals与==区别、StringBuilder/StringBuffer取舍及常见方法陷阱。需动手验证内存行为,注意null安全、线程安全选择及JDK版本差异等细节。

直接查“Java 字符串面试速查手册”本身不是标准文档或官方资源,它通常是程序员整理的面试高频知识点汇总,没有统一发布渠道。想快速获取有效内容,关键不是“搜手册名字”,而是按真实面试逻辑定位核心考点。
查字符串不可变性与 intern 机制
这是高频第一问。重点看 String 对象创建方式(字面量 vs new)、字符串常量池位置、intern() 方法作用。例如:String s1 = "abc"; String s2 = new String("abc").intern();,s1 == s2 为 true。建议动手写几行代码验证不同创建方式的内存行为,比死记结论更牢。
查 equals 和 == 的区别与重写逻辑
必须明确:== 比较引用,equals 比较内容(String 已重写)。注意 null 安全写法——str != null && str.equals("xxx") 或用 Objects.equals(str, "xxx")。面试官常故意给出 null 场景,考察边界意识。
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
查 StringBuilder 与 StringBuffer 的取舍依据
两者都可变、都用于拼接,区别只在是否线程安全:
- StringBuffer 方法加了 synchronized,适合多线程但慢
- StringBuilder 非同步,单线程场景首选
- 不要在循环里用 + 拼接大量字符串,JVM 虽会优化,但显式用 StringBuilder 更清晰可控
立即学习“Java免费学习笔记(深入)”;
查常见方法的实际陷阱
比如 substring 在 JDK 6 和 JDK 7+ 实现不同(是否共享底层数组),trim() 只删 ASCII 空格(u0020),要删全角空格得自己处理;split("\.") 要转义点号;replace 和 replaceAll 参数类型不同(前者 char/CharSequence,后者正则)。这些细节一问就露馅,查时重点看 JavaDoc 原文说明,别信二手总结。

















