面试过程
最近去阿里的菜鸟国际做了一次面试交流,发现大公司对于面试者的知识结构考核非常严谨,可以作为我们日常工作学习的指导。虽然很多人说面试问到的东西在实际工作中很少用到,甚至有「面试造火箭,工作拧螺丝」的说法。
但从面试中,其实可以看得出来现在的公司对于面试者的知识体系要求。如果我们能在工作中就按着这样的要求去不断提升,那么在面试的时候必然也能游刃有余。
一般来说,阿里的面试会有两轮的技术电面,分别交叉检验你的技术基础。后面还有两轮的现场技术面试,主要检验你的项目经验。但从知识体系的角度来看,阿里面试对于知识的考核可以分为三个层次:对于基础知识的考核、对于项目经验的考核、对于项目深度的考核。
一、基础知识考核
在这个层次上,主要考核你对 Java 语言本身原理的理解以及各种框架的原理理解。对于 Java 开发岗位上来说,这些知识点包括但不限于:
- 集合 HashMap 的原理,与 Hashtable、ConcurrentHashMap 的区别?
- Java 线程池的核心属性以及处理流程
- Java 并发包原理、Synchronized关键字、锁
- 线程的生命周期
- JVM类加载机制
- JVM内存模型
- JVM分代以及垃圾回收机制
- Spring Bean 容器生命周期
- Spring AOP 原理
- Dubbo 请求流程以及原理
- 数据库 SQL 优化、数据库索引、索引原理
- ……
看到这么多的知识点,我一下子就懵逼了,这么多得看到什么时候才看得完啊?但后面我想明白了,其实你不需要全部都懂,但需要了解大部分知识点,并且在这大部分知识点中,还需要有部分是了解得非常深入的。如果达到这个水平,基本上都能通过考核。
对于基础知识的考核多出现在阿里的前两轮电话面试上。对于这块,你事前把常见的面试题目看一遍,多面试几次基本上都没有问题。
二、项目经验的考核
当你成功通过基础知识的考核之后,你会进入下一关的考验:项目的理解程度。
面试官首先会让你选择一个你最拿手的项目,画出架构图,之后的一切问题都从这个架构图触发。当你画出架构图之后,你肯定需要解释清楚每个模块的作用,每个框架的原理以及与其他框