2019阿里研发实习面经总结

写在前面

3月到5月,经过了整两个月的春季找实习的时间,终于为自己这段找实习的经历暂时画上了句号。其中,面试了大大小小的多家公司,面试的种种体验也都经历了一遍,但庆幸最终的结果是好的,两个月的努力没有白费,最终收到了阿里的录用意向书。在此也感谢在这段经历中给予帮助的每一个人,你们的帮助都给了我很大的力量,让我可以坚持下去。如今,临近入职时间,重新回顾这段经历,也特地把在阿里的面试过程记录一下以便帮助其他正在进行面试的同学。这里感谢阿里对自己的认可和提供的这次宝贵的实习机会,阿里的面试体验和其中对能力和知识的考察也是我面试过程中遇到的很好的一家公司,也希望能在今后在公司的生活和学习中有更大的进步和收获。

我一共经历6次面试,为期1个月的时间。具体的面试问题和过程如下,因为在写这篇文章时过去了一段时间,可能回忆到的问题不是特别全面,特此说明,仅供参考。

一面(90分钟)

一面是在内推之后的一周时间的一个晚上接到了面试电话(顺便说一下,阿里的面试大部分都是在晚上进行的)。面试官很nice,面试的内容很全面,广度和深度都有考察。毕竟这些也是两个主要的方面,具体的内容会结合自己的简历和求职意向进行,我这里主要是大数据方向+Java方向。问题如下:

  1. 为什么要做Heron这个平台?Heron和Storm或Flink上有什么区别?
  2. 在Heron平台中还有什么未来要发展的?
  3. 进程之间的通信方式?
  4. 对大数据的一些平台,他们的使用场景是什么?
  5. MapReduce,Hadoop和HDFS之间的关系是什么?
  6. MapReduce的处理过程主要是什么?
  7. 对Heron做这项研究工作已经多长时间了?
  8. 这项工作的主要产出成果有哪些?Paper还是什么?
  9. 线程之间如何共享数据?
  10. 多线程使用过程中,有没有遇到过奇怪的问题?
  11. 启动时间不一致的现象,有哪些原因会导致这个问题?
  12. 什么是线程安全或者线程不安全?
  13. 如何实现线程同步或者加锁?
  14. HDFS,Mysql查询数据的过程上有什么不同?
  15. 同步代码块中有调用sleep和wait方法有什么区别?
  16. 还是同步代码块中的sleep或wait方法,如果另外的线程调用该方法,会发生什么情况?
  17. 阻塞?是否在所有的情况下都是阻塞?
  18. HDFS和MySQL在使用选项上的不同。
  19. MySQL的索引有哪些?索引底层如何实现的?
  20. 数据库事务的特性是什么?
  21. 是否所有的数据库都满足这些特性?
  22. 如何在不同的需求下选择合适的数据库?在并发的情况下,数据库会出现什么问题?
  23. 这个问题实际上在问数据库的隔离级别有什么?各自有什么特性?
  24. 内存堆为什么线程不安全?内存栈是否是线程安全?
  25. HashMap和equels方法什么时间重写?在什么地方使用?
  26. 一个char类型是否可以存储一个中文字符?为什么?
  27. 主要用到的编程语言是什么?
  28. 为什么Java是平台无关的?
  29. 是否可以在运行的过程中修改字节码文件?
  30. JDK1.8的新特性是什么?JDK9或者12版本的新特性是什么?
  31. ClassLoder的作用是什么?有哪几类?是否可以自定义ClassLoader?
  32. 对Java未来的发展方向有什么想法?
  33. 死锁的概念?出现的条件?如何避免死锁?
  34. JVM中的内存区域是如何划分的?
  35. GC机制中如何识别需要被回收后的对象?
  36. Web中发送一个URL请求,网络层面是如何进行的?
  37. 在你自己看来你比其他人有什么优势?
  38. 你在Java服务端和数据分析这两个方向上,主要想从事哪个方向的工作?
  39. 一个文件有几千万行数据,如何进行统计其中出现次数最多的100个数据?你会采用什么方法?

可以看到,这里的问题涉及很广并且有一定的深度,从简历中的内容过渡到基础知识和底层原理上面,有些回答的不算很好,但和面试官交流的过程中,面试官有些也会从不同的角度引导自己去考察对一个问题的理解。对于这些问题,基础知识需要理出自己的一套理解体系,这样在回答问题方面就会比较有条理,也可以让面试官知道你对这方面内容真实的掌握程度。而对于自己所研究的内容方面,除了针对Paper的准备外,对于实验的设计思想,平台底层的原理也需要一定的理解,并且paper是自己的汗水换来的,对自己所做的工作,自己应该是最清楚的。除了在自己所做领域和基础知识的牢固掌握的基础上,还需要对未来一些方向的理解和思考,这是当时面试准备没有涉及到的地方。

二面(50分钟)

一面和二面中间,我度过了一个忐忑的清明节,当时因为没有预料到会收到阿里一面面试,所以清明节因为之前的一些计划没有在学校。因此针对第二面的准备,大部分都是在晚上和飞机上进行的。二面和一面都是技术面相关的问题,清明节过后就收到了二面面试官的电话。

  1. 自我介绍
  2. Heron和Storm,Flink之间有什么区别?
  3. Heron的反压机制是什么?
  4. Storm有没有反压机制?Flink的反压机制是什么?如何实现的。
  5. Object有哪些方法?
  6. Wait和notify的用法?
  7. JVM的内存区域有哪些?都有什么作用?
  8. 有三个线程1,2,3,如何保证线程1运行完之后运行2,2运行外之后运行3,然后接着运行线程1,形成一个环形的运行结构,连续运行100次?
  9. Java使用的哪个版本?java12的新特性知道吗?
  10. GC的机制了解吗?
  11. Full GC是什么?什么时候触发?
  12. 只有在老年代进行GC时才会触发吗?还有什么时候会触发?
  13. MetaBase是什么?听过吗?
  14. 如果一个后端系统不稳定,接口相应很慢,你会有哪些思路进行排查?
  15. HashMap熟悉吗?
  16. GitHub中的项目中只有一次提交,为什么?
  17. 第一篇论文已经发表了吗?能不能解释一下这个中文四区的概念?
  18. 你的两篇论文,自己充当了哪些角色?
  19. 你研究生成绩是年级第一?是专业课第一,还是总成绩第一?
  20. 研究生开了哪些课程?
  21. 你是怎么获取新知识的?也就是怎么给自己充电的?
  22. 浏览过哪些开源社区?

说实话二面试过后感觉不是很理想,有种凉凉的感觉。有些本应该回答的不错的问题回答的并不好,心情沮丧中,二面面试官给了一个电话,问我对面试过程自己感觉怎么样,我如实做了回答。但二面面试官还是给了一个通过的机会,让我能够在之后的面试中走的更远。从面试完成到现在,都一直很感谢二面面试官的这次机会,让我可以在之后的过程中不断完善自己的不足,最终通过了所有的面试。这里的不足之处,还是在于对一些知识点掌握的深度不够,也真的感觉到了学校所学和企业实际应用之间的鸿沟,这个鸿沟只能靠自己的学习和钻研去弥补,靠自己对新知识的热情和追求去填平。

三面(20分钟)

还没从二面的大起大落中恍惚中出来,隔了一天就接到了三面的电话。三面是boss面,进行的时间很短。

  1. 简单的自我介绍(介绍重点)
  2. 目前在做的工作
  3. 成绩第一,怎么学习的?
  4. 科研成果是论文还是专利?
  5. 第一个项目中的性能提升,核心的原因是什么?
  6. 算法吗?能否具体的讲一下这个算法?
  7.  GitHub代码研读。

这里感觉主要是对简历内容和个人学习能力方面的一个考察。主要涉及了自己研究的内容,因为很熟悉,所以回答比较顺利,但需要注意一些表述逻辑,而不是杂乱的叙述。因为涉及一些算法的描述,所以自己需要对此有较为深入的理解,才能给别人讲的比较明白。但其中出现了一个插曲,就是在最后GitHub代码研读的时候,因为我在的地方比较偏远,所以网络的状态不是很好,当时GitHub打开的速度异常的缓慢(心里很爆炸),只能如实告诉面试官这种情况。阿里的面试官一直很nice,对这种情况也表示了理解,说他后面会自己去查看。因为不知道这种情况会不会给面试结果带来影响,所以面试结束后也是很心慌。只能等着之后的过程。

四面(交叉面 约40分钟 )

四面是在之后的下一周接到的,时间比较晚,之前也不知道是交叉面,但接到电话就开始进行了。

  1. 自我介绍
  2. 在实习和研究生两个阶段中主要做的什么工作?能否具体展开说一下?
  3. 熟悉的编程语言是什么?Java?
  4. 那有一个使用场景,对一个字符串进行大写字母出现的频率进行统计,然后对统计结果中的出现次数进行排序,你会怎么处理?
  5. 能否对排序那一块具体说一下?如何保证排序的过程中字母和出现的次数保持对应关系的?使用了什么数据结构?不是很清晰,可以再想一下。
  6. 当初为什么选择这个方向做研究?
  7. 对MapReduce有什么程度的使用?
  8. 对Java多线程有使用过吗?使用场景是什么?
  9. 然后是提问了一些java相关的问题,具体记不太清了。。。

面试完成之后,面试官也很礼貌的说明了面试时间比较晚的原因,因为我那有一点时差,所以我当时还在实验室,时间还好。然后自己向他提了一些问题,然后结束了。面试中面试官提出的第5个问题,当时一开始回答的思路有些问题,面试官也给了一些时间进行思考,最终也给出了面试官想听到的解决思路。因此阿里的面试体验是很好的!

五面(交叉面 30分钟)

本以为四面结束之后就是HR面,但中间因为间隔的时间有点长,就麻烦内推人帮忙看了一下,然后告知了还有一轮交叉面。所以就接到这个电话,距离上次交叉面是一周的时间。由于当时面试完没有进行具体的记录,所以具体问题记得不太清楚了。但主要方面是大数据方面,包括自己的研究内容,研究思路。因为面试官是大数据部门的,而我求职意向也是大数据相关,因此这里主要是大数据平台和优化相关的内容。(这里想到,因为的求职意向包含了Java和大数据,所以才有的两次交叉面吧,分别是两方面的考察。)

与五面的面试官交流,有一种相同研究方向的师兄交流的感觉,感觉很亲切,而且他也在对我的研究内容方面提出了一些方向上的建议。交流的体验很好。

六面(HR面 50分钟)

终于等到了HR面,而且接到HR面的时间很意外,在五面的第二天早上(我刚起床,接到电话瞬间清醒)。然后和HR进行了50多分钟的交流,主要内容包括:之前的面试里有那个问题回答的不好或者印象最深刻,现在对该问题的理解是什么?自己的优点缺点?自己最有的优势是什么?简单说一下自己的实习经历、项目经历?现在收到的offer,怎么取舍?如果被刷掉自己认为有什么不足,等等。最后问了一下可以的入职时间,然后告诉我注册一个钉钉等后面会加好友。然后常规问了HR一些自己关心的问题。

至此,阿里的六轮面试就到此结束了。剩下的时间就是等待,因为当时JD的面试还没结束,中间也把JD的面试走完了。当周的周五晚上,在实验室和家人通电话时,收到了阿里的意向书,结束了一个月的面试流程,和最后一周的痛苦的等待时间。

结束语

以上就是我经历的所有阿里的面试环节和经过,在此感谢以上每位面试官的耐心和肯定,以及在找实习过程中遇到的每个面试官和HR。这些经历都将成为自己不可磨灭的一部分,也将会更好的驱使自己前行。在此记录这些经历,是对自己的这段历程的总结也是即将入职生活的开始,也谨以为正在面试的小伙伴们提供一些帮助,希望每位正在找工作的同学不放弃,能够找到心仪的工作。

你可能感兴趣的:(面试资料)