纯干货!程序员的面试技巧~
注:本文章来自于网络,写的不错,特此分享给需要的人~
其实有很多文章说面试相关的问题,有国内也有国外的,但是我相信不少人,特别是新人看完后还是觉得比较虚比较泛,似乎好像懂了,但是一遇到面试还是有些手无足措或者重复犯一些错误。本篇文章正是结合实际经验,为广大程序员同志们写下满满的干货,让大家把握面试的关键点,找到面试的窍门,顺顺利利找到心仪的公司。
我认为面试是很奇妙的一件事情,在短短的一段时间内,要让一个完全陌生的人认可你的专业能力,认可你的人品,认可你的职业习惯等等。而同样,被面试者需要判断这是否是一家靠谱的公司,是不是有钱,是不是适合自己工作,是不是和自己发展方向一致等等。工作就像是娶媳妇(找老公),不是说随随便便说换就换,而是你每天都要面对的事情,所以找个好的企业,找一份好的工作,对于一个靠自己养活自己的人来说真实太重要了,那么找好企业,找好工作的第一步就是面试。下面从2个方面来说说面试的技巧。
第一个方面,自身的综合素质。
1.基本仪容和礼仪
其实不是针对面试,基本仪容和礼仪在日常生活也是非常重要的,是一个人是否有教养,是否有素质的基本要求。
穿着:如无特别需要,不要着正装,休闲装即可。但是不要光脚丫子大拖鞋,背心吊带,男士不要穿露脚趾凉鞋。干净整洁即可,表示对本次面试的重视和对面试官的尊重。
仪容:女士如果想化妆的话,淡妆即可,素颜也可以。男士头发理一下,胡子剃掉。还是那句话,干净整洁,万万不可口腔有异味,或者身上有体味(特别是脚丫子臭味,绝对不行!)
礼仪:多说“请”,“您”,“谢谢”,记得进门后关门,前台给你倒的水走的时候记得拿出去扔掉。坐下来面对面试官要有坐像,不要跟在家里一样太随便,说话口齿清楚,慢一点说,不要跟打机关枪一样。切记,不可做作,细节处把握尺度就行。如果遇到和面试官有分歧的时候,立即闭嘴并闭嘴,不要争论,不要试图说服面试官,更不可耻笑或者蔑视面试官,哪怕你确实不知道比面试官高到哪里去了。记住,这是礼貌,跟你技术有多牛逼无关。
谦虚:任何时候,把自己放在一个相对低的姿态,你是来面试,不是来教育面试官的,抱着一种接受检阅和学习的态度面对面试,千万千万不要觉得自己主角光环加身,天下之大老子第一。相信我,这个世界牛人大把的,别人不说穿是因为给双方留面子,你可别认为是你真牛逼。谦虚,起码不会让你有成为一个跳梁小丑的机会。
2.专业基础知识
什么重要的话说三遍已经烂大街了,我就不说了。对于程序猿来说,专业基础知识绝对是重中之重,是面试成功的最基础要素。我说的专业基础知识,不是说你做了多少个项目,写了多少行代码,而是软件开发的基础知识。
我在面试的时候,有时候会遇到一些候选人,乍一看简历也有好几年工作经验,项目也写的满满的,但是却连“值类型引用类型本质区别”,“构造函数有哪些特点,何时被调用”,“类和接口区别是什么”这样的问题也回答不了,注意,是回答不了,也就是不知道,不是知道意思但是组织不了语言。这类候选人通常在连续回答不上几个问题后,开口为自己辩解:“我动手比较强,写代码都没问题,但是书上的概念我真的不太清楚”。能说出这个话,就说明此人根本就明白作为一个技术工作者最基本的专业素质是什么。(我在这里就不展开谈基础知识在开发中的作用以及对自身成长的作用,以后会专门撰文来讨论)所以千万不要觉得自己工作几年,有些代码经验就已经可以挑战更加高薪的工作。
在面试前,一定要先审视一下自身的基础知识掌握程度,如果有必要,自己买书回来或者网上找一些资料,利用空余时间系统的学习一遍,比如你所使用的语言本身,比如你擅长的框架底层实现,比如编译原理,比如多线程的知识,比如Http相关的知识等等。千万不要没有一点点基础知识储备或者基础知识储备不丰富就跑去面试,失败的几率非常大,如果眼睁睁的看着自己心仪的工作机会擦肩而过,我想是谁都会难过的吧。
3.沟通能力
面试的过程本质上就是一次沟通的过程,候选人在短短的时间内要尽量的向对方展现自己的长处,隐藏自己的短处,尽量让对方问题得到圆满答复并且留下较好印象。有些程序猿性格内向,在陌生人面前比较腼腆,话语不多。当然,这不能说是做错了,只能说是一些性格上的短处而已(如果很严重,那就有自卑的可能,需要重视并且纠正)。在面试时,候选人一定要精神焕发,昂首挺胸,眼神坚定,切记切记眼神不要飘忽不定,切记切记不要瓮声瓮气。有人会问我,“那我回答不上面试官的问题,或者一时没有想起来,心里没底了怎么办?”,怎么办??回答不上也不能被吓尿了啊,是吧,咱们遇到不会的问题,就老老实实的说“这个我不清楚”,或者“这个我不会”,千万千万不要不懂装懂,顾左右而言他,打算糊弄过去,我告诉大家,捣糨糊是过不去的,面试官的问题肯定是他非常清楚答案的,你忽悠面试官就是在忽悠你自己,有意思吗?当然,也不要胡乱回答,否则只会成为面试官和他的同事茶余饭后的笑话。
在面试时,尽量双眼直视面试官(但不要瞪着人家。。。),背挺直,手机开飞行模式,说话口齿清楚,利落干脆,回答得上就尽量说,回答不上直接说不知道,不要罗里吧嗦,特别是谈到薪酬,对方问你期望时,最好在现有基础上增加10%-20%,不要漫天要价,也不要不好意思,放心大胆的说出你的期望,如果对方觉得略高,会再跟你商量。务必一开口就给人真诚,干练,干脆,专业的印象。
4.过往项目经验
很多面试者不大重视自己的过往项目经验,这是我不能理解的地方。我每个做过的项目,虽然我在其中可能只是做一个模块甚至一个功能,但是我都会想办法搞清楚整个项目的业务流程,研发背景,内部模块功能,和外部如何实现集成,底层数据库的设计,整体系统架构设计等等。我在面试候选人的时候,通常都会问最近一个项目相关的东西,有很多候选人都会表示是ta自己一个人设计开发了这个项目,但是连有哪些功能模块,系统结构(注意,不是架构)都回答不出来。有些面试者,在面试一些中高级的程序员时,很喜欢从过往经验入手,你再一遍介绍的时候他可能随时提问。因为这样有2个好处,第一是预防一问一答的形式,候选人事先背了很多问题的答案,第二是从候选人过往项目经验入手,除了可以看出候选人是否虚假构建了项目经验,还可以判断该候选人对开发细节的把握以及对一些技术点的反应能力和掌握情况,毕竟“突然袭击”比“瞄准射击”要更加考验候选人。
所以,在面试前,应该好好把自己以前的项目经验都捋一捋,特别是上一个项目,从业务流程到产品设计到系统开发,特别是项目内一些你做过的细节地方,你准备在面试时拿出来说的,必须以此为点,相关的东西都查查资料看一看。再一个就是项目里面的闪光点,什么叫闪光点,就是高大上的东西,需要自己多了解了解,在面试的时候拿出来说也可以加分。比如我以前做过一个项目,是一个类似网页爬虫的东西,把爬下来的东西根据数据库里面的地址上传到设置的路径,再删除这个文件。当时我还是比较小白的阶段,懵懵懂懂的听人说多线程好像效率比较高,于是就用到了new Thread的多线程方式,确实解决了一些效率上的问题。后来换工作时,我又把这个项目拿出来看了一遍,并且着重看了看多线程相关的东西,知道了还有异步编程(当时好像C#还没有Task),于是就自己学习了一番,然后动手做做实验什么的,把多线程这一块理论联系实际又巩固了一遍。果然,后来面试的时候谈到这个上面的时候,面试官对这一块很有兴趣,越问越深,我也知无不言,为自己增分不少。
5.不要作弊
有些企业在面试程序员的时候,喜欢一开始扔一张试卷让候选人先做,然后再去面试。暂且先不谈做卷子考察方式的好坏,在做试卷的时候,万万不要用移动设备上网查询答案。本身作弊的行为就让人不齿,如果面试官在暗处进行观察,发现你作弊,那就太尴尬了。会就是会,不会就是不会,即便你用手机查答案把试卷写的满满的,在接下来面试的时候,面试官再就试卷上的问题展开一问你,你还是不会。所以不管有没有人监督,在面试的做试卷环节,千万不要作弊。
6.热门技术点的掌握
其实这是个增分项目,如果上面几点都已经通过面试的考核,那么这一点就会成为你绝对的亮点。首先要先自己了解一下当前热门的技术,然后通过分析自己申请的职位,去看看可能涉及到哪些热门的技术,然后再去专门的找资料进行学习和动手实验。比如你是搞互联网的,那么最好学习一下负载均衡相关的技术,学习分布式数据库的技术,学习缓存技术,学习页面静态化的技术;如果你是搞数据分析的,那么最好学习一下Hadoop,学习一下微软的Cube,学习一下惠普的Vertical;如果你是搞iOS的,那么可以看看Swift,可以看看Xamarin,可以看看WebSocket等等,当然,我只是举几个例子,不一定非要这样对应,你如果是搞Java的,也可以去看看Python如果你是搞.net的,也可以去看看Ruby on rails等等。所谓技多不压身,就是这个道理。
以上 6 点是自身素质的要求,如果在这6点上面能让面试官满意,基本上面试就没有太大的问题了。接下来讲一下如何选一个好的公司或者企业。
1.面试官是否专业
这里的面试官不仅仅是指技术面试官,也包括HR或者大老板。如果面试官问你一些奇葩问题(例如问你开什么车,房子多大,伴侣薪水多少等等),或者有比较明显的不耐烦,歧视,傲慢等表现,就基本可以断定这人是个奇葩,这家企业你也要慎重考虑,因为这个奇葩的人很可能就是你的上司(或者是HR)。好的企业面试官应该表现出来的是专业水准,起码中规中矩问一些常规的该问的问题。
2.尽量找猎头推荐或者同行推荐
道理其实很简单,一个企业如果花钱请猎头寻求人才,说明了企业对于这个职位的重视程度,也说明了企业是有经济能力支付相对高昂一些的招聘费用。这样就无形中对企业进行了一轮筛选。
3.工作环境
不求工作环境高大上,起码要整洁干净。从对工作环境的状态,可以看出企业管理者的一些习惯,如果工作环境阴暗潮湿,破破烂烂的,员工也是咋咋呼呼大喊大叫,说明管理者要么是没有足够的经济条件进行整改,要么是自身习惯不好,不在乎环境。建议在面试时,仔细观察一下工作环境,如果是明亮宽敞,干净整洁,大家都静悄悄的做自己的事情的,从工作环境上说是个不错的企业。
4.加班与薪酬福利待遇
前文说了,谈到薪酬不要腼腆,在现有基础上加10%-20%都是正常范围,只要不乱要价就行了,我这里说的薪酬是指纯工资,在面试时,还要考虑企业能提供的年终奖或者其他福利。对于加班的话,一般来说做IT的加班是很正常,但是要问清楚加班怎么算,是加班费还是调休。以下几种情况,请慎重考虑:
a.无偿加班
b.强制加班到x点
c.单休
d.无年终奖
e.除了工资以外无任何福利
f.Offer或者合同不量化写清楚工资数字,而是写“和业绩挂钩”,“根据业绩”等
5.在面试之前上某准网(以前叫某智网)查一下该公司评价
当然也可以先度娘一下,如果是骗子公司,就直接可以查出来,但是有些公司内部其实很烂,但是并不是骗子公司,所以这时候就需要去某准网上搜一下评价。但是也不是每个公司都有评价,有很多小公司,在某准网上也没有。但是抱着没有负面评价就是好评的思路,也说的过去。如果一家企业明显有很多负面评价,而你刚好要去这家企业面试,我建议你就得好好考虑考虑了。
6.上门面试时,去卫生间看一下
没错,就是去卫生间。可以提前点到,然后问一下前台卫生间,去卫生间洗个手(或者面试完成后也行),特别是看看厕纸的质量。当然,让你去看看卫生间的环境和厕纸质量,不是在衡量以后你在这里方便的是否舒服,而是通过卫生间的状况,可以看出企业管理者对于治理企业的态度。如果一家企业连卫生间的要求都很高,装修比较好,卫生条件也不错,甚至连厕纸质量都很好,那么在其他方面,对待员工应该差不了哪里。说来你可能不信,我见过的企业中,几乎都满足这一条。不好的企业卫生间一定是比较破烂,设施破损怀旧了也不会及时修理,厕纸用的最廉价的。而好的企业卫生间装修精美,设施干净,厕纸也是较厚较柔软的。其实大家可以仔细留意一下,好的商场,好的学校,卫生间相对都比较高档一些。
上面 6 点就是对企业的一些考察,通过这些考察,可以大致看出是否是一家相对较好的企业。当然可能还有其他的一些方法,在这里就不再多说,总之,希望大家在选择企业的时候一定要慎重些,学会思考,学会甄别。
后话
其实面试还是得靠自己的实力,所以技巧再多都是辅助,只有自己的技术水准达到一定的程度,才能拿下心仪的职位。
写这篇文章只能说帮大家做做参考,提供一些帮助,最重要的,还是要再日常工作和生活中多多学习多多思考,把理论和实际应用真正的转化成自己的经验。希望各位程序猿们顺顺利利的通过面试,找到自己满意的工作!