最近很多人问我,你们公司还缺人么,你们用哪些技术栈,有哪些是你们比较关注技术重点?
作为负责技术面试的我,每天面对数十甚至上百封简历,肯定要优先做一轮筛选。那么哪些技术点或方向在筛选或面试时,会给我留下深刻印象呢?
我觉得优秀的,有潜质的程序员可以从以下几点来体现。
一. 性能调优
几乎每个JAVA后端开发程序员,都会在面试时碰到诸如如何性能调优的问题,如何回答好这个问题,不仅仅是考察对JVM,内存模型等的理解,更看中的是碰到性能问题时,排查问题的方法论和思路。
典型的一个场景是:在压力测试时,发现FullGC频率很高,如何解决?
此类问题一般从以下几点入手:
-
观察GC日志,判断是否有内存泄漏,或者存在的内部不合理点。此处要求能熟悉各种linux命令,可以快速查看和定位。
-
调整JVM 参数,如新生代,年老代大小,S0和S1大小比例,不同垃圾回收器的采用。并结合业务特点做进一步分析。这里不但要求扎实的JVM内存模型和理论,还要求对JVM的各种参数设置耳熟能详,并能实践操作。
-
Dump内存,做进一步的对象分析。
-
压测脚本的编写,性能问题解决前可以发现问题,并能在问题解决后真实的验证。
此类优化不能用照本宣科式的回答,面试官一定会问实际中操作的场景,和解决问题的思路。虽然性能问题的原因是多种多样的,但是解决问题的思路和方法论是可以明确的。
二. 网络框架的理解和使用
大家一定都听过或使用过