有赞后端开发实习三面面经
第一次面试 2.25下午5点 有赞 (45分钟)
面试官很友善友善,听起来很年轻, 问题都是随着你的回答抛出来的!
1.mysql聚簇索引,非聚簇索引里有哪些索引,覆盖索引。
2.JAVA SPI。
3.双亲委派。
4.描述网络分层 ,每层有哪些协议。
5.描述TCP,三次握手,TCP有哪些方式保证可靠性。快重传过程(还有随之发生的恢复算法),拥塞控制,流量控制。 拥塞控制流量控制区别 ,SACK。
6.Bean的生命周期。IOC原理,AOP原理。
7.代理模式,还用到了什么设计模式。
8.场景题,给查询条件A and B and C, B and C , A and C ,怎么建立索引(非固定答案)。
9.补充 ,问我看过Proxy的源码没,没看过。
反问:第一次面试有啥不足的地方,希望面试官指导。 然后多嘴了一句准备的很多东西没问,然后面试官问我什么没问,我赶紧收嘴说没有没有没有没有。
第二次面试 2.28 62分钟
也是一个很友善友善的面试官,年龄比一面的面试官大一些。
1.聊了很长时间的项目。(执行流程,如何实现的,如何选择线程池线程数)。
2.数据库隔离级别。
3.二级索引和聚簇索引区别。
4.Redis基本类型和高级类型,SDS源码问了一些,和C字串比有什么优点,为什么区分几种结构体。
5.还问了Linux了解哪些指令。
6.会什么设计模式(不一定要会用),全说出来。(答了单例五种 工厂方法 观察者 代理 )
第三次面试 3.4 30分钟
面试官看起来就很强很强。给了我一些提升建议。
1.刚开始聊项目(你做了什么 改进点 为啥要这样做 如何设计的)
2.问了IOC和AOP是咋实现的,Cglib和JDK动态代理区别。
3.问了解哪些线程安全集合容器 ,ConcurrentHashMap,Vector。详细介绍一下ConcurrentHashMap,JDK1.7和1.8的特性都说了一下。
4.问了分布式会不会(不会),还有一个分布式场景题,分布式通信(答了消息队列)。
5.然后就是问了解哪些线程安全的类的源码,说了ReentrantLock, 公平锁, 非公平锁的实现。(我讲了模板方法设计模式,重写了什么方法,线程在队列中的自旋机制 )
6.讲AQS怎么释放锁,唤醒队列中的线程的。(讲了头结点是虚结点 ,也是模板方法模式,在Sync里面 设置锁状态 唤醒队列中的线程 )
聊了聊部门情况。