面试现场“震”情百态:HashMap扩容记
(以下为符合要求的文章内容)
【场景】
2024年秋招季某互联网大厂会议室
面试官:张工(P8级架构师)
求职者:马小帅(双非二本应届生)
第一轮提问(Java基础篇)
张工:先看下你的简历写着熟悉HashMap?说说底层结构?
马小帅:(挺直腰板)啊这...数组+链表!当链表长度超过8就转红黑树!
张工:(点头)不错!那扩容机制呢?
马小帅:(自信)默认容量16...每次扩容两倍!负载因子0.75触发扩容!
张工:很好!那ArrayList如何扩容?
马小帅:(抓耳挠腮)也是数组吧...大概每次加1.5倍?比如10变15?
突然手机震动从裤兜掉出砸地
张工:(皱眉)你这个ArrayList扩容抖得比你手机还厉害啊...
第二轮提问(并发编程篇)
张工:既然你提到了HashMap线程安全问题?用什么替代方案?
马小帅:ConcurrentHashMap!用CAS+synchronized分段锁实现!
窗外传来施工声马小帅突然起身关窗
张工:现在创建200个线程用哪个线程池?为什么?
马小帅:(手抖)应该用CachedThreadPool!最大线程数Integer.MAX_VALUE...
突然被楼下外卖电话打断思路开始翻找手机壳里的餐票
第三轮提问(分布式架构篇)
张工:Redis集群部署用过吗?说说数据分片策略?
马小帅:Cluster模式用哈希槽...16384个slot分配给不同节点!
茶水间突然飘来咖啡香导致打喷嚏打翻水杯
终章通知环节
张工合上简历露出神秘微笑:"我们有XX云原生架构师岗正在扩编..."话音未落办公室停电引发骚动
最终HR发来短信:"感谢参与本次压力测试面试..."