中通快递 面经
第一次写面经,不清楚的地方还望海涵。
timeline:
- 10.18 一面(愉快)
- 10.23 二面(极度不愉快)
- 二面当天约HR。。。
1 一面:
- 自我介绍
- 实习项目,生产问题
- 实习项目方面:俩个完整的批处理设计,通过设计模式解耦并整合同类批处理功能,完成一个业务块的设计复用
- 生产问题方面:主要谈了业务底层sdk设计的kafka多线程并发消费导致的次序问题改造和一个接口的幂等改造
- HashMap 源码
- 二次幂如何取的?为什么要取?
- 散列法
- 扰动函数
- 扩容原理
- AQS 源码
因为HashMap问的比较多,这次AQS我就一股脑全说了,主要是以下几点
- state 在多种实现的用法区别、阻塞队列
- ReentrantLock 中 Sync是如何实现的,公平和非公平区别就在 tryLock 的时候 state == 0 时候,公平还要判断hasQueuedThread
- 如何基于AQS扩展,简单谈了下限流小玩具
讲完后没追问直接聊框架了。
- Spring 源码
- 用 ClasspathXmlApplicationContext 启动容器,执行流程是怎么样的?
- refresh 容器时,有一步预实例化的操作,简单讲一下有哪些操作(主要谈了 Factory Bean 的问题 和 SmartFactoryBean 接口可以配置迫切加载)
- Spring Boot 源码(问这个是因为,我说完Spring说了我最近在做渐进式手写 Springboot 的教程,已经写了10章了,正在写容器刷新部分)
- BootstrapContext 的作用
- 启动时候监听器是怎么实现的(SpringApplicationRunListeners + SpringApplicationRunListener + Spring 的简单事件多播器 + SPI加载)
- 启动配置的环境变量和配置文件的优先级,讲了配置传入和解析简单讲了讲(这块缺失没仔细看,感觉没啥意思)
- 常用八股:自动配置的实现
和一面面试官聊的很愉快,面试结束没多久就约了二面,然后md就奖励了我那个比。。。
2 二面:
当天面完气得很,主要分为俩部分。
- 实习项目 + 动不动宕机 (一条链路,前面宕了、后面宕了、中间宕了怎么处理。。。就这样扯皮了20分钟)
- 八股文:
- Mysql Next Key 锁
- Mysql 索引下推
- 问我看过 ConcurrentHashMap 没,RESIZE_STAMP_SHIFT 的作用是啥,我说我不会没仔细看过这个,然后又问了三遍,最后说:啊你没看过啊。
- 还有一些Redis的简单八股:红锁啥的
很无语的一次面试,可能看文字大家看不出我当时的无语。。
面完没多久就约HR面了。。不过听说钱不多,不准备面了,现在实习的公司也还可以。