流程
主流的面试流程基本上是三轮以上。
- 三轮:一般是两轮技术面 + 一轮HR面。
- 更多轮:HR面 + 多轮技术面+HR面的方式。
下面就说说面试要注意的点:
技术一面
此轮面试一般是由项目组长面试,此人大概率是你入职后的直属领导。
考察点
这轮面试主要考查的是基础知识,值得注意的是,基础知识并不代表是简单知识,而是指底层原理等方面,例如Java面试中常见的:数据结构和算法,JUC,以及JVM内存布局、内存可见性,Spring MVC原理、SpringBoot自动装配原理等。
我们会发现,在面试中考察应用层框架和工具等并不多,主要还是基础知识,这是因为基础扎不扎实决定了代码质量和水准,而例如Spring Cloud组件、Docker、K8S等上层应用,其实学起来挺快的。
另外,看书和官方文档这种系统的学习方式我是很推荐的,反倒百度、博客等碎片化学习虽然在初学的时候入门很快,但我慢慢感觉到了其上限。
回忆
我面试中印象非常深刻的一个问题:
面试官:Java引用对象一定是在堆中分配吗?
我:我说引用类型的实际对象不都在堆中吗?
面试官又问:知道JIT
吗?
我:知道,用来动态编译热点代码的。
面试官:听过逃逸分析
吗?
我:没有…
后来通过学习,发现自己学的还是太浅。简单的来说就是在JIT编译时,会进行逃逸分析,也就是如果方法内的引用对象没有被其他作用域使用,那么这个对象可以直接在栈上分配,随着栈消亡,而不需要占用堆空间,减少GC压力。
可以问什么?
所以如果想了解入职后的具体工作,以及目前的项目进度和使用技术栈,最好是在这个阶段问,因为上层的领导不一定能给出细节回答。
技术二面
此轮面试是由部门领导或CTO进行面试,是比较高层的领导。
考察点
这轮在技术细节上的考察不会太多,重点考察整体思想,例如:如何处理并发问题?如何提高QPS?如何处理OOM?JVM优化的思路是什么?
回忆
面试官:你了解哪些Java中的数据结构?
我:线性的…,K-V的…,其中还分线程安全(JUC)的和线程不安全的…
面试官:你提到的CopyOnWriteArrayList
的思想是什么?
我:读写分离 + CAS,读在原数组上,写在一个新数组上写,写完CAS替换原数组。
面试官:它有什么劣势吗?还有什么解决方式?
我:读写分离涉及到的创建新表,比较消耗性能。另一种方式是在写的时候在对应的槽上加锁。
可以问什么
这一阶段的面试官属于公司里的大领导了,所以可以问一些有关公司目前的业务情况、未来发展规划或技术架构等宏观问题。
HR面
能走到这一轮,心里就踏实多了。这轮主要是聊聊个人规划、目前的情况以及薪资待遇。
考察点
虽然HR面已经接近成功,但是还是不能掉以轻心,毕竟面试的每个阶段的每个面试官都是有一票否决权的。
HR属于人力资源部,主要是看个人综合能力和与公司的契合度的。面试之前准备一下自我介绍,自我的优势,能给公司带来什么。
可以问什么
这一阶段,HR都会在问完问题后主动来谈薪资的,尽量不要在之前的阶段主动提。
让HR根据面试反馈给一个初步薪资,再慢慢谈到合适。谈薪资的时候也不要有心理负担,坦诚大方的谈,没什么不好意思的。
通过对比已经收到的offer和行业参考薪资,来合理规划期望薪资。如果感觉公司非常合适并且能够获得很大的上升空间,也可以酌情考虑。
最后
还在学习期间的应届生不要急着入职一些不太理想的公司,再坚持学一段时间,第一份工作大家要非常重视,一定程度上决定了上升空间和发展上限。
祝大家早日拿到心仪的offer,加油!
感谢您阅读本文,关注我的公众号“语冰Yubing”可接收最新推送,里面也有我分享的一些优质资源。