阿里内推面经(4次技术面+1次HR面+了解情况)已收到意向书

背景

使用Java到现在大概有一年多的时间,之前一直做硬件,所以Java算不上很好。投递的时候,实习刚辞职,也没准备笔试面试,很多东西都忘记了。了解到内推挂了不影响秋招才敢投的,就是想着刷刷经验而已,从没敢奢望什么。在投递前的半个月,刚刚用10天左右通读了《Java并发编程实战》,认真做了笔记,算是有点心得,面试的时候帮了很大忙。

6次面试分别是:

4次技术面+1次HR面+一次了解情况的唠嗑(勉强算一次面试吧)

一面

8月5号

自我介绍

聊聊项目,我主要说了实习时候的项目,顺带聊起了数据库、缓存相关的问题。

ACID

事务隔离级别

MVCC

数据库分表

索引

缓存一致性

在自我介绍的时候,我有说自己多线程方面掌握的还可以。面试官后面问有没有读过什么源码,很自然的就回答读过Spring、JDK、以及java concurrent包下面的相关类等。于是顺带就问了些常见的并发问题:

volatile 有什么作用

sychronized和lock有什么区别

线程安全性问题有哪些?

造成死锁的原因

加锁会带来哪些性能问题。如何解决?

HashMap是线程安全的吗?Hashtable呢?ConcurrentHashMap有了解吗?

关于JVM

java内存模型

垃圾收集器

双亲委派模型。

你有什么问题要问吗?

二面

自我介绍

有没有参加过ACM,有没有参加过其他竞赛,有没有拿过什么奖?研究生期间,做过什么项目,发过论文吗?有什么成果?

我的回答是,没参加过ACM,本科参加过数学建模竞赛,名次并不好,没拿过什么奖。(面试官开始有点失望的样子了)但是,我说研一做了一个军工项目已经投入使用,项目数据是保密的,但是内容不保密,可以讲讲,面试官比较有兴趣了。

你觉得你有什么优点、缺点?你觉得你身边比你优秀的人,他们有什么特质是你没有的?

做java有几年了?实习期间做过什么项目,你能挑一个给我讲一讲吗?

做过很多项目,但是这次想说个复杂点的,也是第一次讲这个项目,描述有点乱,方向带偏了,导致后来面试官没听明白我说的是什么,我也没听明白他问的是什么,导致气氛十分尴尬。

可能是为了缓解尴尬气氛,面试官问了个简单的问题,冒泡排序和快速排序有什么区别。

你有什么问题要问吗?

应该还有其他问题吧,答得还可以,但是具体问的啥我忘记了。

总结:之前一直以为,我投的是软件开发岗,面试官对硬件项目不感兴趣,就一句话带过,很少提。但是经过二面,意识到,其实面试官更多关注的是应试者的学习能力、态度、经历、思考等,就算没有太多软件开发相关的项目经验、成果,把你的体现在其他方面综合实力展现给面试官就好。所以后面给面试官自我介绍的时候,不单聊实习项目,还会说说研一做的硬件项目,并强调已经投入生产环境使用。

感觉这次面崩了,觉得没戏了,就没再准备。后来四五天的样子,内推人说,你竟然面到交叉面了,好厉害。基本上没收到拒信或者进度表上不是显示“已回绝”就表示还有戏

三面

8月12号,应该就是交叉面

从三面开始,感觉就差不多清楚套路了,自我介绍怎么说,怎么引导面试官去问我想让他问的问题等等,都有自己的想法了。面试官提出一个问题,是想考察什么,我也基本清楚,有时候不确定面试官的意思的时候,我会反问一句,您是想考察XXX方面的知识吗?我有一些理解,可以给您讲讲。

按套路来,还是自我介绍。

由于我强调了自己做的硬件项目,不出意外的,面试官问的比较详细,由于都是自己做的,理解的很清楚。但是这里有个重要一点是,你是清楚这个项目,你也研究过这个领域,你怎么把你做的项目,讲的通俗易懂,其实不容易。我通常会用面试官可能熟悉的知识去对比着讲硬件项目的东西,所以就很容易讲明白。不过阿里的程序员,说完全不懂硬件,不可能。

依托于项目问了TCP和UDP的区别。

在实习的时候,做过什么项目没有,哪些是技术性比较强的?可以讲一讲吗?

讲了一下项目、说了说消息订阅发布,提了K8S、docker等。

Redis有了解吗?有什么特点?分布式有了解吗?(了解都不多,但是可以聊聊想法)

有读过什么源码吗?

考察一些java基础知识

HashMap、ConcurrentHashMap、volatile 、sychronized

Java内存模型、垃圾收集器、类加载机制、双亲委派模型

Spring相关 IoC、AOP

数据库相关:ACID、事务隔离级别、MVCC等

最后一题:一个3升的桶和一个5升的桶,怎么得到4升的水。

上面的问题基本都答出来了,多数聊的比较细致,面试官挺满意的,直接就给我说:好,可以,后面等通知吧!

四面

三面面完当天,晚上9点接到四面电话。感觉像是总监面。

这次面试和前面感觉明显不一样,问题不拘小节,注重思路,重点聊了实验室的硬件项目,还有在网易实习的时候的一个简单的任务,然后聊了实习那个项目的一些问题。

后面又问了一些简单的问题:

HashMap、ConcurrentHashMap、volatile 、sychronized

出现死锁怎么排查?

如果查看堆内存信息?

出现OOM怎么排查问题?

还问了其他一些问题,我就记不太清了,不是很难,但是自认为回答的都比较具体,讲的比较清楚。

HR面

8月17号

HR面就比较常规了,但是阿里的HR面也要让我给她讲项目,也是很神奇。

你觉得你有什么优点?有什么缺点?分别举例讲一讲。你怎么克服缺点?

你觉得最有成就感的一件事是什么,你遇到了什么问题,怎么解决的?

你前面跟其他面试官讲过一些你做的项目吧?可以给我讲讲吗?你要考虑到我不是一个做技术的人,怎么让我也听得懂。项目中有什么问题,你怎么解决的?你最大的收获是什么?

你在实习工作中,有什么收获?有什么贡献?

你目前有面试过其他公司吗?如果让你选,这些公司和阿里,你选哪个?(送分题,回答不好可能送命)

你期望的工作地点是哪里?

你有什么问题吗?

面试完,HR说8月25号之前,实习转正会答辩结束,把所有面试情况盘点,后面一到两周会给出结果,发出意向书,如果下次我再给你打电话,会讨论薪资。

六面

8月24号,中午在午休,突然接到阿里的电话,一听声音比较像二面的面试官,二面面崩了,于是心里也是很紧张。跟面试官说我等我5分钟,整理一下衣服,找个安静的地方面试。期间调整了一下情绪。

5分钟后面试官打来电话

你面了几面了?我回答您这算第6面了。面试官说严格说我这不算是面试,就是想了解一下情况,时间比较紧,咱们简单聊。

1分钟的自我介绍。

做项目的时候,你有什么收获,遇到问题你是怎么解决的?

有参加过什么竞赛吗?有发过论文吗?有什么成果吗?

参加过什么学生活动吗?担任过什么职务?

读过什么源码吗?关注过什么开源项目吗?

分布式有了解吗?

并发编程怎么样?线程池有了解吗?

在实习期间有什么收获吗?

实习期间你对公司有什么贡献吗?

你有什么问题吗?

这里,我问了面试官,要胜任阿里的工作,我有哪些方面是比较欠缺的,是要努力补足的?

面试官,想了想,说基础知识、态度都挺不错,做事情很积极,也有自己的思考,比如你提到解决问题要总结更深层次的问题原因,这很好!以后可以在Java和分布式方面进行更深入的学习……你可以加我钉钉,说后面方便联系。

后面咨询了一下内推我的朋友,如果我能进去,6面面试官应该就是我的直接主管了,6面面试官说你没问题,那就没问题了,可以放心了。

总结

可以看到,其实面试官问我的问题都是比较常规的,没有特别难。而且有些问题面试官几乎每次都问。常见的问题,不管是哪个公司的哪个面试官,暂时没想好问你啥的时候,脱口出来的就是最常问的问题,一定要深入的去准备,别回答的太皮毛。在网上刷刷面试题,就想应付这些常见问题是不行的。你要去看源码,去抠细节,回答的比别人详细具体,这样才能突出你的认真和努力。

比如说:TCP和UDP的差别,个人认为如果只答出来:

TCP面向连接,是可靠的,UDP不可靠。这样的回答完全不够。

回答应该全面、详细,我的回答中还包括:

对比了TCP、UDP的内部数据结构。

TCP基于数据流传输,UDP基于包传输。

TCP建立连接需要三次握手,讲了一下三次握手具体过程,有什么作用。

提到了TCP拥塞控制,以及相关问题。

......

面试官看我回答很详细,还没回答完,就很满意的切换问题了。

前面有提到,如果你投的互联网,做软件开发,你的项目经验少,可以用硬件项目来补。向面试官强调解决问题的思路,你的收获,以及延伸出来的一些思考,这样可以向面试官展现的的综合能力。也许你现在你项目经验少,基础不够好,但是你要有优秀的特质充分展现给面试官。

语言表达和沟通能力很重要,很重要,很重要!如果这方面不是很强, 面试一定要多演练、准备。引导面试官去问你熟悉的内容。

最后

1.技术基础必须扎实:算法、数据结构、操作系统等,阿里面试对技术的基础非常重视,基础扎实的同学有利于在前两轮突出重围。

2.技术宽度:主要集中在高并发、多线程、分布式架构,大以及常用中间件(缓存等)的选型和比较。

3.技术原理深入:重点还是提前准备好JVM、多线程高并发这块。

4.参与的项目总结:你需要清楚你所做项目的关键细节、优化、特点、原理。

5.很多所用第三方库&中间件等的原理,即使你不知道,也要有自己的想法能够说出如何代替实现,比如单点登录的替代方案。

6.最好,提前准备一个大数据访问,比如pv扩大1000倍,你的架构或者技术方案应对措施。

7.最后,千万不要倒在HR面试环节,避重就轻是重点,特别是优点和缺点,如果问到你的规划是什么,请记得一定告诉HR你想成为一名优秀的技术专家!

以上就是我的6总结,这些都是不断面试积累来的经验,分享出来避免更多同学少走弯路,早日进入BAT等一线互联网公司!


更多精彩内容