其实面试就像一场相亲,在你心动人的面前,肯定要展示自己最好的一面,无论是穿着还是言行举止。能让你来参加面试,至少说明在「个人简历」与「公司需求」这一层面上,对你还是有好感的。 面试是一种人才评估的方式,它和笔试一样,归根结底都属于心理测量,也就是用数量化的方式描述人类的能力和人格。
作为一个软件开发工程师,看过很多公司的面试题,也参与过很多公司的面试,也给不少人新人面过时不试,虽说我现在并没有取得多大成就,或者是当过什么重要的总监职位,就是简单的通过自己的阅历和经验,在这里想发表一下自己的一些看法。
公司招聘无非从 知识广度、知识深度、知识应用能力和学习能力这4点入手,由前往后深入了解你。
1、基础知识
在我看来,基础知识是比较重要,但是并不会重要到对面试起决定性作用,因为对于企业来说,并不需要你能够记住多少知识,哪怕你一点都记不住,但是能够实现产品的需求,并能够说明其中的来龙去脉,说白了就是看你的动手操作能力和业务能力。如果你是一个死记硬背,记下来一大堆理论知识,但是到实际操作的时候,那些理论知识往往只是纸上谈兵。
说到基础知识,首当其冲的就是岗位必须的能力了,比如对于Java工程师,你需要了解java的面向对象、网络编程、集合框架、异常处理等。
这些都是最基本的,除此之外,作为一个Java Web工程师,你还需要熟悉Web框架,比如SSH、SSM、SpringBoot、SpringCloud等。能说出它们的工作原理,特性、优缺点等等。
而作为一个后端工程师,你需要了解MySQL的工作原理、常用命令,了解Redis的常用数据结构、使用方式,了解Java网络编程的基本概念,能够解释NIO和BIO、能够了解JVM,了解GC等等。
面试官考察这些基础知识的方式很简单,找一些相关的面试题一一进行提问,根据你的回答,基本上就可以了解你对这些知识点的掌握程度了。
2、知识深度
也许上面这些问题,你通过背一些面试题,看一些面经,就能掌握得八九不离十了,毕竟面试官提的很多问题也是在网上找到的,所以你可能会放松警惕,觉得这样就足够了。
其实不然,一般面试官还有一个爱好,就是对于每个知识点,都喜欢深入往下问,问到没有问题可以问,或者问到你不会为止,这样提问的目的只有一个,就是试探你对这个知识点的理解深度,如果你无法提供足够深刻的回答,结果往往就是失败。例如:
1 基础层面,用过哪些数据库,多少经验?Jdbc里preparedstatment的用法,以及索引的概念等,这部分通过背题,或许可以通过。
2 调优层面,索引,执行计划的技巧,比如哪些sql用不到索引,并问在项目里建过哪些索引,执行计划要看哪些要素。
3 排查问题层面,请结合实例,给出监控慢sql的做法,并讲下用执行计划等分析和解决慢sql的方法,这里就涉及到看日志监控和实际解决问题。
4 如果是资深开发和架构师岗,再问mycat, redis集群方面的问题,比如如何部署,分库规则,缓存时间等,也要求讲述分析排查和解决实际问题的经验。
也就是说,如果候选人仅仅准备业务功能点,或者只背面试题,理论不结合实际,很难通过面试,更何况不少候选人干脆是没做准备。
相比于基础知识,要提高你的知识深度更加需要时间和精力,这就不是一朝一夕的事情了,需要你不断地去积累。
3、解决问题的能力
无论是刚毕业,还是已经有几年工作经验的程序员,可能在面试时都不可避免的会被问到一些"纯技术"却没有什么技术含量的问题,比较常见的像:请写出多个表级联查询的SQL语句?如何实现XML文件的读写?如何用Ajax返回Json格式数据?...
这种类似的问题有很多,之所以说这些问题没有什么技术含量,是因为这些问题在网上都可以很快搜索到答案,更关键的是它们都只能算是实现某些功能的工具,就像上面提到的几个问题,它们的答案都比较固定,像一个模版,只要你会了,基本上都是一成不变的解决套路。
当然,在这里,我不否认作为一个有经验或有能力的程序员,这些应该是烂熟于胸的基本技能;如果你这些都很熟练,就能仅凭这衡量你的能力吗?!就好像是一个修车的,扳手等工具都用的很娴熟,但却解决不了一个汽车的故障。
所以,如何将自己学到的东西转化为实际解决问题的能力是非常重要的。
4、学习能力
互联网时代的技术发展得越来越快。曾经统治世界多年的技术也会有被替换的一天。
如果你没有足够的学习能力,你就无法跟上变化,被淘汰只是时间问题。
程序员学习要敢于尝试新技术。判断自己能做什么,不能做什么。只有比其他人更快地学习和掌握新技术,才不必担心失业问题。
但是如果你一直停留在旧技术的舒适地带,抵制新技术的推广,最终只会把自己送上不归路。
所以说,要让你自己更加优秀,就要让自己更优秀。让自己更优秀就要不断学习新事物。提升自己的学习能力!
总结:
说了这么多,其实面试官只不过想要了解面试者的可塑造性。面试题、算法题、压力面试等,都只是一种手段。HR关心的不是你的基本tool skill(工具技能)是否熟练,他们更看重上面提到的四种能力——因为它才决定了你的个人潜力和是否能为公司能创造真正的价值!