软件开发工程师的面试应该考察哪些素质如何做权衡精.docx

上传人:b****5 文档编号:6213446 上传时间:2023-01-04 格式:DOCX 页数:9 大小:26.21KB
下载 相关 举报
软件开发工程师的面试应该考察哪些素质如何做权衡精.docx_第1页
第1页 / 共9页
软件开发工程师的面试应该考察哪些素质如何做权衡精.docx_第2页
第2页 / 共9页
软件开发工程师的面试应该考察哪些素质如何做权衡精.docx_第3页
第3页 / 共9页
软件开发工程师的面试应该考察哪些素质如何做权衡精.docx_第4页
第4页 / 共9页
软件开发工程师的面试应该考察哪些素质如何做权衡精.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

软件开发工程师的面试应该考察哪些素质如何做权衡精.docx

《软件开发工程师的面试应该考察哪些素质如何做权衡精.docx》由会员分享,可在线阅读,更多相关《软件开发工程师的面试应该考察哪些素质如何做权衡精.docx(9页珍藏版)》请在冰豆网上搜索。

软件开发工程师的面试应该考察哪些素质如何做权衡精.docx

软件开发工程师的面试应该考察哪些素质如何做权衡精

软件开发工程师的面试应该考察哪些素质,如何做权衡?

庄生的回答

首先介绍一下背景

行业:

我所在的行业IT很重要但并不是revenuecenter,属于烧钱部门,地位不能跟纯互联网公司或者游戏公司比

组:

我们组最近几年的方向都是招一条龙的程序员,以便减少沟通成本和方便问责。

这里的一条龙不但包括技术上写前后端和数据库的代码,也包括在公司内部和用户沟通拿需求,测试,发布部署前后的行政工作。

基本上出了问题推都推不掉。

个人:

我本人从来没有在国内工作过,所以经验上可能会有所偏差。

我一般来说都是第二面,第一面主管已经面过了,简历上的问题问的差不多了,所以我很少会问简历上的问题。

除非有匪夷所思的经历。

从最近几年招人的经验中得出的结论主要有以下几点。

按重要性排序如下:

1-态度

这是我最看重的特质,当然这个态度说的不是对我的态度,而是思考问题和解决问题的态度。

个人来说比较偏好的是对自己感兴趣的领域具备‘打破砂锅问到底’的精神,具备这样精神的人往往有一种完美主义,对于自己的代码有强烈的mentalattachment,会自己挤时间不断地fixbugs,增加unittests或者refactoring,长远来看对项目质量非常有好处,组里有这样的人非常省心。

(哎,我干嘛帮资本家去想这些)

这样的面试,我一般直接问candidate你最有自信的技术是什么?

然后顺着这个不断地深入挖掘。

通过“如果你来设计”这样的假设,来考察应聘者对自己自信的技术到底有何种程度的了解,到底有没有想过这些技术为什么会是这样的。

案例1,我对数据库很熟悉

那么“如果你来设计”的问题就会类似这样:

1,如果你来设计数据库,你会怎么管理文件的?

比如我insert了一行数据到employee表,具体在后台发生了什么事情?

会有什么样的写入操作?

有哪些东西会被更新

2,好,现在record已经在数据里面了。

我跑一句select*fromemployeewherelast_name='Smith'。

你觉得数据库具体做了哪些事情把这一条数据给返回的?

它是怎么从文件系统中把这一条记录给找出来的?

3,假设我的employee表里已经有一些数据了,这时候我加了一个新的column,会发生什么事情?

文件系统中需要做哪些改动?

4,假设我的employee表里已经有一些数据了,这时候加了一个index,又会发生什么事情?

要写入哪些文件,具备什么特性的数据结构?

5,好,现在已经有index了,那么同样的查询select*fromemployeewherelast_name='Smith'在执行的过程中会有什么区别?

看能不能具体展开解释

6,如果你来设计数据库,你会怎么实现join呢?

如果两个表都建了索引是怎么做的?

如果两个都没有呢?

如果一个表有索引?

7,等等等等。

案例2,我用Spring用得最熟

1,singleton到底有什么用?

我用staticmethod为什么不能做同样的事情?

什么情况下会用staticmethod更好一些?

2,dependencyinjection到底有什么用?

interface在这里的作用到底是什么?

3,好,这么看来,spring确实可能在某些情况下有点用,那么如果你来改善spring的话,你会改进哪些点呢?

4,能不能大致讲讲,你觉得autowire具体是怎么实现的?

实际使用中会有哪些问题呢?

5,constructorinjection和methodinjection的优劣比较?

什么情况下用哪一个?

6,spring在unittest中起到什么作用,哪些情况下可以不用spring,给一下具体的例子?

7,如果有一天Oracle想在语言层面支持DI,你会怎么设计syntax?

为什么?

8,等等等等。

注意:

这里主要考察的是思维能力,看看他有没有想过这些问题,而不要纠结于Sybase或者Spring是否真的是这么实现的。

我再重复一遍,不要纠结回答的准确性,关键是这个人的思路怎么样,是不是能自圆其说。

这一部分一般持续20分钟到30分钟,取决于candidate的素质和话题本身能不能聊出东西来。

可能因为我的这个面试方式比较少见,感觉许多candidate一开始会比较紧张。

这时候作为面试官需要不断地给于正面回馈,让他觉得自己还不错,以便放松下来。

当然,如果实在是太差的基本就直接“doyouhaveanyquestionsforus”了。

2-经验

这个经验不但包括过去公司里从事过哪些项目,也包括平时都做些什么。

因为我的行业关系,我感觉纯大公司流或者纯互联网公司流的都有缺憾。

前者过于保守死板沉闷,后者过于激进缺乏质量意识,都比较极端。

最理想的是在大公司工作一段时间,同时业余维护一个github项目之类的。

这种人一般既比较积极主动,又能理解并遵守历史遗留问题。

属于兼容并包的好队友。

这一块一般10分钟,取决于有没有东西聊。

3-算法

这个可能会引起争议,算法上只要不是太差就行,毕竟我们日常工作牵涉算法的部分不是特别多。

由于一般我们第三面会有别的同时做pairprogramming,所以我这边都是大概问一个简单的但是实际的问题。

举个例子,给你一列区间,如何把它合并起来?

defmerge(ranges:

List[Int,Int]:

List[(Int,Int]=?

?

?

伪代码写在纸上就行了。

就是看看基本的排序递归的使用。

具体排序算法也不是非得写出来。

这一块一般15到20分钟。

4-对新技术的热情

最近有关注什么新技术吗?

angularjs啊,好在哪儿呢?

akka啊,解释解释什么是SoftwareTransactionalMemory啊?

之类的。

因为很多人很喜欢聊这些,也算是给自己充充电。

可能是我个人经历的关系,对新技术的热情是一个必要条件,但并不单独构成一个加分项,我见过很多对新技术很有热情,完全只是因为好奇,想尝鲜的想法。

对于组和公司的利益却不怎么放在心上。

把组里的项目当成试验场,这样的人最后往往需要其他组员帮他擦屁股。

这一块基本就是闲聊,当是收尾了,5到10分钟吧。

vczh的回答你就这么想把,这个人进来了,要跟你一起做同一个项目。

你愿不愿意?

在我们这,愿意就给hire,不愿意就给nohire,然后经过了一整天的面试这个人就有了很多hire和nohire,到时候一看便知。

李运华的回答谢@忻尚魁的回答我这边招人的话普遍是如下

1.满足该岗位的技术能力(不扯细节代码,从一些技术实现方式上即可快速了解其程度)

2.喜欢编程(从自己做的非公司项目看)

3.可塑造(比如够年轻,可弥补技术能力问题)

4.交流能力好(说话听不清或者解释的东西让人很难理解,基本没戏)

5.有一定产品意识(能对产品提出质疑或从技术角度纠正产品的问题,而非像机器一样只干活)

我觉得技术方面不需要牵扯太深。

多年工作经验的话技术还是一般,是我的话就不会考虑的,不如去选一个刚毕业底子还不错的。

MiloYip的回答這個問題是和公司和工作性質相關的。

以我所在的部門而言,較偏向於技術研發多於純粹軟件開發,所以會比較看重基礎。

但由於國內一般比較不看重技術研發方面,而是重於產品製作,所以較難找到合適的有經驗的人材。

在這個情況下,通常比較希望慢慢培養基礎好的畢業生,讓他們養成良好的技術研究及軟件開發習慣,包括做實驗驗證想法、寫單元測試、寫各種文檔、嘗試做一些軟件設計、與客戶溝通分析需求等等。

這需要長時間的投入,不斷討論、檢查代碼文檔、給予建議等等。

當然,程序員總不會100%時間做高大上的事情,總要做一些較簡單、枯燥的工作,這也是一種訓練。

或許有時候可能用不著全部基礎,但有良好基礎的人往往有更好的潛力,在未來可以做更深入的事情。

侯天资的回答可能刚出校门的人或跨了领域的人,基础很好但没有职位所需的领域知识,需要从头学起。

也有一些人有多年工作经验,但基础一般,领域知识的掌握深度也一般,但可能可以解决公司或项目组面临的人手不够的迫切问题。

像这种情况,如何做权衡?

有闲钱就人才储备,没闲钱就项目优先,公司能够存活下去是第一位的,其次才是发展。

面试中,基础方面的考察,数学,数据结构与算法,写程序的功底,掌握到什么程度会认为是合适的人选?

再有,算法和数学题可能相对容易设计,但软件抽象的领域则不是三两句话就说得清的,如何在面试中考察一个人抽象的能力,和设计易于维护易于测试代码的能力?

有项目经验,以考察项目经验优先,从面试人员对其在项目中所做工作的描述就可以对其代码能力,业务熟悉程度以及人际沟通等各方面了解个七七八八。

再深入问一下做项目的时候遇到过什么问题,怎么解决的?

这时候侧重要了解的就是解决问题的能力,会包括数学,数据结构与算法的深入讨论。

没有项目经验,场景测试吧。

从一个已有项目中的实际问题聊起,看看面试人有何反应,以及能够提出怎样的解决方案。

一言概之,从实际项目出发,逐层深入,从架构到模块到技术难点,以开放式场景代替固定答案的算法与数学题,重点观察/考察的是思考的过程,而非结果。

不过这种方式对面试官的能力要求很高,不是所有的面试官都能以这种方式考察被面试对象的

有很多日常的dirtywork,以及很多业务逻辑性的代码,事实上并不需要太多数学以及算法方面的知识也能解决。

那么招人标准抬得很高,让超水平的人来解决这些问题,是否又有浪费之嫌?

真正高水平的人都是聪明的懒人。

像这样的dirtywork或者重复性劳动,本身就可以通过跑脚本或者流程优化的方式大大提高效率。

你会发现当你真正雇佣到一个超水平的人去做这种事情的时候,他的效率会比死脑筋做这些dirtywork的人高很多倍,然后这些dirtywork就被他们打理得不那么dirty了,再然后他们所采用的工作流程和脚本就可以推广到整个Team乃至部门使用,再再然后他们就被晋升了(或者跳槽)然后你又开始招聘新人补他们的坑。

成隽的回答1.有洁癖

各类元素的命名、包名字空间划分,代码自解释

这些素质能很快区分出“高-中低”两个层次。

2.对“为什么”感兴趣,热衷并善于动手解决“怎么干”

3.懂取舍,懂平衡

“趋势-性能-成本-维护”这些方面懂审时度势,趋利避害。

1是好员工,搞定多且平凡的琐事

2是能手,搞定难点

3是牛人,给个方向目标,带着1、2就能把事了了。

考察1,百行代码的基础逻辑试题足够。

考察2,面试官可无意曝露或伪造自身项目架构烂点,或表达含糊不清。

好奇心强爱刨根问底的应聘者会追问、提疑虑、给建议。

太傲的不屑的放弃。

考察3,暴露一堆烂尾,面试者能总结出失败点很好,给出整改方案更好,还能敏感准确预计改造点风险和技术/非技术阻力,有靠谱成本估算,收吧

国内IT偏项目,较少偏学术。

多数情况三分靠琢磨、三分靠经验,三分靠偏执,一分靠天赋,九十分看脸。

学历,忽略吧。

在一个错综复杂的利益环境里能理清然后解决一堆mess的,在任何环境都是强人。

所以挑这类人可能最简单的方式就是有针对性的给出一堆mess,然后看对方的应变、心态和思维缜密度。

TomZhu的回答手机作答,写一下要点。

首先我们确定,要招的是开发工程师,不是产品经理,不是项目经理,不是架构师,不是cto。

那么,招进来就要立刻产生直接的生产力。

以此为前提:

一面,主持者:

hr

1,候选者期望薪酬是多少,是否超预算。

2,从聊天中判断候选者的心理状况,筛除奇葩。

3,了解候选者前任工作状况,必要时会打电话给前任公司了解情况。

4,介绍公司情况。

二面,主持者:

项目带头人

1,了解候选者技术背景,过往的成就。

2,根据项目所需的技术,在候选者的技术背景范围之内,选择一个问题,现场作答。

3,根据项目所需的技术,但超出候选者的技术背景,选择一个问题,现场作答。

三面,主持者:

cto

1,了解候选者的技术偏好。

2,了解候选者的技术积累以及感悟。

3,介绍候选者预计要分配的项目和岗位。

SiLao的回答

首先说一下自己:

在读大四本科生,现为国际某软件公司实习生

在今年3月份开始,和其他大三的码农一样,参加了一些公司的实习生招聘,有的进入了最终面,拿了offer,也有的笔试就被刷了T_T,因此下面说的都是基于实习生面试来说

1.基础知识非常重要(基础知识包括数据结构和算法,计算机网络,操作系统,数据库,编程语言大多会问C/C++等。

基础知识贯穿整个笔试面试,建议面试前好好复习,平时也要牢固掌握。

2.项目经历。

感觉项目经历反应了你做过哪些事情,具有哪些能力,所以面试官都很喜欢问。

一方面是了解整个项目的规模以及难度,还有就是看你是不是真的有参与,是否知道其中的细节。

这些问题都了解后,会根据项目的细节问你当时是怎么实现的,或者有没有遇到困难怎么解决,或者有没有优化的方法等。

在这里还是考察个人的能力。

3.不同公司不同职位要求不同,建议根据相关职位准备相应的知识。

4.沟通能力和解决问题能力。

现场可能会有一些问题你不能马上回答出来,面试官会尝试引导你一步步地解决,给你提示,因此需要有一个好的沟通和解决问题的能力,在和面试官交流中,让他看到你的实际能力到了哪里。

以上是自己在面了那么多公司后的一些心得,希望能对你有帮助。

AF知识网用户的回答我面试技术人员主要看三点:

1基础及相关知识的掌握程度,就算没有掌握的很全,也应该有那种基础很重要的觉悟,并且一直在学习。

2对待技术的态度,是出于兴趣,还是为了那份薪水,区别是不同的。

3沟通、性格、责任感、团队精神,这几点很重要,将来会直接影响到你的工作。

技术相关问题可以直接了解,沟通和性格的问题,需要多了解一下他生活或者对待某些事情的看法去侧面了解,更多的是面试时候是看直觉。

举个例子,前段时间面试一个android工程师,面谈了10分钟,觉得不错,就让他做上机测试题,测试题其实很简单的,获取一个接口的数据,显示到listview上就可以了,但是这人突然表现的很生气,摔门而出,我不知道他为什么这样,也许是因为我给的题太简单了,但是不管怎么说,他的性格、态度、行为,已经出卖了他,假如让他到了团队工作,那他也是一个定时炸弹。

AF知识网用户的回答这要从公司的规模、现状以及你本人的需求来决定。

如果公司规模大,资金充沛。

那把两个人都招进来也无妨,一个作为技术人材储备,一个作为解决现有问题。

如果公司刚刚成立,资金有限,同时急需产品盈利,那肯定只能把那位有多年经验的留下来以解决当下之急。

上述两种为基本状况,招人对于面试者而言也有主观的部分。

假如公司规模小,但成立时间较长。

而你作为核心元老,为了公司的长远发展,同时也为了惜才,也可以把那位有潜力的新人招进来。

一方面你可以自已加班加点的工作来弥补新人的工作量。

另一方面,既然是有潜力,那么这位新人对于工作也必定能够快速上手。

而且你不用怀疑新人对于工作的热情,年青人可是干劲十足。

赵小熊的回答泻药。

做过一段时间的面试官,最后总结就是有眼缘,会说话。

有眼缘不解释。

会说话的表现在几个方面:

用术语回答问题。

不拐弯抹角。

不罗嗦。

说话的态度。

其他的都不是问题。

现在的软件开发,只要不是一个人自己做,有同事、有XX、有谷歌什么问题都可以解决,解决不了的是沟通还有你愿不愿意跟他合作这两个问题。

马骏的回答要能装一桶的知识来应对工作单位要的那一"盆",如果可以的话你应该准备的知识还有些满益出来了,那样的会给老板惊喜.

首先要准备好各种编程知识,知道怎么完成一件事情,具体怎么做.

而且还不能局限于这样,你应该还要知道作为软件来说最重要的是质量测试,和用户体检,自己处在技术位置,那么单位看重哪一点,目前还缺那些,能说的上来.

这样不但技术过关,还具备一定的管理能力,还具备眼界,这样的人到哪会找不上工作呢.看到别人不能所看,做别人不能所做.月光下的涂鸦的回答不同类型的公司需要的人才类型不一样,面试考察的标准也就不一样。

一般讲,创业型的公司或小公司需要一个人干多个人的事,需要的是通才,应该什么都用过会一点,能跟着公司的快速变化迅速转向的人;创业或小公司招两种人,一种是便宜的,另一种是有足够的经验能直接上手做事的。

大公司或成熟公司需要的是专才,需要的是产品相关的技术领域有足够造诣的人。

倒不是说平时做的事需要多么高的算法/编程技能。

只是公司人才积累多了,招一个低于平均标准的人进来很难和其他人竞争。

另外大公司每个人负责的范围相对窄但深入,没有一定技术深度也很难胜任。

这些年在中国和美国大大小小面试过几百号人,感觉我公司的招人主要围绕以下几方面:

1。

对技术的热情;

2。

在面试时间内独立思考,解决问题的能力;

3。

把头脑中的解决方案快速转换成代码的能力;

4。

对CS基本概念的理解,这主要在解决问题时从侧面考察;

5。

沟通能力;

一般毫不犹豫给Hire的是感觉很聪明,写程序又快又好的人;很犹豫的是那些写程序一般,但对技术很有热情,且年轻的人;很确定给NoHire是别的不管怎样但最后写不出程序的人;建议转PM或测试的是那些别的很一般,但感觉对技术有热情且沟通能力很好的人。

海涛的回答只说其它考察之外的一个特别方法:

设身处地

请对方假设他自己在面试别人,会出一个什么样的面试题,并附加自认为较佳的答案以及为什么。

范围可以根据你自己公司、产品、项目的特点而增加约束条件,以免针对性不强而浪费

根据他的选题和答案,可以了解他对约束条件之下的可选范围内的侧重点(知识面)、分析方法(业务+逻辑)、判断选择(喜好、倾向性)王敏慎的回答这么个性化的问题,作为旁观者给你的意见仅供参考:

基础好,有潜力VS技术一般,经验丰富:

作为职位提供方,你肯定对这个/些职位需要哪些能力才能胜任很了然。

而能够满足你基本需求的情况下,要经验还是要潜力需要看你的用人需求是不是很迫切啦。

如果不是很着急,那我建议你找一个好感度更高的、沟通能力更强的、更主动的那个。

毕竟技术再强一个人也解决不了所有问题。

什么样的基本功才够用:

基本功当然是越扎实越好啦,遇到极端点的情况就能体现出我们苦练这么多年基本功的用处了。

当然越扎实也就越贵,所以酌情考虑性价比吧;如果你们有着自己的编码规范的话,那么维护性好的代码其实也没那么难写;至于抽象能力这种没法在短短几轮面试中体现的能力,请见仁见智吧……

其实最好的办法还是提供足够有吸引力的环境/待遇,你肯定能找到基础好、能力强、经验丰富的工程师的。

谢丹丹的回答首先我提个问题,招聘官希望找到什么样的人?

假如新员工不是期望的那样,该怎么应对?

是否有能里应对?

考察的素质需要考虑到公司能提供给员工的职位变动灵活性,因为当你发现某个员工并不适合其在的职位,能否提供其他职位更加充分利用资源?

灵活度大的公司,考察的技术基础和兴趣比重大些;

而灵活性小的公司,考察的方面则需要定制化。

根据具体公司来情况,还要看招聘的职位在公司中是处于什么位置,特别是那些部分或者小组成分不容易流动的公司中,进入什么定位基本上就处于那个定位了。

因为没有足够的空间来调整,招聘到不合适的工程师代价会很大。

贺路的回答蟹約。

技术上可行,聊天上实在。

杨杰的回答(知识+能力)*态度。

记住,知识和技能只是加法关系,真正决定的是态度。

能力强知识牢固,只能决定他的起点比别人高一些,真正重视的是态度。

一个好的态度你能愿意教会他很多。

你招来的是一个工程师,不是给你洗两天碗就走人的大妈,所以不要太重视知识,不会的可以培训嘛。

当然,这些适用于应届生或者刚工作一两年的人AstralRoad的回答有人邀请是很奇怪的事情嘛。

学习别人:

谢@邀请

我这看起来和轮子大说的差不多,作为非管理人员偶尔面过几次别人,主要关注点在于,聊天聊起来是否顺畅,三观接近,行业八卦知晓,聊聊怎么黑语言,黑平台,黑一个区要500台服务器什么服务端,聊聊以前做过的东西,最多就是找个目前项目里一些地方提出来看看有什么看法。

因为低端翻译工作,也就不要做那些奇怪的题目什么的,然后问下这个加班很多还没加班工资大丈夫?

我这里薪水低,没前途什么的,就没楼主想的那么多啦。

领域知识方面的,这个无解,愿意花时间培养就是了,不愿意就去挖别人家的,一般不至于要养好多个月才能用。

至于领域知识和技术能力的选择取舍问题,勉强可以说这两点并不相干吧,或者是看实际项目侧重点。

如果人手真那么不够,又立即招不到,再不好也只能捏着鼻子认了呗。

算法什么的,没什么要求的话,常见算法说得出差不多情况;有要求就看具体公司项目了。

再考察一些以前项目代码的组织结构,测试部署相关的东西。

至于脏活嘛,总是得干的。

在可控的交流成本下可以分给小朋友啦,阿三啦,策划啦,经理啦,美术啦,闲的蛋疼的队友啦。

但是一般还是自己搞定自己负责范围内的好。

有些情况,有些脏活需要工具,需要良好的支持,速度还是很快的,刚好就当休息了。

招人要求基本都大大超过填简单逻辑的程度的主要问题是,怎么把需要做的东西拆成只要高手完成的部分,和只要无脑填逻辑的部分。

找队友还是很欢乐的事情啦。

============================================

500台服务器什么的那谁千万别看到。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1