软件开发工程师面试应该考察哪些素养如何做衡量Word格式文档下载.docx
《软件开发工程师面试应该考察哪些素养如何做衡量Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《软件开发工程师面试应该考察哪些素养如何做衡量Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
有哪些东西会被更新
2,好,此刻record已经在数据里面了。
我跑一句select*fromemployeewherelast_name='
Smith'
。
你感觉数据库具体做了哪些情形把这一条数据给返回的?
它是怎么从文件系统中把这一条记录给找出来的?
3,假设我的employee内外已经有一些数据了,这时我加了一个新的column,会发生什么情形?
文件系统中需要做哪些改动?
4,假设我的employee内外已经有一些数据了,这时加了一个index,又会发生什么情形?
要写入哪些文件,具有什么特性的数据结构?
5,好,此刻已经有index了,那么一样的查询select*fromemployeewherelast_name='
在执行的进程中会有什么区别?
看能不能具体展开说明
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是牛人,给个方向目标,带着一、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台效劳器什么的那谁万万别看到。