- 控制面试节奏
面试官在考察什么?专业知识,始终都是专业知识。
有一种常见的想法,“我有一个朋友/同学,技术还没我好呢,去了ABC公司,年薪有n k”。先不谈该同学到底有什么方面更优秀,身为一个学过统计学的程序员,绝不能认同拿个例代替整体的思路。
在面试之前,我们可以先找个招聘网站,按自己的地域、年限、技术做一个分类,然后看一眼中位数所处的大致薪酬区域,这个区域就是你谈价的基本盘,在这个基础上再用其他方式来操作方差。话又说回来了,自己清楚和向他人证明,是两码事,最后还是得看专业知识。
一般来说,专业我会考察三个方面:基础知识掌握程度,自己工作中应用到的工具\框架是否熟悉,本公司需要用到的技能有无了解。
工具、框架千千万万,你在客场作战,如何把面试节奏控制在手中呢?
a、写一份合适的技能表
我这里不谈最漂亮的,不谈最专业的,我强调的是,最适合你的技能表。
一个前提:面试官会看你技能表上的所有关键字。
你写出的技能,可能是加分项,也可能是陷阱。在这个前提下,提供一份能让自己应付自如的技能表,十分必要。
如何界定合适,是一个技术活儿。我这里提供一个可以实际操作的指南。
html,css,js,jquery,dojo,nodejs,ext,java,.net,php,dom4j,junit,jsonpath,tomcat,weblogic,redis,hadoop,oop,spark,svn,cvs,gitmangodb,jsp,servlet,tcp/ip,udp,spring,hibernate,mybatis,struts,springmvc,intellj idea,eclipse,vs,blablablabla……
看见这一堆,你能不能分清楚,哪些是前端技术,哪些是后台技术?哪些是解释性语言,哪些是编译型语言?哪些是基础知识,哪些工具和框架?哪些是数据库,哪些是web容器?等等。
这里说到的第一个重点就是,合适的分类。
我个人更加推崇按技术类型划分,比如:
| 基础 | OOP,GoF,tcp/ip,udp,java |
|前端技术 |html,css,js,jquery,dojo,websockect|
|后端技术 | jsp/servlet,nodejs|
|常用框架 | spring,springmvc,mybatis|
|常用工具 | dom4j,fastjson,svn,git|
|web容器 | tomcat,weblogic|
|数据库 |mysql,Oracle,db2,mangodb|
|开发工具 |ecilpse,idea|
首先说明,做到了合适的分类,也还没构成一份合适的技能表。
在这份分类里,很多关键字是跨域的,你把git放到开发工具里,tcp/ip放到网络里,又或者把前端后台都总结为web开发类技术,虽不严格,也没有什么人会反对。
是的,分类本身可以不严格,但不能出错。如果前端技术里出现了一个php,面试官也会迷之沉默吧。
第二个重点,合适的掌握程度。
对这些技能做一个了解程度的分级,说明一下常见分级在面试官眼里的含义:
了解 也就是用过接触过的程度。
熟悉 能灵活使用该技术,知道相关的基础知识点,能搭建、配置,能解决常见错误。
精通 这个可不得了,你得有作为“专家”的自信才能如此填写,也就是,不管你遇到没遇到过的问题,问你,你就理所当然的要解决。
我这里提出几个原则:
但凡你有精通的技术,一定要特别突出的写在最前面,勾引面试官提及相关问题。
但凡只是你了解的技术,一个字都不要谈,它们都可能是扣分的陷阱,当然它们并不是没用,可以在面对面交谈的时候自己主动提及,为什么要被动的让对面来提问?
但凡是你熟悉的技术,你得确定自己是否真正熟悉,有什么好办法呢?答案是写blog,很多东西你以为你懂了,一旦下笔描述,就会遇到困难,写blog也是个二次学习的过程,这个过程会让你对原理性的东西有更多的思考。
懂得了以上,那么,上面那份技能表我们可以做一个筛选,并加上描述。比如:
基础
精通Java和面向对象编程及其设计模式
前端技术
熟练掌握html/js/css前端开发技术,熟悉jquery及相关UI库
后端技术
熟悉servlet原理,熟悉ssh框架
web容器
熟悉tomcat
数据库
熟悉标准SQL语法,熟悉mysql数据库,熟悉mangodb数据库
常用工具
熟悉dom4j,fastjson
做完了这些,技能表就精简到了一定程度了。这份技能表达到合适了吗?
第三个重点,合适的技能。
有一些技能,并不合适写上去。
举一个例子,我经常看到有人说,我熟悉XML。
XML,我们知道,它是一种描述性语言,在开发中我们长用来作为序列化工具使用,它仅仅是个“描述”而已,那么,你到底是熟悉它什么呢?
有人可能说了,我熟悉dom4j,也熟悉xpath,那么这还稍微靠谱一些,xpath和正则表达式,我们都可以归纳入“基础”一栏。但是拿dom4j出来说,就不大合适。
为什么?因为它也仅仅是个用于解析XML的工具,一个合格的程序员,是要做到看一眼它的API就能自行使用的。
总结,它们使用起来太简单,不值一提。
所以,不要提。
不过呢,凡事有两面性,简单的东西也说明其容易理解,如果能谈出原理性,就又转变为了加分项。
比如“熟悉XML设计规范”,至少就要求你知道<?xml ?>标记里每一个属性的含义和用处。
比如“懂得dom4j原理”,至少就得知道dom4j的建模思路。
最后一个重点,漂亮的布局。
这里我用了漂亮,不是合适,我们来看看上面的技能表,其实,“分类信息”这一列,就很多余,只要你合理的排布,对方自然是知道这一栏的,“熟悉”“精通”其实又表达得很模糊,对于不同面试官,界定的方式可能又不一致。这里推荐五百丁的简历模版,比如这张技能表:
b、把面试范围控制在自己的主场
一般情况下,做到了上述部分,就算是划好了道儿。
“我遇到个傻X面试官,老问我前端问题,我搞大数据的,问毛线前端!”
没遇到过也听说过这种事吧?
解释一下这种情况的产生,面试官的水准不一定比你高,也不一定有很多招聘的经验。于是,有那么部分负责招聘的技术,就爱把问题往自己熟悉的方向去引,又或者,干脆就是想问倒你。
面试官平时也就是个程序员,你所熟知的东西可能不是他的领域,如果让他开口问你,难免会不欢而散。这里提供一种沟通方式:“你说的这方面我不熟悉,我是做XXX的,要不我和你说说XXX和XXX?”
一般来说,如果不是傻,面试官是不会拒绝的,不管领域相距多远,都还是会有思想上的相通,说得有理没理都能体现出来。
做到这些,面试的节奏基本就握在了你手里,对于你自己熟悉的内容,如果做不到侃侃而谈,那,就是另外的问题了。
- 理解面试官的思路
先解释几个理解上的误区。
a、招聘应该看水准,而不是学历
专科里也有优秀人才,这是不可否认的,但是个人去应聘是个人的事,公司要招聘是统计学上的事。假设不同学历的人才排布满足正态分布的话,高学历的峰值肯定是在低学历的正方向的。
学历门槛能用来节约面试精力,并不是针对个人。对于个人而言,如果没有学历,提高能力当然还是正事。
b、堆砌使用过的框架并不能增加你面试的好评
对于这些框架的理解才算。不要追求宽泛而全面,全面不是坏事,一旦被人问及了不那么熟悉的东西,很容易被连带着否定其他优点。深入解释一个问题,比“我什么都懂”是有优势的。毕竟,能深入理解一门技术的,理解其他技术就很容易。反之不亦然。
c、形象和谈吐,很重要。
这是个“看脸”的世界,如果没有好的外表,请做到整洁干净,如果不擅长言辞,请放慢语速,清晰的有条理的表达。
是为了给面试官好印象吗?不光如此,在技术达不到忽视一切的时候,干净的外在、清晰的表达,就不会被人质疑团队融入能力。
d、不要怕谈工资
但凡水平足够,只管开出自己期望的工资,工资估算方式之前已经提过了。如果怕工资谈低,就不要说出会让自己后悔的数字,如果怕谈太高了找不到工作,正常的公司会对心水面试者回复“我们只能开这个工资,但我们有XX奖励,XX奖金,你看看能不能接受”。
e、毕业生基础最重要。
在随意找工作之前,请打理好自己的基础,做好万全的准备。公司招不到人,和求职者找不到工作,是同时存在的。在全国各地,有大把的工作时间灵活、薪资丰厚的工作等着你们,不要急于一时,静下心来,把学过的基础知识概念背一背,谈工资的灵活性就大些。
基础不好的同学,请抛弃我很努力我学习能力很强,我可以不要工资,给我一个学习机会就好的想法。
基础,是所有问题中最重要也是最简单的一环,如果在学校时候没有学好,要怎么让人相信你的努力和学习能力呢?
一个刚毕业的学生,如果基础不扎实,对于公司来说,可能是负资本。一方面,需要一个老员工来做培训,另一方面,成长性可能达不到期望。
一个培训公司的培训周期也就半年,如果只是复习基础,难道你的成果会比培训公司那种什么都教的要学得少么?
话又说回来,毕业生请把握第一份工资,这不是钱的问题,而是会给开低价的公司不会认真培养你,你愿意把社会生涯的第一年浪费掉么?
- 切勿说谎
这一条太重要,所以单独放这里说。对于不了解的东西,直白的说不懂就好了。
“有个谁,啥都不懂,靠吹就拿到了高工资。”
相信这种事情的,请不要做程序员了。
1、不要拿个例当整体;2、那是别人不是你。
如果不是基础知识,一般是不会扣分的。有时候,是该公司要求“懂XX技术”,有时候是面试官的话术陷阱。最忌讳的就是说谎,猜中了没事(猜的中吗?),猜错了,你觉着面试官会怎么想?