如何面试:面试程序员
很多程序员会过多地透露自己的信息,不要以为诚实和完全透明就是最好的政策,殊不知过犹不及。以下是小编整理的如何面试:面试程序员。希望对大家有所帮助。
一、提问之前的准备
首先,最重要的是,你自己一开始就应该想清楚:
1. 需要新员工完成什么样的任务?
2. 怎样的人能完成这样的任务?
3. 哪些途径和方法可以发现这样的人?
只有明确这些根本性的问题,才能正确高效地完成面试。
二、提问的原则
假定你对上一节的三个问题,已经有了清晰的想法,那么接下来就可以设计如何提问了。
有一些提问的原则,是你应该遵循的:
每一个面试问题都有明确的目的。你不仅自己了解,还能向其他面试官解释清楚。
多提一些开放性(Open-ended)的问题,而不是那种用Yes/No就可以回答的问题。这样做使你有机会与面试者展开讨论,并且提出后续的问题,尽可能多地了解对方。
不要问宗教、家庭、健康、个人隐私等方面的问题。
不要问太复杂的问题。因为面试者没有太多思考时间,所以无法周全地回答,你也就无从判断他的能力了。
三、考察专业能力
为了确认面试者是胜任的,你可以问一些与职位相关的专业方面的问题。(不过通常来说,一次面试不足以看出一个人的专业能力。)
比如,你的招聘职位是系统管理员,你可以问"如何快速地在50台机器上部署Linux?"(提示:正确答案不是刻录50张安装光盘。)
另外,你还应该向面试者了解他的过去,因为过去是未来的最好预测依据。不过,提问的重点不要仅仅是他过去的成果,更要关注在当时的环境中,他是如何决策和实施的。
四、考察综合素质
因为人是会发展的,所以某种程度上,面试者的综合素质要比他的专业能力更重要。
所以,具体的技术问题(如何调用API、什么是设计模式、编程语言的语法等等)可以少问一些,更应该关注面试者的事业心、对工作的热情、进取心、自律能力、毅力等方面。
下面是一些典型问题:
Why did you get into development?
你为什么开发软件?
How many technical books did you read in the past year?
去年你读了几本技术书籍?
What was your favorite technical book in the past year? What did you learn from it?
去年你最喜欢的技术书籍是哪本?你从中学到了什么?
What websites do you read regularly, related to development?
平时你经常访问哪些编程类网站?
Do you maintain any open-source projects?
你有自己的开源项目吗?
Do you code in your spare-time?
业余时间你编程吗?
Do you love programming, or do you do it for the money?
对于你来说,编程是一种爱好,还是一种谋生手段?
Have you accomplished anything important in your career yet? Do you want to?
你的职业生涯之中有什么重要的成就?它是你主导的吗?
What would make you feel that you have done something important?
什么事情会让你很有成就感?
五、考察理性思维
某些情况下,你可能需要了解面试者的分析判断能力,看他能否全面地思考问题、客观地评价自己。
那么,你可以依次提出这样三个问题:
What's your favorite programming language? Why?
你最喜欢的编程语言是哪种?为什么?
If you could add one feature to your favorite language, what would it be? Why?
如果允许你为这种语言加一种功能,你会加什么功能?为什么?
If you could remove one feature from it, what would it be? Why?
如果允许你取消一种功能,会是什么功能?为什么?
这里的重点是,让面试者从正反两方面评价一件自己熟悉的东西,看看他的思维是否片面。答案无所谓对错,只要面试者有一个明确的立场,能够从正反两方面说出令人信服的理由,就可以了。比如,某个软件的口碑不好,但是面试者说他很喜欢,而且说得出一大堆理由,清楚地解释了这种软件的优点和缺点在哪里,这样就很好。
你还可以把这些问题,套用在其他东西上面,比如操作系统、文字编辑器等等。
程序员面试经验分享
1、准备充分。
我这次找工作准备的特别不充分,可以说在第一次面试的时候都没正真意义的准备过什么,在第一周的时候基本都是打酱油,所以准备是必须的,我总结了大概有几点需要的。常见的面试题目,自己所做的项目情况,自我介绍,职业规划,离职原因。我觉得这些东西一定要用一点时间做下梳理,不然面试的情况会像我开始一样很糟糕,浪费时间也浪费一些很好的机会,我觉得应该在你想跳槽的半个月之前就要准备了,这样可以节约一个星期的时间。
2、基础知识的积累。
我是NET的方向的,所以主要说。NET方向,面试无非四大块:C,数数据库,JS(Jquery),数据结构和算法。先说数据库,分页SQL和一些查询SQL,再就是大数据量查询的优化这基本是每个面试官都会问的,JS方面因为我不是主做前端开发,面试一般都是些DOM对象的操作和AJAX,C的主要是一些基础知识这里就不一一举例各种面试题目,自己多做做。最难得就是面试数据结构和算法了,这也是很多程序员薄弱的地方,一般问这方面的问题的`面试官都很牛逼,问这种问题的公司一般开的待遇会高很多,个人觉得问了这方面的问题的公司对程序员的综合素质要求很高。数据结构和算法这个只能靠平时工作之余多看书,多学习了。程序员这条路,学无止境。
3、项目的描述。
这个是每个面试官都会问的问题,面试官最愿意听的是你的项目亮点,用到了哪些技术来解决问题。最好的做法是把你的项目的大体的框架画出来给面试官看,这样才能直观的给面试官一种你确实是做过了这个项目。你要非常流畅的给面试官讲解,有的面试官会让你拿笔在白板上做讲解,这个可以在家里面多做几次模拟。我觉得我在这方面是强项,几个让我画图讲解项目的公司都给我发出了入职通知。
4、职业规划。
这个一般是在总监级别的面试官会问到,我觉得程序员在工作到3到5年的时候都应该考虑这个问题,是走项目管理还是技术到底。这个就看自己的人生规划了,我个人觉得工作不到5年的同学还是老老实实,踏踏实实的做好技术,靠这个吃饭,什么都别多想,技术才是你生存的根本。
5、待遇的谈判。
任何事情都是有回旋的余地的,所有的公司都想用最低廉的价格找最优秀的员工,不要主动说自己的期望待遇,谁先说谁就会被动,你可以尝试的问贵公司这个职位大概能开出的待遇是多少?一般的人力都会给你一个范围,然后你根据实际情况来做出决定,一般在这个基础+2K的范围,比如人力MM对你说这个职位在8K左右,你可以开10K的待遇,反正这一块是非常有技巧的,我觉得的待遇只要和你跳槽的时候期望的差不多其实就行了。
6、投简历。
51,智联,中华英才主要是这3家。51都是一些小公司,智联的命中率高一点,中华英才这次找工作没在上面投递不做评价。有几家在51上的公司的邀请面试的时候,待遇有3K的,我当时有点震惊,啥时候技术这么廉价了,所以我在51上投递了几天就放弃了,后面在智联上投递。这一条可能会得罪到51这个公司,不过我还是要写出来。刚毕业的可以尝试下51,毕竟先入门先学习才是菜鸟程序员最应该做的事情,不要太在意待遇。
7、学历和英文能力问题。
这个真的很重要,大公司基本是只要本科,英语虽然在找工作的不需要,但是在你职业道路上很重要,工作之余应该多学学英语,学历低的应该考考学历。学历和能力无关,但是确实你找工作的一个机会,你技术如何强,但是没有机会也是白搭。
面试技巧
1.基本仪容和礼仪
其实不是针对面试,基本仪容和礼仪在日常生活也是非常重要的,是一个人是否有教养,是否有素质的基本要求。
穿着:如无特别需要,不要着正装,休闲装即可。但是不要光脚丫子大拖鞋,背心吊带,男士不要穿露脚趾凉鞋。干净整洁即可,表示对本次面试的重视和对面试官的尊重。
仪容:女士如果想化妆的话,淡妆即可,素颜也可以。男士头发理一下,胡子剃掉。还是那句话,干净整洁,万万不可口腔有异味,或者身上有体味(特别是脚丫子臭味,绝对不行!)
礼仪:多说“请”,“您”,“谢谢”,记得进门后关门,前台给你倒的水走的时候记得拿出去扔掉。坐下来面对面试官要有坐像,不要跟在家里一样太随便,说话口齿清楚,慢一点说,不要跟打机关枪一样。切记,不可做作,细节处把握尺度就行。如果遇到和面试官有分歧的时候,立即闭嘴并闭嘴,不要争论,不要试图说服面试官,更不可耻笑或者蔑视面试官,哪怕你确实不知道比面试官高到哪里去了。记住,这是礼貌,跟你技术有多牛逼无关。
谦虚:任何时候,把自己放在一个相对低的姿态,你是来面试,不是来教育面试官的,抱着一种接受检阅和学习的态度面对面试,千万千万不要觉得自己主角光环加身,天下之大老子第一。相信我,这个世界牛人大把的,别人不说穿是因为给双方留面子,你可别认为是你真牛逼。谦虚,起码不会让你有成为一个跳梁小丑的机会。
2.专业基础知识
什么重要的话说三遍已经烂大街了,我就不说了。对于程序猿来说,专业基础知识绝对是重中之重,是面试成功的最基础要素。我说的专业基础知识,不是说你做了多少个项目,写了多少行代码,而是软件开发的基础知识。
我在面试的时候,有时候会遇到一些候选人,乍一看简历也有好几年工作经验,项目也写的满满的,但是却连“值类型引用类型本质区别”,“构造函数有哪些特点,何时被调用”,“类和接口区别是什么”这样的问题也回答不了,注意,是回答不了,也就是不知道,不是知道意思但是组织不了语言。这类候选人通常在连续回答不上几个问题后,开口为自己辩解:“我动手比较强,写代码都没问题,但是书上的概念我真的不太清楚”。能说出这个话,就说明此人根本就明白作为一个技术工作者最基本的专业素质是什么。(我在这里就不展开谈基础知识在开发中的作用以及对自身成长的作用,以后会专门撰文来讨论)所以千万不要觉得自己工作几年,有些代码经验就已经可以挑战更加高薪的工作。
在面试前,一定要先审视一下自身的基础知识掌握程度,如果有必要,自己买书回来或者网上找一些资料,利用空余时间系统的学习一遍,比如你所使用的语言本身,比如你擅长的框架底层实现,比如编译原理,比如多线程的知识,比如Http相关的知识等等。千万不要没有一点点基础知识储备或者基础知识储备不丰富就跑去面试,失败的几率非常大,如果眼睁睁的看着自己心仪的工作机会擦肩而过,我想是谁都会难过的吧。
3.沟通能力
面试的过程本质上就是一次沟通的过程,候选人在短短的时间内要尽量的向对方展现自己的长处,隐藏自己的短处,尽量让对方问题得到圆满答复并且留下较好印象。有些程序猿性格内向,在陌生人面前比较腼腆,话语不多。当然,这不能说是做错了,只能说是一些性格上的短处而已(如果很严重,那就有自卑的可能,需要重视并且纠正)。在面试时,候选人一定要精神焕发,昂首挺胸,眼神坚定,切记切记眼神不要飘忽不定,切记切记不要瓮声瓮气。有人会问我,“那我回答不上面试官的问题,或者一时没有想起来,心里没底了怎么办?”,怎么办??回答不上也不能被吓尿了啊,是吧,咱们遇到不会的问题,就老老实实的说“这个我不清楚”,或者“这个我不会”,千万千万不要不懂装懂,顾左右而言他,打算糊弄过去,我告诉大家,捣糨糊是过不去的,面试官的问题肯定是他非常清楚答案的,你忽悠面试官就是在忽悠你自己,有意思吗?当然,也不要胡乱回答,否则只会成为面试官和他的同事茶余饭后的笑话。
在面试时,尽量双眼直视面试官(但不要瞪着人家。),背挺直,手机开飞行模式,说话口齿清楚,利落干脆,回答得上就尽量说,回答不上直接说不知道,不要罗里吧嗦,特别是谈到薪酬,对方问你期望时,最好在现有基础上增加10%-20%,不要漫天要价,也不要不好意思,放心大胆的说出你的期望,如果对方觉得略高,会再跟你商量。务必一开口就给人真诚,干练,干脆,专业的印象。
4.过往项目经验
很多面试者不大重视自己的过往项目经验,这是我不能理解的地方。我每个做过的项目,虽然我在其中可能只是做一个模块甚至一个功能,但是我都会想办法搞清楚整个项目的业务流程,研发背景,内部模块功能,和外部如何实现集成,底层数据库的设计,整体系统架构设计等等。我在面试候选人的时候,通常都会问最近一个项目相关的东西,有很多候选人都会表示是ta自己一个人设计开发了这个项目,但是连有哪些功能模块,系统结构(注意,不是架构)都回答不出来。有些面试者,在面试一些中高级的程序员时,很喜欢从过往经验入手,你再一遍介绍的时候他可能随时提问。因为这样有2个好处,第一是预防一问一答的形式,候选人事先背了很多问题的答案,第二是从候选人过往项目经验入手,除了可以看出候选人是否虚假构建了项目经验,还可以判断该候选人对开发细节的把握以及对一些技术点的反应能力和掌握情况,毕竟“突然袭击”比“瞄准射击”要更加考验候选人。
所以,在面试前,应该好好把自己以前的项目经验都捋一捋,特别是上一个项目,从业务流程到产品设计到系统开发,特别是项目内一些你做过的细节地方,你准备在面试时拿出来说的,必须以此为点,相关的东西都查查资料看一看。再一个就是项目里面的闪光点,什么叫闪光点,就是高大上的东西,需要自己多了解了解,在面试的时候拿出来说也可以加分。比如我以前做过一个项目,是一个类似网页爬虫的东西,把爬下来的东西根据数据库里面的地址上传到设置的路径,再删除这个文件。当时我还是比较小白的阶段,懵懵懂懂的听人说多线程好像效率比较高,于是就用到了new Thread的多线程方式,确实解决了一些效率上的问题。后来换工作时,我又把这个项目拿出来看了一遍,并且着重看了看多线程相关的东西,知道了还有异步编程(当时好像C#还没有Task),于是就自己学习了一番,然后动手做做实验什么的,把多线程这一块理论联系实际又巩固了一遍。果然,后来面试的时候谈到这个上面的时候,面试官对这一块很有兴趣,越问越深,我也知无不言,为自己增分不少。
5.不要作弊
有些企业在面试程序员的时候,喜欢一开始扔一张试卷让候选人先做,然后再去面试。暂且先不谈做卷子考察方式的好坏,在做试卷的时候,万万不要用移动设备上网查询答案。本身作弊的行为就让人不齿,如果面试官在暗处进行观察,发现你作弊,那就太尴尬了。会就是会,不会就是不会,即便你用手机查答案把试卷写的满满的,在接下来面试的时候,面试官再就试卷上的问题展开一问你,你还是不会。所以不管有没有人监督,在面试的做试卷环节,千万不要作弊。
6.热门技术点的掌握
其实这是个增分项目,如果上面几点都已经通过面试的考核,那么这一点就会成为你绝对的亮点。首先要先自己了解一下当前热门的技术,然后通过分析自己申请的职位,去看看可能涉及到哪些热门的技术,然后再去专门的找资料进行学习和动手实验。
【如何面试:面试程序员】相关文章:
程序员如何面试11-03
如何面试程序员12-14
如何面试程序员?12-11
如何面试程序员?02-11
面试官如何面试程序员11-23
关于如何面试程序员?11-21
浅谈如何面试程序员?11-21
浅谈如何面试程序员11-19
HR如何面试程序员01-16