阿里最受追捧的「中高级技术核心」,助我拿下菜鸟 offer,附面经
在 boss 直聘上无意间看到了阿里巴巴菜鸟网络的招聘信息,现在的部门已经有两名同学被蚂蚁金服录取了,自己就不服气的也想试试。这次面试其实并没有准备充分。
之前就听说总共有很多轮数,不仅会考察基础知识的深度,也会考察算法能力、项目设计能力、价值观世界观等。自己抱着能走多远走多远的态度,挑战一下自己。
在发过去简历的一周后,大概是 2 月 28 号左右,一面的小哥哥下午打来电话约我 2 月 28 号晚上 9 点钟面试。结果在 2 月 29 白天的时候,我基本上都没有怎么工作,而是把我平时积累的一些基础知识总结了一下,能总结多深就总结深。到了晚上 9 点左右,电话响了起来。
一面
面试官还是比较温柔的,上来先让我做了自我介绍,我简单介绍了一下自己有 2 年半的工作经验,之前做过什么项目,用了什么技术等等,面试官没有详细问项目的细节,但是项目的具体的功能和业务一定要讲清楚。
中间穿插着会问到一些基础知识。总共面试了 50 多分钟,java 基础能问的基本都问完了,基本的内容包括
从 JVM 到垃圾回收,最后一个问题好像是 fullgc 是否可以回收方法区
从线程池的构造函数参数到队列的拒绝策略
redis 支持的数据类型到跳跃表,redis 同步策略,如何自己实现 lru 等
mysql 索引的数据结构,为什么用 B+树不用 B 树,事务隔离级别,聚集锁非聚集锁,这个地方着重点一下,问到了一个非常细节的问题,如何用可重复读的隔离级别避免幻读问题。当时这个问题没有答出来,后来上网查了后可以使用间隙锁来实现。
spring 相关、bean 的生命周期等,最后问到循环引用问题 spring 如何处理的。
concurrentHashmap1.8 为什么放弃了分段锁
数据库分库分表相关
其他的记不清了,就记得只要是跟 java 基础相关的基本都提到了,个人感觉一面还是以知识的广度为主。
一面结束大概一周多后,大概在 3 月 3 号,接到了二面的电话,由于当时在地铁上太吵了,我就约了 3 月 5 号晚上 8 点半面试。到了 3 月 4 号 5 号的白天,又是基本上没有怎么工作,都在总结面试的东西,到了 3 月 5 号晚上晚上 8 点半,二面电话如期响了起来。
二面
二面上来也是做了一个简单的自我介绍,然后简单介绍了自己的项目,感觉二面和一面最大的不同是,二面时候以知识的深度和解决问题的能力为主。
主要涉及到的问题大概有:
springAOP 的原理,动态代理是怎么实现的,这个地方我基本上把动态代理的源码说了一遍。
fullgc 的时候会导致接口的响应速度特别慢,该如何排查和解决。
snmp 协议的相关知识
netty 的相关知识,如何避免的 NIO 空循环问题,还有零拷贝等
问了一些简单的算法,说了一下自己的思路
剩下的记不清了,大概面了有 40 分钟多一点。二面面完个人感觉还是非常好的,当时也比较自信自己可以进入三面,果然在大概一周左右,如期接到了三面的电话。
三面
三面的面试官也是比较温柔的,三面和前两面最大的不同是这次的面试官特别关注项目的实现和细节,由于我最近一年做的是一个监控系统,从最开始的项目为什么要分这几个模块到每个模块做的事情用的技术和存在的意义,都需要解释的非常清楚,中间如果他有疑问的话就会立马打断来问问题,现在做的项目其实并没有太多的亮点。
面试中间还提到了 kafka 的 replicas 的作用还有他为什么比其他的消息队列好等等。最后给了我一个微博评论长链接短链接的问题,让我设计一个服务来处理长链接短链接,包括怎么读怎么存等。面完三面后,面试官告诉我如果有四面的话,四面就要来杭州面了。当时心情十分复杂。
四面
大概三面结束又过了一周后,接到了 hr 的电话约我 3 月 22 号周五上午 11 点半到杭州菜鸟总部参加面试。提前一天给现公司请了假后,22 号早上 5 点半就起床去虹桥火车站了,大概 10 点的时候到的菜鸟总部,随便吃了点东西,打印了两份简历,等到 11 点半准时联系的 hr。
hr 把我带到会议室中,路上我还大概了解了一下面试后面的流程,说这次第四面是两名 p8 的面试官一起面的,如果这轮能过的话,下一轮就是最终 p9 大 boss 和 hr 一起了。
大概在会议室等了 5 分钟左右,两名面试官来了,也是简单做了自我介绍后,这两名面试官就让我在白板上画最近负责的项目的流程图,个人感觉这一轮面试着重点是项目设计上,中间会穿插很多问题来问我为什么当初要这样设计?这样设计的好处是什么?有没有更好的设计方式?项目的数据量有多大?如果再增大 100 倍呢?碰到的真正的难题是什么?这两位面试官面了大概一个小时。
四面面试结束后,让我在会议室等结果,当时心里真是度秒如年啊,大概这两位面试官和 hr 讨论了 20 分钟后,hr 进来告诉我说不好意思这一轮面试没有通过,今天的面试流程就此结束了。
心里说不难过肯定是骗人的,这一个月以来每一轮都是煎熬啊,我觉得第四轮挂掉肯定是有很多原因的,自己的项目设计能力太差了,在分析项目的时候很多种情况没有考虑到,估计面试官对我设计的思路不满意是我最大的减分项。
不管怎么说,生活还要继续,有些东西没有第二次机会,我觉得面试道路上最大的收获就是我要搞明白我是怎么失败的。接下来我的打算是在好好干好手头工作的同时,要做好这三件事情:
zookeeper 和 netty 的书好好看完
算法要补一补了,开始刷 leetcode
项目设计方面做一个单独的培训,找一个大神先聊一聊,或者博客大神能否给一些建议,这一块确实是我的短板。
另外,我要特别感谢我的朋友,是前同事 K,他现在是阿里云的 p7,在这一个月里他一直在告诉我应该如何跟阿里面试官沟通,要注意哪些知识点等,还一直在帮我关注着面试流程。还分享给我了一份面试资料,对我受益颇深。
这份资料里面包含了八大核心内容,分别是 Java、网络,Linux、数据结构与算法、数据库、系统设计、必会工具、面试指南。
这份资料内容很多,大家可以看下面的部分目录以及展示内容,大家有需要感兴趣的可以**点击这里,获得文档领取方式**
内容
部分目录截图
Java
基础
容器
并发
JVM
Java 面向对象
Java 核心技术
容器
并发
JVM
网络
Linux
数据结构与算法
数据结构(布隆过滤器)
算法
数据库
MySQL
Redis
系统设计
RestFul API
常用框架
认证授权(JWT、SSO)
分布式
大型网站架构
微服务
必会工具
面试指南
程序员简历该怎么写
如何准备面试
Java 学习路线和方法推荐
看完内容目录,大家有需要感兴趣的话,可以**点击这里,获得文档领取方式**
评论