只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 软件开发 >  软件开发工程师的面试应该考察哪些素质,如何做权衡?


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

发布时间:2019-05-18 15:12:17  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
你就这么想把,这个人进来了,要跟你一起做同一个项目。你愿不愿意?在我们这,愿意就给hire,不愿意就给nohire,然后经过了一整天的面试这个人就有了很多hire和nohire,到时候一看便知。
软件开发工程师的面试应该考察哪些素质,如何做权衡?你就这么想把,这个人进来了,要跟你一起做同一个项目。你愿不愿意?在我们这,愿意就给hire,不愿意就给nohire,然后经过了一整天的面试这个人就有了很多hire和nohire,到时候一看便知。這個問題是和公司和工作性質相關的。

以我所在的部門而言,較偏向於技術研發多於純粹軟件開發,所以會比較看重基礎。但由於國內一般比較不看重技術研發方面,而是重於產品製作,所以較難找到合適的有經驗的人材。在這個情況下,通常比較希望慢慢培養基礎好的畢業生,讓他們養成良好的技術研究及軟件開發習慣,包括做實驗驗證想法、寫單元測試、寫各種文檔、嘗試做一些軟件設計、與客戶溝通分析需求等等。這需要長時間的投入,不斷討論、檢查代碼文檔、給予建議等等。

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

或許有時候可能用不著全部基礎,但有良好基礎的人往往有更好的潛力,在未來可以做更深入的事情。我这边招人的话普遍是如下
1.满足该岗位的技术能力(不扯细节代码,从一些技术实现方式上即可快速了解其程度)
2.喜欢编程(从自己做的非公司项目看)
3.可塑造(比如够年轻,可弥补技术能力问题)
4.交流能力好(说话听不清或者解释的东西让人很难理解,基本没戏)
5.有一定产品意识(能对产品提出质疑或从技术角度纠正产品的问题,而非像机器一样只干活)

我觉得技术方面不需要牵扯太深。多年工作经验的话技术还是一般,是我的话就不会考虑的,不如去选一个刚毕业底子还不错的。谢@David Chang 邀请 :)

我担任管理职位时间也不长,到现在为止大约面试了40人左右(包括校招),你的这些问题我也曾经遇到过,也自己思考和实践过,因此以下回复谈不上专业和权威,仅供参考。

我理解和提炼一下你的问题,你的第一个问题应该是:招人的原则是什么
例如:我是招一个技术高手呢,还是招一个正好精通目前团队负责的业务人员呢,还是招一个毕业生呢?
之所以有这个问题,其实原因就在于:没有哪个选择是完美的!
技术高手看起来很好,但如果业务不熟悉,需要花费大量时间去慢慢培养,而且你还会担心高手来了后技术没有用武之地,是不是会不稳定;
精通业务的人能够很快上手,但如果业务稍微变化,或者遇到技术难题,团队又歇菜了;
毕业生有冲劲、有潜力、便宜,但技术、业务上要投入较多人力和时间培养;

所以,单纯的关注究竟招哪个类别的人员时好时坏其实没有很大意义,招聘的首要原则是:按需招聘
你的团队经常遇到技术难题要攻关,或者需要较高的技术水平才能完成工作,那肯定要招技术水平高的人;
你的团队主要在于业务开发,没有很大技术要求;或者已经有一两个技术高手了,主要是业务开发人手不足,那么就招聘精通业务的人;
你的团队目前人员搭配合理,但考虑到后面可能会扩展,或者有人员可能不稳定,那么就招有潜力的毕业生(或毕业不久)的来培养。

对于一个团队来说,最好也是各种人才搭配,而不能一味追求技术高,要是一个团队全是技术高手,除非是研究型的团队,否则真的是很浪费和很难管理的。

我理解你的第二个问题是:如何面试才能识别出你要的人才
明确第一个问题的答案后,回答你的第二个问题就方便多了,其实还是一样的指导思想:按需面试
你的招聘职位需要什么样的技能和素质,那就按照需要来面试。
如果你都不清楚你的职位需要的技能和素质,那么面试的效果肯定不会太好,要么招聘了不合适的人,要么筛掉了合适的人。

以你举的“算法和数据结构”的例子来说吧,在面试之前,你可以问自己几个问题:你们团队是研究算法的么?你们要自己实现算法么?你们要改进算法么?
如果答案是Yes,那么你就设计好面试题;如果答案是No,那就不要浪费时间了。

我理解你的第三个问题应该是一些具体的面试技巧,特别是对于一些比较抽象的问题,例如分析和设计。
我分享我个人的一个经验:不要拿书上的东西来面试这些能力,而采用“情景面试”的方法。
“情景面试”就是由你设定一个业务场景或者问题背景,然后由面试者来回答解决方案,或者说你可以和面试者一起来探讨解决方案。在这个过程中,你可以感觉到面试者的分析能力、设计能力、知识宽度和广度、交流理解能力、应变能力。

举个简单例子:假设你要面试一个Web后台开发高级工程师,你可以给这样一个题目:“假设要你设计一个日PV100万的Web网站,你会如何做”,如果面试者回答还OK的话,你可以继续问“如果扩展到1000万呢,方案该如何演进”。。。。。。。。

当然,每个行业的“情景”设计是不一样的,最好的情景就是来源于你当前负责的业务,但要适当抽象和提炼,不然和业务太强相关了,如果面试者没有行业背景,可能回答很差。

最后稍微吐槽一下在技术面试中面试算法,如果是针对毕业生或者刚毕业不久,这个面试倒还有点作用,如果是面向有3年以上的工作经验的人,还以这个方法来面试的话,是没有任何效果的。
首先,很少有面试者自己精通算法,所以我们会看到大部分面试官面试所谓的算法,都是面试最简单的那几个,你要真牛逼,自己写个B-tree算法看看;
其次,算法和数据结构这几个东东,稍微特训一下,基本上就可以背住了,完全达不到区分人员的目的;
第三,绝大部分人工作中不会自己去写算法,真正实用的算法,和大学课本上的那几个原理性质的算法,有很大的区别
可能刚出校门的人或跨了领域的人,基础很好但没有职位所需的领域知识,需要从头学起。也有一些人有多年工作经验,但基础一般,领域知识的掌握深度也一般,但可能可以解决公司或项目组面临的人手不够的迫切问题。像这种情况,如何做权衡?
有闲钱就人才储备,没闲钱就项目优先,公司能够存活下去是第一位的,其次才是发展。

面试中,基础方面的考察,数学,数据结构与算法,写程序的功底,掌握到什么程度会认为是合适的人选?
再有,算法和数学题可能相对容易设计,但软件抽象的领域则不是三两句话就说得清的,如何在面试中考察一个人抽象的能力,和设计易于维护易于测试代码的能力?
有项目经验,以考察项目经验优先,从面试人员对其在项目中所做工作的描述就可以对其代码能力,业务熟悉程度以及人际沟通等各方面了解个七七八八。再深入问一下做项目的时候遇到过什么问题,怎么解决的?这时候侧重要了解的就是解决问题的能力,会包括数学,数据结构与算法的深入讨论。

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

一言概之,从实际项目出发,逐层深入,从架构到模块到技术难点,以开放式场景代替固定答案的算法与数学题,重点观察/考察的是思考的过程,而非结果。不过这种方式对面试官的能力要求很高,不是所有的面试官都能以这种方式考察被面试对象的

有很多日常的dirty work,以及很多业务逻辑性的代码,事实上并不需要太多数学以及算法方面的知识也能解决。那么招人标准抬得很高,让超水平的人来解决这些问题,是否又有浪费之嫌?

真正高水平的人都是聪明的懒人。像这样的dirty work或者重复性劳动,本身就可以通过跑脚本或者流程优化的方式大大提高效率。你会发现当你真正雇佣到一个超水平的人去做这种事情的时候,他的效率会比死脑筋做这些dirty work的人高很多倍,然后这些dirty work就被他们打理得不那么dirty了,再然后他们所采用的工作流程和脚本就可以推广到整个Team乃至部门使用,再再然后他们就被晋升了(或者跳槽)然后你又开始招聘新人补他们的坑。。。谢邀。手机作答,写一下要点。

首先我们确定,要招的是开发工程师,不是产品经理,不是项目经理,不是架构师,不是cto。那么,招进来就要立刻产生直接的生产力。以此为前提:

一面,主持者:hr
1,候选者期望薪酬是多少,是否超预算。
2,从聊天中判断候选者的心理状况,筛除奇葩。
3,了解候选者前任工作状况,必要时会打电话给前任公司了解情况。
4,介绍公司情况。

二面,主持者:项目带头人
1,了解候选者技术背景,过往的成就。
2,根据项目所需的技术,在候选者的技术背景范围之内,选择一个问题,现场作答。
3,根据项目所需的技术,但超出候选者的技术背景,选择一个问题,现场作答。

三面,主持者:cto
1,了解候选者的技术偏好。
2,了解候选者的技术积累以及感悟。
3,介绍候选者预计要分配的项目和岗位。谢邀。

首先介绍一下背景
行业:我所在的行业IT很重要但并不是revenue center,属于烧钱部门,地位不能跟纯互联网公司或者游戏公司比
:我们组最近几年的方向都是招一条龙的程序员,以便减少沟通成本和方便问责。这里的一条龙不但包括技术上写前后端和数据库的代码,也包括在公司内部和用户沟通拿需求,测试,发布部署前后的行政工作。基本上出了问题推都推不掉。
个人:我本人从来没有在国内工作过,所以经验上可能会有所偏差。我一般来说都是第二面,第一面主管已经面过了,简历上的问题问的差不多了,所以我很少会问简历上的问题。除非有匪夷所思的经历。

从最近几年招人的经验中得出的结论主要有以下几点。按重要性排序如下:

1 - 态度
这是我最看重的特质,当然这个态度说的不是对我的态度,而是思考问题和解决问题的态度。
个人来说比较偏好的是对自己感兴趣的领域具备‘打破砂锅问到底’的精神,具备这样精神的人往往有一种完美主义,对于自己的代码有强烈的mental attachment,会自己挤时间不断地fix bugs,增加unit tests或者refactoring,长远来看对项目质量非常有好处,组里有这样的人非常省心。(哎,我干嘛帮资本家去想这些)

这样的面试,我一般直接问candidate你最有自信的技术是什么?然后顺着这个不断地深入挖掘。通过“如果你来设计”这样的假设,来考察应聘者对自己自信的技术到底有何种程度的了解,到底有没有想过这些技术为什么会是这样的。

案例1,我对数据库很熟悉
那么“如果你来设计”的问题就会类似这样:
1,如果你来设计数据库,你会怎么管理文件的? 比如我insert了一行数据到employee表,具体在后台发生了什么事情? 会有什么样的写入操作?有哪些东西会被更新
2,好,现在record已经在数据里面了。我跑一句 select * from employee where last_name = 'Smith'。你觉得数据库具体做了哪些事情把这一条数据给返回的? 它是怎么从文件系统中把这一条记录给找出来的?
3,假设我的employee表里已经有一些数据了,这时候我加了一个新的column,会发生什么事情? 文件系统中需要做哪些改动?
4,假设我的employee表里已经有一些数据了,这时候加了一个index,又会发生什么事情? 要写入哪些文件,具备什么特性的数据结构?
5,好,现在已经有index了,那么同样的查询 select * from employee where last_name = 'Smith' 在执行的过程中会有什么区别?看能不能具体展开解释
6,如果你来设计数据库,你会怎么实现join呢?如果两个表都建了索引是怎么做的?如果两个都没有呢?如果一个表有索引?
7, 等等等等。。。。

案例2,我用Spring用得最熟
1,singleton到底有什么用?我用static method为什么不能做同样的事情? 什么情况下会用static method更好一些?
2,dependency injection到底有什么用? interface在这里的作用到底是什么?
3,好,这么看来,spring确实可能在某些情况下有点用,那么如果你来改善spring的话,你会改进哪些点呢?
4,能不能大致讲讲,你觉得autowire具体是怎么实现的?实际使用中会有哪些问题呢?
5,constructor injection和method injection的优劣比较? 什么情况下用哪一个?
6,spring在unit test中起到什么作用,哪些情况下可以不用spring,给一下具体的例子?
7,如果有一天Oracle想在语言层面支持DI,你会怎么设计syntax?为什么?
8,等等等等。。。。

注意:这里主要考察的是思维能力,看看他有没有想过这些问题,而不要纠结于Sybase或者Spring是否真的是这么实现的。我再重复一遍,不要纠结回答的准确性,关键是这个人的思路怎么样,是不是能自圆其说。

这一部分一般持续20分钟到30分钟,取决于candidate的素质和话题本身能不能聊出东西来。可能因为我的这个面试方式比较少见,感觉许多candidate一开始会比较紧张。这时候作为面试官需要不断地给于正面回馈,让他觉得自己还不错,以便放松下来。当然,如果实在是太差的基本就直接“do you have any questions for us”了。

2 - 经验
这个经验不但包括过去公司里从事过哪些项目,也包括平时都做些什么。因为我的行业关系,我感觉纯大公司流或者纯互联网公司流的都有缺憾。前者过于保守死板沉闷,后者过于激进缺乏质量意识,都比较极端。最理想的是在大公司工作一段时间,同时业余维护一个github项目之类的。这种人一般既比较积极主动,又能理解并遵守历史遗留问题。属于兼容并包的好队友。

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

3 - 算法
这个可能会引起争议,算法上只要不是太差就行,毕竟我们日常工作牵涉算法的部分不是特别多。 由于一般我们第三面会有别的同时做pair programming,所以我这边都是大概问一个简单的但是实际的问题。举个例子,给你一列区间,如何把它合并起来?
def merge(ranges: List[Int, Int]): List[(Int, Int)] = ???

伪代码写在纸上就行了。就是看看基本的排序递归的使用。具体排序算法也不是非得写出来。

这一块一般15到20分钟。

4 - 对新技术的热情
最近有关注什么新技术吗?angularjs啊,好在哪儿呢?akka啊,解释解释什么是Software Transactional Memory啊?之类的。因为很多人很喜欢聊这些,也算是给自己充充电。

可能是我个人经历的关系,对新技术的热情是一个必要条件,但并不单独构成一个加分项,我见过很多对新技术很有热情,完全只是因为好奇,想尝鲜的想法。对于组和公司的利益却不怎么放在心上。把组里的项目当成试验场,这样的人最后往往需要其他组员帮他擦屁股。

这一块基本就是闲聊,当是收尾了,5到10分钟吧。我面试技术人员主要看三点:

1 基础及相关知识的掌握程度,就算没有掌握的很全,也应该有那种基础很重要的觉悟,并且一直在学习。
2 对待技术的态度, 是出于兴趣,还是为了那份薪水,区别是不同的。
3 沟通、性格、责任感、团队精神, 这几点很重要,将来会直接影响到你的工作。。

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

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

谢邀。泻药。
做过一段时间的面试官,最后总结就是有眼缘,会说话。
有眼缘不解释。
会说话的表现在几个方面:
  1. 用术语回答问题。
  2. 不拐弯抹角。
  3. 不罗嗦。
  4. 说话的态度。
其他的都不是问题。
现在的软件开发,只要不是一个人自己做,有同事、有百度、有谷歌什么问题都可以解决,解决不了的是沟通还有你愿不愿意跟他合作这两个问题。1.有洁癖
各类元素的命名、包名字空间划分,代码自解释
这些素质能很快区分出“高-中低”两个层次。

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

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

1是好员工,搞定多且平凡的琐事
2是能手,搞定难点
3是牛人,给个方向目标,带着1、2就能把事了了。

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

考察2,面试官可无意曝露或伪造自身项目架构烂点,或表达含糊不清。
好奇心强爱刨根问底的应聘者会追问、提疑虑、给建议。
太傲的不屑的放弃。

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

国内IT偏项目,较少偏学术。
多数情况三分靠琢磨、三分靠经验,三分靠偏执,一分靠天赋,九十分看脸。
学历,忽略吧。。。

在一个错综复杂的利益环境里能理清然后解决一堆mess的,在任何环境都是强人。
所以挑这类人可能最简单的方式就是有针对性的给出一堆mess,然后看对方的应变、心态和思维缜密度。你想太多了,面试怎么可能准确的反映出一个人的能力与潜力,不要想着在面试时把所谓的软件工程师应有的技能摸清,面试软件工程师抛去所有繁杂的名头,如果要考察其编程能力,那就考察数据结构,算法也是基于数据结构,但不要为了算法而算法,那东西实际工作中一般的需求很少用,属于启发思路的,真正解决问题的算法有专门的研究人员在搞,比如人脸语音图像识别等。无法量化的抽象什么能力就别扯了,那理论不懂编程的也能说半天。至于业务开发上如果没有挑战性会不会浪费人才的问题就是多虑了,因为如果你的业务逻辑转化为代码没有挑战性的话,这种人你招不到,他们不会愿意长期的做这种没挑战的工作。而愿意长期从事这种没挑战的业务逻辑代码实现的其本身的技术水平又是有很大提升空间的(也就是水平不行)。所以应届生基础好就行了,进入细分领域会很快累积经验。好吧,最后说关键的,首先招聘者要对能胜任岗位需求的基本技能了如指掌,这只是第一步,保证找的人至少能干活,但是如果只找会干活的人,那这种人多了去了,这种只招会干活的公司也多了去了,因为就事论事的公司发展不长远的。所以有想法的公司会遇见有想法的HR与面试官,在面其岗位能力时,会考察其解决问题的思路,对待工作的态度,说话的语气,眼神,然后决定那是不是一个对的人,可以长期合作的人,成为朋友的人谢邀

首先说一下自己:
在读大四本科生,现为国际某软件公司实习生
在今年3月份开始,和其他大三的码农一样,参加了一些公司的实习生招聘,有的进入了最终面,拿了offer,也有的笔试就被刷了T_T,因此下面说的都是基于实习生面试来说

1. 基础知识非常重要(基础知识包括数据结构和算法,计算机网络,操作系统,数据库,编程语言大多会问C/C++ 等)。基础知识贯穿整个笔试面试,建议面试前好好复习,平时也要牢固掌握。
2. 项目经历。感觉项目经历反应了你做过哪些事情,具有哪些能力,所以面试官都很喜欢问。一方面是了解整个项目的规模以及难度,还有就是看你是不是真的有参与,是否知道其中的细节。这些问题都了解后,会根据项目的细节问你当时是怎么实现的,或者有没有遇到困难怎么解决,或者有没有优化的方法等。在这里还是考察个人的能力。
3. 不同公司不同职位要求不同,建议根据相关职位准备相应的知识。
4. 沟通能力和解决问题能力。现场可能会有一些问题你不能马上回答出来,面试官会尝试引导你一步步地解决,给你提示,因此需要有一个好的沟通和解决问题的能力,在和面试官交流中,让他看到你的实际能力到了哪里。


以上是自己在面了那么多公司后的一些心得,希望能对你有帮助。1. 数据结构与算法: 二分搜索/快速排序(基本); 二叉树操作/深度广度遍历算法(进阶); 海量数据处理(选拔);
2. SQL 从实际工作中遇到的问题出题;
3. 编写一个小程序, 观察其代码风格、文档、注释等习惯;
4. 谈论所感兴趣的话题, 观察其兴趣点及个性;
5. 谈论所做过的项目或事情,观察其解决问题的能力和方式;
6. 谈论实际开发、测试以及团队协作, 在项目产品开发中的作用;
7. 谈论一个即将进行的项目或系统, 观察他如何进行设计和思考;
这都是很实际而可靠的方法来观察应聘者(不要急于否定什么), 了解是第一位的。 我觉得最重要的是气氛要放松,让面试者能尽情展示自己的优点。1. 基础知识掌握程度,各种基本算法、语言基础、操作系统基础等等要非常扎实;
2. 代码风格良好,逻辑清晰;
3. 发展潜力大,热爱软件开发,对自己使用过的技术能深入掌握原理;
4. 有计划的阅读技术书籍,不满足于现在项目和技术;
5. 参与一些开源项目;
6. 数学英语功底比较好;
7. 性格和人品;
8. 良好的沟通能力;
9. 和项目契合程度高;
大概就是从知识、能力、潜力、沟通能力、人品等角度考察谢邀,上面@庄生 已经回答的很好了,大多数公司基本都是考察态度、经验、算法、热情。我在创业公司和大公司都有过工作经验,也面试了很多的人,创业公司和大公司在对人才的要求还是有一些区别,这里再补充几句吧。

创业型公司
创业型公司,特别是早期的创业公司,对学习能力是特别注重的。因为这类公司在开始的时候不很稳定,能给与的薪资也不会很高,招聘大牛有一定的困难,所以很多都倾向招聘毕业生或者工作经验不多的人才。这类人才最大的缺点是经验不足,而创业公司往往员工较少,开发任务较重,各种跨度较大的技术问题都需要你来解决,因此学习能力在这个阶段是非常重要的,需要逢石开路遇河搭桥的开拓精神。面试时,学习能力是一种比较虚的东西,但要考察还是有办法的,面试官问的最多的是:
  • 你在项目开发过程中有什么是最印象深刻的?
  • 在项目开发中你遇到的最难的事情是什么,怎么解决的?
  • 面对一个从未涉及过的技术问题,你会怎么去解决?
这样的问题,我面试过的很多人中答得好的并不多,大多数人说没有什么困难或者没有印象深刻的,让人感觉资历一般或没有钻研过技术难题。虽然大多数创业公司不一定会有高难度的问题需要解决,但是这却是考察学习能力的一种方式。这时候,你需要从你的记忆深处,调出最高度的技术问题,说清楚解决的思路,以及在解决的过程中你发现了哪些新的知识点,为什么这么做?

大公司
大公司人才济济,工作流程规范,技术领域细分,对人才的要求更多是有技术深度.在同学app上看到一个帖子,有位同事的朋友在创业公司做CTO,凭一己之力开发了两款app, 客户端、前端、后台、数据库均有涉及,这位同事推荐他的朋友来腾讯面试,在第一轮就被刷下去了,因此他非常不解,发帖质疑。其实我的经历和上面提到的这位CTO经历类似,都是从创业公司转大公司。确实在创业公司很多有能力的人都是全栈工程师,这类人才在创业公司的前期阶段都是求之而不得的。而大公司的产品动不动就是几个亿的用户量,每个细节都要求做到最好,稳定、高性能的产品质量对技术深度提出了更高的要求,比如iOS开发,多线程同步、界面切换、文件存储、CoreAnimation动画、GPU硬件加速等等,再加上各种奇葩的疑难crash和性能问题,每个点都是一个无底洞,深入下去需要研究的技术问题非常多。如果希望进大公司,平时注意下技术知识的积累,对一些感兴趣的点做一些深入研究。

技术是个无止境的东西,能够对一两个点有深入研究就已经非常不错了。在腾讯做技术面试时,如果是毕业不久,我一般会重点考察计算机基础方面的能力,比如算法、数据结构和常见的一些软件术语,对有工作经验的,往往会针对项目经历来提问,对提到的知识点都会不断深入地往下问,如果能有几个点能达到一定的深度,通过的可能性就非常大了。我一般就考察,把你做的最熟悉的项目讲一遍,然后从网络到存储把各种关键知识点揉进去问。问完什么水平一清二楚。谢邀。

我首先会先介绍一下公司以及职位的情况,这是对面试者最基本的尊重,不过一般HR会跟面试者有这方面的沟通,我也就尽量提一下说因为HR讲过了,所以我就不问了。

然后,我就问对方寻找工作的主要意图是什么:想要学习,赚经验值?还是怀才不遇,想要寻找发挥空间?还是纯粹『想找份工作』?等等。

这部分我也会尽量保持跟面试者轻松的『聊天』,比方说刻意讲一些梗,看对方能否会心一笑。这里主要是感受下彼此彼此『气质』是否相近。

然后,我会尽可能全面的去了解对方的能力,应用知识、基础理论、算法、心理素质等等等,我会习惯在各个方面都问到对方回答不了,呈现出极限为止。因为需要问很多,面试节奏会非常快,只要某一方面我觉得了解足够了,我就会立刻换一个领域继续问。

这样的面试法,有被我面得生气的,也有被我面哭的,也有被我面得愿意降薪加入的。

整个面试过程我会控制在45分钟左右,最后,我一定会留出来5~10分钟给面试者提问。

这实际上也是一个非常重要的问题,好的候选人,或者说对我们公司感兴趣的人,或者说对自己职业发展有想法的人,一定会有很多问题的。

最后,我司在招聘,坐标上海,欢迎投简历:ezbuy招聘-前海煦逸信息技术(深圳)有限公司招聘@David Chang 谢邀

平时上来有点少,前面几位前辈已经说得很好了,我也发表一下自己的看法吧。

总体来说,面试和招人是直接相关的~所以这个直接会关系到,你把小伙或者妹子招进来后,能否提升你们团队的效率以及为公司获取更多的盈利。

以前我也看过面试官給我自己的评价,或者其它面试官会怎么评价一个面试者。其实面试需要招的人很大程度上和公司规模、公司文化较耦合。对于个人成长上,大致阶段可以分三种(至少目前以我的工龄来说,只能这样分了,目前 2 年社会经验)
  1. 刚出校门
  2. 出校门有一段时间
  3. 已经能够独挡一面,负责一个项目属于自己职责的内容
  4. (这块我还没涉及,但是肯定会有,就是自己的职责搞定的同时,协助多部门的合作问题)
分开来说一下吧:
  1. 刚出校门
对于这块的心情我应该更清楚,因为毕业不久。刚出校门的时候会有两种情况:
(1)在学校正常学习,还没有做过实际项目
(2)在学校完成正常学业的情况下,已经有若干实际项目经验
对于第一类同学(不分学校),应该首先解决的是能够面试的问题,这里假设都通过笔试或者内推到达面试阶段。
这类同学的面试肯定注重的是基础和对自己平时喜欢技术的理解,基础这个是大家都会提的,但是又是很难做的事情,为什么呢?因为不好面,如果是学霸,那么面试经取得很多。那么这个时候对于基础的考察能够做一个变形,也就是考活学活用的问题。
对于基础过关的情况下,还需要考察是否符合一个成为技术人的情况,就是是否有对技术的追求问题,比如一个热爱技术的人会有很好的自主性,会让他具有更多的潜在价值。

对于已经有项目经验的同学,根本上还是应届生,还是需要考察基础,这块必须的。然后肯定会有更多的期望,就是考察项目。现在就可以回到[软件抽象]问题的考察上了,因为如果没有业务场景和技术场景的支持,谈软件方面是很虚的东西(我就是软件工程毕业)。

对于[软件抽象]的考察上,我是 Java 体系的...所以拿 Java 来说吧,对于这部分来说,Java 其实有很多设计模式,单一职责、享元模式等等。这些说起来抽象,但是对于长期来看,还是很有用的,不论面试什么职位,需要的是給一个业务场景让他去分析,就选择他项目中的场景来说,对于业务的分析能力和业务映射到代码重构上的能力,至于分析出来的和力度是否合理这个需要面试官来判断。

2. 出校门有一段时间
这个就属于社招了,对于社招肯定有不一样的要求。基础,是肯定需要具备的,但是肯定会看更多方面。比如我现在就是前端职位,对于数学的考察面试也有,但是更多偏向于场景。比如月影姐姐之前的分享,也没有说用到很多高数的导数和积分求解等东西,用到的更多是经典数学模型,比如:三角函数、向量的解决方案、圆与椭圆的函数解析等等吧,这些都是高中就可以搞定的,能否用于现在技术就看你是否对这些数学模式有了自己的理解。这部分在面试的时候,就需要给一个场景去让面试者去选择一个更优模型去求解,选的场景复杂度可能直接会关联到需要的数学模型复杂度。这就能够很好考察到面试者对于用数学思维去解决现实场景的能力,也不需要说是让你像求解一个高数泰勒公式这种。。。

3. 已经能够独挡一面,负责一个项目属于自己职责的内容
要招这部分的人,除了技术方面就可能会考察一些更多的东西了,我也有一些欠缺的能力,只说一下自己的看法。
(1)对于项目需求本身的理解,这是技术之外的,对于一个做软件的人来说,项目的需求分析的重要程度是第一的,如果这块不能考虑好,直接就是一个无用项目或者最后会死掉的项目,所以才会有需求评估、风险评估这些东西;面试的时候就需要考察更好的沟通能力,对业务的理解能力,这块很好考察的,对于业务深入与否,表达就可以见分晓。
(2)对项目进度的把控,这部分我自己也做的不太好,这个和经验会直接挂钩,比如给你一个项目,对项目需求点的划分=>功能点的划分=>落实每个功能点需要的工时/人。没经验肯定是有考虑不周到的地方。那么在面试的时候,这部分就需要看面试者自己的说法了。。。这个水分多。
(3)砍掉不合理需求,或者目前并不需要的需求,把控最后项目正常上线。

好像写太多了,不过那些是属于理论方面的了,来点实际的。
  • 首先要与面试官有眼缘,以前我有个朋友能力不错,去面试技术负责人,就因为和对方互相看不惯,导致最后面试失败
  • 技术与公司的匹配度,比如你精通 C ,去了一家 Java 的公司,基本上成本就上升了
  • 认同公司文化,符合公司文化,这个会影响到一个人的心情和长久度
  • 是否热爱自己所面试的职位,这方面会从谈吐中得知
  • 最后还有就是才开的公司肯定就是向前冲,先能生存,所以就先更注重招进来的人是否能快速让项目活下来,至于个人成长比例不会太大。大公司有闲钱慢慢等你起来,所以面试就会有这部分的比例,对于要招能干活的,直接看技术能力和沟通能力。
  • 剩下说一下代码质量和代码测试的问题,公司开始盈利了,走在稳定的道路上,那么会关注这块了,这块直接 show code,Github 这类就比较好考察撒~这块面试可以放筛选一面后,因为每个都去看下他代码太累。
一个公司,需要更多具有不同能力的人才能生存的,所以你说的某一方面擅长的,就看当时公司情况下需要具备此技能的人。比如,解决 bug 很快的,这类也有好处,能快速解决问题,然后丢开发的事情给其他人去做。不会到处需要万事通的现在,团队战斗都是,当然有万事通我们也不拒绝,是吧,哈哈!不同的公司会有不同的侧重,这个我也很难给出一个固定的模板

不过总体来说,公司要找的是一位【有综合素质的员工】,而不是一个无脑的【码农】

简单来说,就是所谓的【硬实力】+【软实力】
硬实力:你的技术能力
软实力:交际能力,问题处理能力,团队合作能力等等

举个例子,比如NBA里面,除非你能达到詹姆斯,科比,杜兰特这样的水准,这种硬实力达到世界级的水平,整个团队的战术都围绕你进行,你不用太多担心其他的要素。
否则,软实力还是很重要的。

通常,美国硅谷的科技巨头,如谷歌,FACEBOOK等等,会综合考察面试者以下的能力(当然,技术能力是最重要的,但我也见过算法大牛因为非技术问题不过关而挂掉面试的情况)

  • 你过去的经验/你以后的潜力
  • 你的技术能力(数据结构,算法设计,系统设计)
  • 你是否自律,是否有自我激励能力,注重结果
  • 团队合作精神,交际能力,是否是一个合格的组员
  • 领导力,以后成为领导的潜力
  • 和公司的文化匹配(所谓的culture fit)

不同的公司对上面的要素会有不同的侧重,但总的来说,硬实力(技术)很重要,但软实力也非常重要,你需要明白,公司寻找的是【一位团队的队员】,而不是【无脑码农】

如果有其他任何问题可以私信我,祝楼主好运

软件工程师在面试的时候一般经历的HR的常规套路之后肯定是要部门负责人进行专面的,毕竟专业性比较强的岗位不得不进行技术评估。

1.基础是否扎实

在这个阶段一般我们技术负责人都会问一些很简单很常识的问题。但是会非常的广涉及的语言种类会多种,从这个层面上来判断面试人员的基础功底。

2.从项目着手问

给面试者一些场景应用问题看对方的解决方式和解决思路,主要看思路是不是有新意,思维模式是不是严谨能不能自圆其说,

3.擅长的语言还有模块

开发一直是一个团队的问题,面试者要很好的表述自己擅长的模块和擅长的语言,这样便于判断团队的需求是否匹配,如果不匹配的话也可以不浪费双方时间。

面试和offer是相辅相成的,但是也有很多开发工程师因为方向问题找工作难,我们更多是要找到专业的平台。现在软件开发物联网方向比较热门的电子行业,可以挑选在一下垂直招聘领域的网站进行投递,电子行业垂直的业内比较著名的就是问才招聘_国内知名科技电子行业高质量人才求职找工作 问才就是专门做电子行业的垂直招聘的。

责任编辑:
热门阅读排行
© 16货源网 1064879863