3月份找人内推了阿里,先后获得了阿里云和天猫的面试机会,都是到第二面就挂了,现在记录一下当时问的一些问题。
阿里云一面
阿里云的一面是在朋友内推了2天后打电话来电话面试的。一开始是早上11点左右打电话来,刚好在忙,就让他下午2点再打过来,面试官答应了,就安排在下午两点电面了。
下面是面试官问的一些问题。
- SpringMVC的原理——因为我做的项目用了SpringMVC
- Spring的事务相关
- 数据库相关,主要问了乐观锁和悲观锁。java代码中怎么开启悲观锁,其中面试官问了
select for update
,当时不知道有着东西,没回答上来。 - redis相关,比如问了对redis集群懂多少。
- tomcat调优,平常基本没接触,没回答上来
- JVM调优命令,主要回答
jmap、jstack、jps
等命令 - JVM内存模型、JVM堆怎么划分的一些简单的JVM问题,没有很深入
大概聊了半个小时,面试官人很好,由于电话信号不好,中途多次听不清对方讲的问题,面试官也很耐心的给我再讲一遍。
面试整体感觉还不错,有一些点可能没答好,看面试官的反应也觉的应该能过。
后面问了我朋友,他也在阿里的内推系统上看到我过了一面。
阿里云二面
本以为一面过了,很快就有二面了。结果二面过了2周才来。先和阿里hr预约了周末视频面试。然后到了周末打开hr发来的邮件上面的链接进入视频会议,还要下一个阿里的软件好像,叫啥忘了。
下面是面试官问的一些问题。
- 还是先自我介绍,然后问了一些工作中的项目,用到了哪些技术等等
- 由于在之前的项目中用到了postgresql,面试官便问了mysql和postgresql比较的优缺点。
- 之后又问了工作中用到了哪些技术(可能对我之前的回答不是很满意),后面我又强行说了一堆,spring、spring MVC、spring Security,Spring JPA等,还有spring事务管理、spring的定时任务这些能说的都说了。后面感觉面试官对这些并不是太感兴趣,几乎都没问
- 由于之前的回答中说到了nginx,面试官又问了nginx和tomcat的比较。
- 继续问tomcat,这次直接问tomcat的架构实现原理懂不懂。我之前有看过一点,但是基本都忘光了,就模模糊糊答了一些,应该不能让面试官满意
- jdk8的特性了解多少(问了我项目目前用的jdk版本是多少)。
- 后面又问了spring Security的底层实现原理。
- 动态代理的实现
- springJPA、hibernate和mybatis的区别、优缺点
- 还问了相比工作中和在学校,学到的有什么不一样。
- 问了以后的工作规划大概是怎么样的。
- 在中间有问了微服务的问题,问我对微服务了解多少,说说它的优缺点等等,我勉强回答了一些。最后又问了一次微服务,看来对我之前的回答不满意。最后也没问我有什么问题,刚好又到了饭点,直接就结束了面试。
本次面试难度比一面高了一些,问的问题更偏向对一个技术的整体把握,比如更多的都是评价一个技术的优缺点之类的问题,底层实现之类的问题问的偏少。技术选型这方面感觉自己确实需要好好提升一下,因为自己平时大多只懂的去钻研一个个技术的实现原理而没有花太多时间去思考这些更加关键的问题。以后要加强自己对技术的思考。
这次面完感觉就不是很好,最后朋友查了下,果然挂了。
天猫一面
本以为阿里云的面试挂了,就没有下文了。但是估计是我过了一面,所以天猫这边又从内部拿到了我的简历,于是大概在阿里云2面两周的某个晚上(大概晚上8点多),天猫的面试官打了我电话。
下面是面试官问的一些问题:
- 自我介绍,说说自己做的工作,以及一些亮点。
- hashmap实现原理,传参为5的时候,初试容器是多大
- sycronized和reentrantLock区别
- 线程池各个参数的作用
- 问看过哪些源码,都从源码中学到了哪些。比如设计模式这些
- 问是否看过storm和jstorm的源码
- 后面问了两道算法题10亿个数字的文件,只有128M的内存,怎么对这个文件进行排序。
- 倒序数组,查找一个数 倒序数组就是:6,7,8,1,2,3。LeetCode地址:https://leetcode.com/problems/search-in-rotated-sorted-array/
这次的面试感觉很不错,因为面试官问的都是底层原理,个人对这方面比较熟悉,因此基本都有回答上来。还问了两道算法题,不过都不算太难,第二道算法题还给了10分钟的思考时间,很人性。
天猫二面
天猫的二面来的很快,隔天的下午2点就打电话来面试了。
下面是面试官问的一些问题:
- 自我介绍,说下做了哪些项目,担任什么角色
- 先自我介绍,然后做过什么项目。
- MAA怎么加速的,然后我说做协议优化,接着面试官继续深入问怎么优化,没回答上来。
- 问我们业务大数据那边的storm的数据处理流程
- 问遇到哪些难点,怎么解决的。我就说了业务比较复杂,做过hbase的优化。比如用all来代替全部的情况,面试官似乎不太满意,继续追问有没有更好的解决办法。
- hbase怎么寻找rowkey的,然后问hbase和mysql的底层存储结构有哪些不同,没回答上来
- 跨域访问问题
- mysql的乐观锁和悲观锁,回答了一下,但是感觉他不太满意
- http协议的几个状态码,301 401没回答上来,平常没怎么留意。
- 接着问了一些linux的问题,inode相关知识,怎么看inode详情。接着top的load是什么意思,怎么计算出来的。然后问怎么看磁盘状态。都没回答上来。。。
- 问了tcp的3次握手,回答上来了。接着问timeout的相关问题。没回答很好
这次面试感觉很糟,虽然面试官很礼貌的让我提了一些问题,但是挂电话了就知道肯定挂了。总结了下原因,一开始被深入问了maa的加速原理,没回答上来,后面接连着几个问题要么不会,要么面试官稍微一问深一点就也不会,心态有点崩,导致后面有些问题其实懂但是没答好。
这次面试官问的问题确实大多数都是我不会的,要么比较深,要么比较细,应该是经历过的面试里面最难的,也是被虐的最惨的。不过经历了这些面试后,也确实认识到了自己很多的不足,比如知识深度把握不够,一些细节平常也没注意。比如http状态码,做了2年多的web研发,301和401这些状态码代表什么含义都回答不上来确实有点说不过去。
总结
总共经历了4次阿里的面试,感觉自己的水平确实还不够进阿里,需要继续努力。虽然没进阿里,但是最后博主也进了美图,美图也是一家非常好的互联网公司。目前已经在美图待了3个多月了,美图的技术氛围非常好,周围也很多技术大咖,经常有各种分享以及某个技术框架学习小组,很适合发展自己的技术。
最后,有想进美图的小伙伴可以邮件找我内推。我的邮箱是 kongtrio@sina.com