大厂Java面试实录:从ArrayList扩容机制到Redis分布式锁的连环技术拷问

第一轮面试:集合与多线程基础

面试官:说说ArrayList扩容机制? 王铁牛:这个简单!默认10个元素,不够就1.5倍扩容,用Arrays.copyOf实现。 面试官:(点头)不错,那HashMap头插法有什么隐患? 王铁牛:呃...可能会让元素顺序倒过来? 面试官:错!多线程下会导致死循环,JDK8已改用尾插法。

第二轮面试:JVM与并发进阶

面试官:强引用和弱引用怎么选型? 王铁牛:缓存用弱引用,内存不够就回收! 面试官:基本正确。那ThreadLocal内存泄露原理? 王铁牛:线程池复用导致Entry堆积...应该用remove清理! 面试官:(微笑)很好,知道预防措施。

第三轮面试:中间件实战

面试官:Redis分布式锁怎么实现续期? 王铁牛:设置30秒过期不就行了? 面试官:任务超时30秒怎么办?要用看门狗机制啊! 王铁牛:(冒汗)这个...下次会注意

技术解析

  1. ArrayList扩容:初始容量10,触发扩容时newCapacity = oldCapacity + (oldCapacity >> 1)
  2. HashMap死循环:多线程rehash时形成环形链表,get操作CPU飙升
  3. ThreadLocal内存泄露:Entry的key是弱引用,但value是强引用,必须remove
  4. Redis分布式锁:推荐Redisson的tryLock方法,内置看门狗自动续期
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值