聊聊阿里面试的三个层次

转载 2018年04月12日 00:00:00

【回复“1024”,送你一个特别推送】

最近去阿里的菜鸟国际做了一次面试交流,发现大公司对于面试者的知识结构考核非常严谨,可以作为我们日常工作学习的指导。虽然很多人说面试问到的东西在实际工作中很少用到,甚至有「面试造火箭,工作拧螺丝」的说法。但从面试中,其实可以看得出来现在的公司对于面试者的知识体系要求。如果我们能在工作中就按着这样的要求去不断提升,那么在面试的时候必然也能游刃有余。

一般来说,阿里的面试会有两轮的技术电面,分别交叉检验你的技术基础。后面还有两轮的现场技术面试,主要检验你的项目经验。但从知识体系的角度来看,阿里面试对于知识的考核可以分为三个层次:对于基础知识的考核、对于项目经验的考核、对于项目深度的考核。

一、基础知识考核

在这个层次上,主要考核你对 Java 语言本身原理的理解以及各种框架的原理理解。对于 Java 开发岗位上来说,这些知识点包括但不限于:

  • 集合 HashMap 的原理,与 Hashtable、ConcurrentHashMap 的区别?

  • Java 线程池的核心属性以及处理流程

  • Java 并发包原理、Synchronized 关键字、锁

  • 线程的生命周期

  • JVM 类加载机制

  • JVM 内存模型

  • JVM 分代以及垃圾回收机制

  • Spring Bean 容器生命周期

  • Spring AOP 原理

  • Dubbo 请求流程以及原理

  • 数据库 SQL 优化、数据库索引、索引原理

  • ……

上面只是说了很少的一部分而已,如果想查看更多关于知识考核的要点,可以在后台回复「基础面试题」查看。

看到这么多的知识点,我一下子就懵逼了,这么多得看到什么时候才看得完啊?但后面我想明白了,其实你不需要全部都懂,但需要了解大部分知识点,并且在这大部分知识点中,还需要有部分是了解得非常深入的。如果达到这个水平,基本上都能通过考核。

对于基础知识的考核多出现在阿里的前两轮电话面试上。对于这块,你事前把网上常见的面试题目看一遍,多面试几次基本上都没有问题。

二、项目经验的考核

当你成功通过基础知识的考核之后,你会进入下一关的考验:项目的理解程度。

面试官首先会让你选择一个你最拿手的项目,画出架构图,之后的一切问题都从这个架构图触发。当你画出架构图之后,你肯定需要解释清楚每个模块的作用,每个框架的原理以及与其他框架的区别。

例如我就用我做过的一个搜索项目作为经典项目,与面试官探讨。

项目中用到了 Kafka 这个框架,那么面试官就会问 Kafka 和 RocketMQ 之间的区别是什么,它们两个有什么不同?

项目中还用到了 Canal 这个阿里巴巴开源的框架,那么面试官自然会问这个东西是干嘛的,原理是怎样的?

项目中还用到了 Zookeeper 作为协调者,那么 Zookeeper 在这个项目中的作用是什么,扮演了什么角色?

对于「项目理解程度」的考核会发生在技术面试的三四轮。在这个层次上,你必须要有一个拿得出手的项目,并且对其中的所有框架以及原理都了如指掌,否则你会被虐惨。

三、项目深度的考核

通过上一轮对于「项目理解程度」的考核后,基本上你对整个项目都会有一个全面的认识,应用层面上的问题基本上不会难倒你了。但在「项目思考深度」的考核上,就不仅仅只是考核应用层面上的问题了。

还是用我做过的一个搜索项目作为例子,其中 Canal 这个开源框架暂时是没有实现集群这个功能的,那么面试官就问了:

  • 你如何去改造这个项目,从而实现 Canal 的集群功能?

这个时候,你会发现你懵逼了,因为你从来没有去思考过这个问题。你所有的工作内容都是在想如何使用开源框架,而没有进一步思考这些开源框架好不好,有什么可以改进的地方。

所以,在这一个层次上考核的是你对开源框架的思考深度,这些框架到底好不好,好在哪里,不好在哪里,有什么可以改进的地方。

对于「项目思考深度」的考核同样发生在技术面试的三四轮。在这个层次上,你不仅要对项目本身理解足够深刻,还要跳出项目本身,去思考开源框架本身的问题。

四、总结

当我们回过头来总结,你会发现这三个层次都是层层递进的,而且逐步深入。虽然这是面试中总结出来的经验,但是这却是一个很好的学习指引。读者可以自己自查,看看自己现在是处于哪个层次,这样在工作中也可以不断地向更高层次迈进。

对于我来说,我缺乏的是对于项目的思考深度,很多时候都是业界觉得好,那我就用了。但是作为一个高级开发,甚至是一个即将成为架构师的高级开发来说,你必须知道为什么要用这些框架?它有什么问题,我们能不能做得更好?只有这样,我们才能有所成长。

声明:文章由「陈树义」公众号授权转载。


非著名程序员

技术,职场,行业观察,这里应有尽有!

 

图像工程的三个层次

图像工程 图像技术近年来得到了极大的重视和长足的进展,出现了许多新理论、新方法、新算法、新手段、新设备。图像界一致认为亟需对他们进行研究和集成应用,而这个工作需要在一个整体框架下进行,这个框架就是图像...
  • VonSdite
  • VonSdite
  • 2017年10月16日 08:23
  • 758

软件需求三个层次

软件需求分为三个层次:业务需求、用户需求和功能需求。     1、业务需求(Why):反映了组织机构或客户对系统、产品的高层次的目标追求,定义了项目的远景和范围,即确定了项目的发展方向、功能范围、目标...
  • u010233287
  • u010233287
  • 2015年04月22日 19:06
  • 946

软件质量的三个层次

1.符合需求规格:符合开发者明确定义的目标,即产品是不是在做让它做的事情。目标是开发者定义的,并且是可以验证的。 2.符合用户显式需求:符合用户所明确说明的目标。目标是客户所定义的,符合目标即判断我...
  • ShanShanlaichiji
  • ShanShanlaichiji
  • 2016年06月28日 12:11
  • 263

云服务的三个层次

云计算 层次
  • sdgxboy
  • sdgxboy
  • 2015年01月11日 22:20
  • 1692

阿里面试经历(二)

最近事情的确比较多,几个月开拓的一个新的产品线处于关键的联调阶段。偏偏这个时候拿到的阿里的offer,记忆一下回到年初的时候,当时其实是比较希望去阿里,也写了面试经验http://blog.csdn....
  • micro_hz
  • micro_hz
  • 2017年09月02日 17:44
  • 3007

[2017/3/13]阿里面试总结

晚上10点半正在运动的时候突然接到电话。。于是让对方等了五分钟,找了个安静的地方开始电面。 感觉面试官姐姐挺辛苦,非工作时间还来面试实习生,不仅如此,在我比较水的情况下都能保持很好的态度,很感动!!...
  • ZZU_Ringo
  • ZZU_Ringo
  • 2017年03月13日 23:32
  • 873

什么是软件需求,什么是功能需求?——论需求的三个层次和三个方面(2)

     我们的软件产品或者项目,其需求都有三个层级和三个方面。     一、我们首先看需求的三个层次          软件需求包括3个不同的层次――业务需求、用户需求和功能需求。  业务需求(Bu...
  • qinhl99
  • qinhl99
  • 2010年04月20日 23:45
  • 6733

数据库的基本结构三个层次

数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索...
  • camyjany
  • camyjany
  • 2007年07月30日 20:18
  • 6180

阿里巴巴面试专场

本系列源于:从July的470道面试题中提取阿里的笔试题和面试题,以助应聘阿里的同学和朋友们一臂之力。 这部分题目大多在2011~2013年左右,近两年的阿里面试笔试题还没有,希望有的朋友能直接发我邮...
  • qingyuanluofeng
  • qingyuanluofeng
  • 2015年08月14日 01:25
  • 1494

【工作感悟】——聊聊面试那些事

之前我以为,一场面试能检验一个人的能力,因为它决定着你的去留。而现在,我倒觉得面试不过是一次联谊会,双方坐在一起展示自己,看能不能达成共赢。如果你幸运,也许第一个就是你想要他他也想要你的人,如果缺点运...
  • u010066934
  • u010066934
  • 2015年09月26日 10:53
  • 1015
收藏助手
不良信息举报
您举报文章:聊聊阿里面试的三个层次
举报原因:
原因补充:

(最多只允许输入30个字)