最近去阿里的菜鸟国际作了一次面试交流,发现大公司对于面试者的知识结构考核很是严谨,能够做为咱们平常工做学习的指导。虽然不少人说面试问到的东西在实际工做中不多用到,甚至有「面试造火箭,工做拧螺丝」的说法。但从面试中,其实能够看得出来如今的公司对于面试者的知识体系要求。若是咱们能在工做中就按着这样的要求去不断提高,那么在面试的时候必然也能游刃有余。java
通常来讲,阿里的面试会有两轮的技术电面,分别交叉检验你的技术基础。后面还有两轮的现场技术面试,主要检验你的项目经验。但从知识体系的角度来看,阿里面试对于知识的考核能够分为三个层次:对于基础知识的考核、对于项目经验的考核、对于项目深度的考核。面试
在这个层次上,主要考核你对 Java 语言自己原理的理解以及各类框架的原理理解。数据库
对于 Java 开发岗位上来讲,这些知识点包括但不限于:微信
上面只是说了不多的一部分而已,若是想查看更多,能够点击《Java面试题:百度前200页都在这里》了解更多。架构
看到这么多的知识点,我一会儿就懵逼了,这么多得看到何时才看得完啊?但后面我想明白了,其实你不须要所有都懂,但须要了解大部分知识点,而且在这大部分知识点中,还须要有部分是了解得很是深刻的。若是达到这个水平,基本上都能经过考核。并发
对于基础知识的考核多出如今阿里的前两轮电话面试上。对于这块,你事前把网上常见的面试题目看一遍,多面试几回基本上都没有问题。框架
当你成功经过基础知识的考核以后,你会进入下一关的考验:项目的理解程度。学习
面试官首先会让你选择一个你最拿手的项目,画出架构图,以后的一切问题都从这个架构图触发。当你画出架构图以后,你确定须要解释清楚每一个模块的做用,每一个框架的原理以及与其余框架的区别。优化
例如我就用我作过的一个搜索项目做为经典项目,与面试官探讨。线程
对于「项目理解程度」的考核会发生在技术面试的三四轮。在这个层次上,你必需要有一个拿得出手的项目,而且对其中的全部框架以及原理都了如指掌,不然你会被虐惨。
经过上一轮对于「项目理解程度」的考核后,基本上你对整个项目都会有一个全面的认识,应用层面上的问题基本上不会难倒你了。但在「项目思考深度」的考核上,就不只仅只是考核应用层面上的问题了。
仍是用我作过的一个搜索项目做为例子,其中 Canal 这个开源框架暂时是没有实现集群这个功能的,那么面试官就问了:
这个时候,你会发现你懵逼了,由于你历来没有去思考过这个问题。你全部的工做内容都是在想如何使用开源框架,而没有进一步思考这些开源框架好很差,有什么能够改进的地方。
因此,在这一个层次上考核的是你对开源框架的思考深度,这些框架到底好很差,好在哪里,很差在哪里,有什么能够改进的地方。
对于「项目思考深度」的考核一样发生在技术面试的三四轮。在这个层次上,你不只要对项目自己理解足够深入,还要跳出项目自己,去思考开源框架自己的问题。
当咱们回过头来总结,你会发现这三个层次都是层层递进的,并且逐步深刻。虽然这是面试中总结出来的经验,可是这倒是一个很好的学习指引。读者能够本身自查,看看本身如今是处于哪一个层次,这样在工做中也能够不断地向更高层次迈进。
对于我来讲,我缺少的是对于项目的思考深度,不少时候都是业界以为好,那我就用了。可是做为一个高级开发,甚至是一个即将成为架构师的高级开发来讲,你必须知道为何要用这些框架?它有什么问题,咱们能不能作得更好?只有这样,咱们才能有所成长。
我有一个微信公众号,常常会分享一些Java技术相关的干货;若是你喜欢个人分享,能够用微信搜索“Java团长”或者“javatuanzhang”关注。