你要面试一个程序员,应该问他啥问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你要面试一个程序员,应该问他啥问题相关的知识,希望对你有一定的参考价值。

首先面试程序员分有没有经验
面试没有经验的程序员就随便问问点ssm,ssh五大框架问题,多线程什么的,再问问是否会点前端技术
有经验就看看他的简历,问他简历项目上的问题,可以围绕着简历上的项目问,通过他的回答涉及到的技术点之类的,拓展出去问其他的
参考技术A

    品德与职业操守。来应聘的人很多,职业门槛却有限。这是关于过去工作经历、维护工作心得、敬业故事的提问。

    梦想与愿景。没有目标的人比比皆是。人员适用于该领域发展到一定规模的时候,用人单位是否可控良性发展或提前规避极端风险。

    教育环境与离职原因。详细分类:家庭成员默契度、学校教育默契度、既往单位默契度、应聘者的看法。也许你需要一个踏实工作,在平凡岗位上做出稳重靠挺的过困难的程序员。

    健康情况与不能容忍的情况。交流在于双向沟通。单向虽好,有可能缺乏可长期持续发展的对策。关于环境是否有毒,空气是否健康,应聘者过去的工作文化,员工是否愿意融入新的公司文化,本单位职场文化,应聘关心愿意长期工作的相关。

    严厉的分水岭。德才兼备者能过的关。这是较为棘手的日常工作模拟提问。工作职责界限的划分:没有人天生就能区分自己做什么工作是值得被聘用的,而做另一些工作可能会失去价值。在每一天下午的4个小时,假如这颗螺丝钉不肯从事份内的工作,一个月后发电机就会觉得成本没有换来效率。

    工作岗位质量鉴定测试。经常克服困难的人喜欢克服能证明自己业务水平的困难。这是一个具体工作中遇到的实际困难,有一个困难级别,属于该岗位离职人员留下的拦路虎。在工作中得到尊重,是适宜优秀人才生存的环境。如果测试问题太简单,专业人员会预判当前单位可能将遇到因缺乏有效人才而出现的危机四伏的局面。以上是全部。

参考技术B 一、提问之前的准备
首先,最重要的是,你自己一开始就应该想清楚:
1. 需要新员工完成什么样的任务?
2. 怎样的人能完成这样的任务?
3. 哪些途径和方法可以发现这样的人?
只有明确这些根本性的问题,才能正确高效地完成面试。
二、提问的原则
假定你对上一节的三个问题,已经有了清晰的想法,那么接下来就可以设计如何提问了。
有一些提问的原则,是你应该遵循的:
每一个面试问题都有明确的目的。你不仅自己了解,还能向其他面试官解释清楚。
多提一些开放性的问题,而不是那种用是/否就可以回答的问题。这样做使你有机会与面试者展开讨论,并且提出后续的问题,尽可能多地了解对方。
不要问宗教、家庭、健康、个人隐私等方面的问题。
不要问太复杂的问题。因为面试者没有太多思考时间,所以无法周全地回答,你也就无从判断他的能力了。
三、与职位相关的问题
为了确认面试者是胜任的,你可以问一些与职位相关的专业方面的问题。(不过通常来说,一次面试不足以看出一个人的专业能力。)
比如,你的招聘职位是系统管理员,你可以问“如何快速地在50台机器上部署Linux?(提示:正确答案不是刻录50张安装光盘。)”
另外,你还应该向面试者了解他的过去,因为过去是未来的最好预测依据。不过,提问的重点不要仅仅是他过去的成果,更要关注在当时的环境中,他是如何决策和实施的。
四、考察综合素质
因为人是会发展的,所以某种程度上,面试者的综合素质要比他的专业能力更重要。
所以,具体的技术问题(如何调用API、什么是设计模式、编程语言的语法等等)可以少问一些,更应该关注面试者的事业心、对工作的热情、进取心、自律能力、毅力等方面。
下面是一些典型问题:
你为什么开发软件?去年你读了几本技术书籍?
去年你最喜欢的技术书籍是哪本?你从中学到了什么?
平时你经常访问哪些编程类网站?
你有自己的开源项目吗?
业余时间你编程吗?
对于你来说,编程是一种爱好,还是一种谋生手段?
你的职业生涯之中有什么重要的成就?它是你主导的吗?
什么事情会让你很有成就感?
五、考察理性思维
某些情况下,你可能需要了解面试者的分析判断能力,看他能否全面地思考问题、客观地评价自己。
那么,你可以依次提出这样三个问题:
你最喜欢的编程语言是哪种?为什么?
如果允许你为这种语言加一种功能,你会加什么功能?为什么?
如果允许你取消一种功能,会是什么功能?为什么?
这里的重点是,让面试者从正反两方面评价一件自己熟悉的东西,看看他的思维是否片面。答案无所谓对错,只要面试者有一个明确的立场,能够从正反 两方面说出令人信服的辩护理由,就可以了。比如,某个软件的口碑不好,但是面试者说他很喜欢,而且说得出一大堆理由,清楚地解释了这种软件的优点和缺点在 哪里,这样就很好。
你还可以把这些问题,套用在其他东西上面,比如操作系统、文字编辑器等等。
参考技术C 一、提问之前的准备
  首先,最重要的是,你自己一开始就应该想清楚:
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?
如果允许你取消一种功能,会是什么功能?为什么?
  这里的重点是,让面试者从正反两方面评价一件自己熟悉的东西,看看他的思维是否片面。答案无所谓对错,只要面试者有一个明确的立场,能够从正反 两方面说出令人信服的辩护理由,就可以了。比如,某个软件的口碑不好,但是面试者说他很喜欢,而且说得出一大堆理由,清楚地解释了这种软件的优点和缺点在 哪里,这样就很好。
  你还可以把这些问题,套用在其他东西上面,比如操作系统、文字编辑器等等。

从程序员到架构师
前两天跟着项目经理参加了一个面试。虽然不是第一次参加面试,但是还是有点紧张:)
我觉得我们面试的题目已经基本的不能再基本了,但是还是找不到一个合适的人。现在真的成了一种普遍的困境,很多人找不到满意的工作,很多公司找不到满意的人。
闲话不多说了,说说我们的几个题目吧。同时也说说对即将参加面试的兄弟的建议,从一个面试者的角度。
第一个题目:自我介绍。
自我介绍,几乎是每个面试的必备的题目(99%以上)吧。但是,我仍然遇到非常多的人连这个题目都“不准备”。我说的是“不准备”,而不是“准备的不好”。这个题目要准备的出色,是比较难的。我们是外企,我知道很少参加外企面试的 兄弟参加外语会紧张,特别是刚开始。所以会出现这样的开头:“Thank you for giving me this oppertunity. It’s my honor to talk with you. The following is my self-introduce”。没关系,面试官会理解你,但是,你要背熟,至少要背完。我遇到过好几个连自我介绍都没有背完的,你说怎么会有心情继续!
通常,很难靠自我介绍给你加多少分。但是自我介绍给你减分却非常快,快得出乎你的意料。第一,如果自我介绍没有准备充分,说明你对面试不够重视,当 然面试官也会觉得自己不受重视;第二,如果自我介绍没有条理,说明你的总结能力不够;第三,如果自我介绍和简历里面有哪怕一点点的冲突,说明你的人品有问 题,不够成熟,或者不够细心。一般来说,说明自己的姓名,年龄,工作年限。再说一下上一家公司就职期间的一两个项目就好了。项目这块是重点,不要云山雾 罩,如果你里面有太多的术语,面试官多半是不了解的,除非你们在一个非常相近的领域。说的越简单易懂越好。
第二个题目:你最近在读什么书?或者你毕业后都读过哪些书?
这个是很难作弊的题目。你读过什么就说什么,千万别吹嘘。如果真的没读过也就说没读过好了,如果读得一知半解,自己衡 量,碰上面试官读过那本书可能会以为你不诚实,或者至少自学能力差。人文类的书也可以说,但是只提一句,看面试官的表情再说。如果面试官一脸茫然,见好就 收,不要企图用这个时间向面试官灌输你关于文艺复兴的认识。多说一些经典的书,当然前提是你要多看书。或者你实在没看过什么书,也可以说经常上的网站和论 坛或者邮件列表。CSDN这个年头最好不要重点提,因为大抵专心做事的没有多少时间泡在上面。
第三个题目:你认为OO和面向过程的区别是什么?(OO有哪些特点?)进而,多态是什么意思?能不能写一段代码展示一下多态?
这个题目的关于多态的部分是我们项目经理的保留题目,所以别人跟他一起面试通常会跳过这个题目。或者问完了OO的特点,就转过身用期望的眼神看着他?他也就知道该自己了:)。这个问题很基本,OO的特点基本上都能回答上来。至于和面向过程的区别,却比较难回答,但也很难出错:)仁者见仁,智者见智。
多态,我觉得是OO里面一个很基本的概念了,从某种程度上过去我们有些过于强调多态和继承,甚至有说法说理解了多态就理解了OO。写代码的部分,能完全没有错误的很少。不过也减不了多少分,但是要是完全没有体现多态就不好了。
到此为止基本上是个分水岭,如果前三个问题答得好,后面多半不会为难你了。如果答得特别不好,后面的也不会为难你了。
第四个题目:你最熟悉的设计模式是什么?能不能随便找其中一个画个类图或者序列图或者协作图?
这个题目我几乎每个面试都可以问。因为几乎每个人的简历里面都回写上“熟悉OOD”,后面紧跟着“和设计模式”,下一条则是熟悉UML。对于大多数 人,所谓的熟悉设计模式不过是Factory(而且是简单工厂,而不是GOF所说的工厂方法或者抽象工厂)、Singleton(千刀万剐的设计模式,被 最广泛误用的模式之一)、Observer(因为jdk里面有Observer和listener)、MVC(好有名啊,但是你问到C的几种用法和适用情 况就傻眼了,所以我也几乎从来不问)、Visitor(不知道为什么这个也这么出名)。
画类图,绝对不是要求背过GOF的书上的原图。只要差不多能反映模式的含义即可,因为我也记不清楚那么多经典图。顺便会问一下这个图里面的几个箭头表示什么。以经常被选中的Factory为例,要能看出返回的是接口(不管是那种工厂模式,除了简单工厂)。
第五个题目:OO的设计原则能说上几个?随便找其中一个说说。
这个题目用的比较少,一般是前三个题目答的比较好,所以有兴趣继续聊聊稍微深入的话题。或者前面的问题时间太短,用来占用时间:)OO的设计原则有很多,也不要求局限于bob列出的OCP、DIP、SRP等等。像什么面向接口编程啊、封装变化啊等等都可以说。可是就这样能列出一两个的很少,能进一步说两句的就更少了。
说了半天,我希望这是我们公司遇到的特殊情况。如果国内的程序员真的这么不禁面,实在是一个不好的事情。我曾经跟国外的一个实习生一起做一个项目,他所表现出来的素质比我不知道高多少。我们公司虽然在软件行业没有什么名气,但是开发实力在全球还是很靠前的。公司正在把很多的开发移到中国来,但是从我们的面试情况看却很不乐观。
参考技术D 一、提问之前的准备
首先,最重要的是,你自己一开始就应该想清楚:
1. 需要新员工完成什么样的任务?
2. 怎样的人能完成这样的任务?
3. 哪些途径和方法可以发现这样的人?
只有明确这些根本性的问题,才能正确高效地完成面试。
二、提问的原则
假定你对上一节的三个问题,已经有了清晰的想法,那么接下来就可以设计如何提问了。
有一些提问的原则,是你应该遵循的:
* 每一个面试问题都有明确的目的。你不仅自己了解,还能向其他面试官解释清楚。
* 多提一些开放性(Open-ended)的问题,而不是那种用Yes/No就可以回答的问题。这样做使你有机会与面试者展开讨论,并且提出后续的问题,尽可能多地了解对方。
* 不要问宗教、家庭、健康、个人隐私等方面的问题。
* 不要问太复杂的问题。因为面试者没有太多思考时间,所以无法周全地回答,你也就无从判断他的能力了。
三、与职位相关的问题
为了确认面试者是胜任的,你可以问一些与职位相关的专业方面的问题。(不过通常来说,一次面试不足以看出一个人的专业能力。)
比如,你的招聘职位是系统管理员,你可以问"如何快速地在50台机器上部署Linux?"(提示:正确答案不是刻录50张安装光盘。)
另外,你还应该向面试者了解他的过去,因为过去是未来的最好预测依据。不过,提问的重点不要仅仅是他过去的成果,更要关注在当时的环境中,他是如何决策和实施的。
四、考察综合素质
因为人是会发展的,所以某种程度上,面试者的综合素质要比他的专业能力更重要。
所以,具体的技术问题(如何调用API、什么是设计模式、编程语言的语法等等)可以少问一些,更应该关注面试者的事业心、对工作的热情、进取心、自律能力、毅力等方面。

程序员面试--自我介绍应该怎么说?!

当面试考官随便地问你:“谈谈你自己的情况如何?”这是面试中的第一个问题。此刻,你应把在此之前所有紧张不安的情绪稳定下来。因为这个问题,你在准备面试前就应该做好了充分的准备,并且有足够的信心和勇气相信自己能回答好这个问题。




1、自我介绍的内容


首先请报出自己的姓名和身份。可能应试者与面试考官打招呼时,已经将此告诉了对方,而且考官们完全可以从你的报名表、简历等材料中了解这些情况,但仍请你主动提及。这是礼貌的需要,还可以加深考官对你的印象。


其次,你可以简单地介绍一下你的学历、工作经历等基本个人情况。请提供给考官关于你个人情况的基本的、完整的信息,这部分的陈述务必简明扼要、抓住要点。例如介绍自己的学历,一般只需谈本专科以上的学历。工作单位如果多,选几个有代表性的或者你认为重要的介绍,就可以了,但这些内容一定要和面试及应考职位有关系。请保证叙述的线索清晰,一个结构混乱、内容过长的开场自,会给考官们留下杂乱无章、个性不清晰的印象,并且让考官倦怠,削弱对继续进行的面试的兴趣和注意力。


应试者还要注意这部份内容应与个人简历、报名材料上的有关内容相一致,不要有出入。在介绍这些内容时,应避免书面语言的严整与拘束,而使用灵活的口头语进行组织。这些个人基本情况的介绍没有对或错的问题——都属于中性问题,但如果因此而大意就不妥了。


接下来由这部份个人基本情况,自然地过渡到一两个自己本科或工作期间圆满完成的事件,以这一两个例子来形象地、明晰他说明自己的经验与能力,例如:在学校担任学生干部时成功组织的活动;或者如何投入到社会实践中,利用自己的专长为社会公众服务;或者自己在专业上取得的重要成绩以及出色的学术成就。


接下来要着重结合你的职业理想说明你应考这个公务员职位的原因,这一点相当重要。你可以谈你对应考单位或职务的认识了解,说明你选择这个单位或职务的强烈愿望。原先有工作单位的应试者应解释清楚自己放弃原来的工作而做出新的职业选择的原因。你还可以谈如果你被录取,那么你将怎样尽职尽责地工作,并不断根据需要完善和发展自己。当然这些都应密切联系你的价值观与职业观。不过,如果你将自己描述为不食人间烟火的、不计较个人利益的“圣人”,那么考官们对你的求职动机的信任,就要大打折扣了。


这里我们介绍了一条清晰的线索,便于你组织你的自我介绍。为了保证结构明确,有条有理,你可以多用短句子以便于口语表述,并且在段与段之间使用过渡句子,口语也要注意思路、叙述语言的流畅,尽量避免颠三倒四,同一句话反复说几遍的“粘糊劲,同时不要用过于随便的表述。


2、自我介绍的时间


一般情况下,自我介绍应该是3~4分钟较适宜。时间分配上,可根据情况灵活掌握。一般地,第一部分可以用约2分钟,第二部分可以用约1分钟,第三部分用1~2分钟。


好的时间分配能突出重点,让人印象深刻,而这就取决于你面试准备工作做得好坏了。如果你事先分析了自我介绍的主要内容,并分配了所需时间,抓住这3、5分钟,你就能中肯、得体地表达出你自己。有些应试者不了解自我介绍的重要性,只是简短地介绍一下自己的姓名、身份,其后补充一些有关自己的学历、工作经历等情况,大约半分钟左右就结束了自我介绍,然后望着考官,等待下面的提问。但也有的应试者想把面试的全部内容都压缩在这几分钟里。要知道面试考官会在下面的面试中间向你提有关问题的,你应该给自己也给他人留下这个机会。


3、自我介绍的重要性


通过自我介绍,主动地向面试考官推荐自己,这是面试组成结构的重要内容,同时也是面试测评的重要指标。


4、自我介绍的要点


(1)自我介绍是应以面试的测评为导向。


自我介绍也是一种说服的手段与艺术,聪明的应试者会以公务员考录的要求与测试重点而组织自我介绍的内容,你不仅仅要告诉考官们你是多么优秀的人,你更要告诉考官,你如何地适合这个工作岗位。而与面试无关的内容,既使是你引以为荣的优点和长处,你也要忍痛舍弃,以突出重点。


(2)自我介绍要有充分的信心。


要想让考官们欣赏你,你必须明确地告诉考官们你具有应考职位必需的能力与素质,而只有你对此有信心并表现出这种信心后,你才证明了自己。


应试者在谈自己的优点的一个明智的办法是:在谈到自己的优点时,保持低调。也就是轻描淡写、语气平静,只谈事实,别用自己的主观评论。同时也要注意适可而止,重要的、关键的,要谈,与面试无关的特长最好别谈。另外,谈过自己的优点后,也要谈自己的缺点,但一定要强调自己克服这些缺点的愿望和努力。


特别指出的是,不要夸大自己。一方面从应试者的综合素养表现,考官能够大体估计应试者的能力;另一方面,如果考官进一步追问有关问题,将令“有水份”的应试者下不了台。


面试中应试者的自我介绍,可以让考官观察到简历等书面材料以外的内容,如你对自己的描述与概括能力,你对自己的综合评价以及你的精神风貌等。自信、为人等是其中的重要的潜台词,应试者务必注意。


最后,也是最重要的一点,那就是要有信心!


加油!要记得很多人都在支持你!


更多干货请点击阅读原文查看~


以上是关于你要面试一个程序员,应该问他啥问题的主要内容,如果未能解决你的问题,请参考以下文章

程序员面试系列手把手教你如何面试,你要的我都有(工作项目篇)

百度程序员中午面试一个人,晚上去阿里面试,面试官竟是中午那个人

大厂主管带过团队创过业,也曾年入百万,35岁竟被“炒鱿鱼”,看他如何破局!

程序员面试时应该注意哪些问题?

优秀的程序员是不用机械键盘的

程序员面试--自我介绍应该怎么说?!