写点什么

讲述我在阿里六面的经历,幸好我掌握了这份“Java 并发编程 + 面试题库”成功拿到 20K 的 offer

用户头像
比伯
关注
发布于: 2020 年 12 月 04 日
讲述我在阿里六面的经历,幸好我掌握了这份“Java并发编程+面试题库”成功拿到20K的offer





背景



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



6次面试分别是:



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



一面



  1. 自我介绍

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



  • ACID

  • 事务隔离级别

  • MVCC

  • 数据库分表

  • 索引

  • 缓存一致性



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



  • volatile 有什么作用

  • sychronized和lock有什么区别

  • 线程安全性问题有哪些?

  • 造成死锁的原因

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

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



  1. 关于JVM



  • java内存模型

  • 垃圾收集器

  • 双亲委派模型。



  1. 你有什么问题要问吗?



二面



  1. 自我介绍

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

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

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

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

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

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

  8. 你有什么问题要问吗?



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



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



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



三面



11月19号,应该就是交叉面



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



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

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

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

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

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

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

  7. 有读过什么源码吗?

  8. 考察一些java基础知识



  • HashMap、ConcurrentHashMap、volatile 、sychronized

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

  • Spring相关 IoC、AOP

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



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



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



四面



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



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



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



  1. HashMap、ConcurrentHashMap、volatile 、sychronized

  2. 出现死锁怎么排查?

  3. 如果查看堆内存信息?

  4. 出现OOM怎么排查问题?



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



HR面



11月23号



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



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

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

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

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

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

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

  7. 你有什么问题吗?



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



六面



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



5分钟后面试官打来电话



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

  2. 1分钟的自我介绍。

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

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

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

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

  7. 分布式有了解吗?

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

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

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

  11. 你有什么问题吗?



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



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



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



总结



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



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

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

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



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

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

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

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

  • ......



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



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

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



最后



面试完以后,会经历度日如年的等待,真的很熬人,感觉这次运气还是很不错的!



最后针对于互联网公司java程序员涉及到的绝大部分难题我做成了文档和架构视频资料免费分享给大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),希望能帮助到且找到一个好的工作,也节省大家在网上搜索资料的时间来学习,也可以关注我一下以后会有更多干货分享。



资料领取方式:



关注+转发后添加小编的vx:mxzFAFAFA即可免费获取!









用户头像

比伯

关注

还未添加个人签名 2020.11.09 加入

还未添加个人简介

评论

发布
暂无评论
讲述我在阿里六面的经历,幸好我掌握了这份“Java并发编程+面试题库”成功拿到20K的offer