文章目录
一、Java基础必考三连击
1. String的不可变性(重要考点!)
- 底层使用final char[]实现(JDK9后改为byte[])
- 修改操作会产生新对象:“Hello”+"World"会创建3个对象!!!
- 实际开发中的坑:循环拼接用
StringBuilder
(性能差100倍!)
2. 泛型擦除的破局之道
List<Integer> list = new ArrayList<>();
// 运行时类型擦除为List
// 但通过反射可以突破限制(慎用!)
list.getClass().getMethod("add", Object.class).invoke(list, "字符串");
3. 异常处理新姿势
- try-with-resources语法糖(自动关闭资源)
- 多异常捕获:
catch(IOException | SQLException e)
- 自定义异常要带根因:
throw new ServiceException("操作失败", e);
二、并发编程死亡问答
1. synchronized的升级之路
偏向锁 -> 轻量级锁 -> 重量级锁(对象头Mark Word见证)
2. ThreadLocal的魔幻内存泄漏
- key是弱引用,value是强引用(必须remove!)
- 最佳实践:用private static修饰(减少实例数量)
3. CAS的ABA问题怎么破
- AtomicStampedReference(版本号机制)
- 真实案例:账户余额变更流水校验
三、JVM调优实战密码
1. 对象生死判定
- 可达性分析算法(GC Roots包括:栈帧、静态变量、JNI引用)
- 强/软/弱/虚引用的回收策略差异
2. 内存泄漏排查三板斧
jmap -histo:live <pid> # 查看对象实例数
jstack <pid> # 分析线程堆栈
arthas的memory命令 # 实时监控内存分配
3. GC算法选型指南
- G1:响应优先(默认200ms停顿)
- ZGC:超大堆神器(TB级堆无压力)
- 参数设置示例:
-XX:+UseZGC -Xmx16g
四、Java 17新特性速递
1. 密封类(Sealed Classes)
public sealed interface Shape permits Circle, Square {
// 限定子类范围
}
2. 模式匹配升级版
if(obj instanceof String s && s.length()>5) {
System.out.println(s.toUpperCase());
}
3. 向量API(孵化阶段)
SIMD指令加速计算(机器学习场景性能提升300%!)
五、Spring框架灵魂拷问
1. Bean生命周期冷知识
BeanPostProcessor干预初始化(AOP代理在此生成)
2. 循环依赖破解术
三级缓存解决(提前暴露半成品对象)
3. 事务传播的七种武器
- REQUIRED(默认):加入已有事务
- REQUIRES_NEW:新建独立事务
- NESTED:嵌套事务(部分数据库支持)
六、设计模式场景题
1. 单例模式的五种写法
- 双重检查锁要加volatile(禁止指令重排序)
- 枚举单例防反射攻击(推荐!)
2. 动态代理选型指南
- JDK动态代理:基于接口
- CGLIB:生成子类(final方法无法代理)
3. 模板方法实战案例
JdbcTemplate的经典实现(封装try-catch-finally套路)
七、算法突围秘籍
1. 二叉树遍历的六种姿势
- 递归 vs 迭代
- Morris遍历(O(1)空间复杂度)
2. TOP K问题最优解
- 堆排序(适合动态数据)
- 快排变种(O(n)时间复杂度)
3. 字符串匹配算法段位
- 暴力法(青铜)
- KMP(黄金)
- Boyer-Moore(王者)
八、项目经验包装术
1. 秒杀系统设计要点
- 缓存预热 + 令牌桶限流
- 库存扣减用Redis+Lua脚本(原子操作)
2. 分布式ID生成方案
- Snowflake算法(时钟回拨问题)
- Leaf-segment号段模式(美团方案)
3. 线上故障排查案例
- CPU飙高:死循环 vs 频繁GC
- 内存OOM:堆内存 vs 堆外内存
九、面试终极生存指南
1. 技术反问的正确姿势
- “咱们团队的代码审查流程是怎样的?”
- “项目的技术债主要集中在哪些方面?”
2. 薪资谈判禁忌
- 不要先报数字(锚定效应)
- 合理涨幅计算:30%是跳槽基准线
3. 职业规划话术模板
“希望3年内成长为全栈架构师,能独立负责亿级流量系统设计”
(实战建议)建议每天刷2道LeetCode中等题,坚持三个月会有质的飞跃!遇到不会的问题可以说:“这个知识点我需要查下资料确认”,诚实比不懂装懂更安全。记得把简历上的每个技术点都准备2个追问案例,祝大家斩获心仪offer!