阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

工作十年后面试华为,60 分钟现场编程能测出我的实力吗?

  • 2019-05-16
  • 本文字数:3497 字

    阅读完需:约 11 分钟

工作十年后面试华为,60分钟现场编程能测出我的实力吗?

从华为技术岗面试改革说开去,程序员的实力究竟应该被什么标准所定义?是技术上的深度与广度,还是大型项目的实战经验,还是对架构、趋势的把握程度?亦或是熟练的手写代码能力?

程序员面试,一个玄学问题

程序员的面试问题一直是个玄学。有的公司认为应该考量应聘者的技术深度与视野,有的公司则认为起码的白板手写代码是基本要求。而在面试者们看来,都是拧螺丝的 Crud Boy,你让我瞎造什么核弹。


前不久,华为宣布面试改革,将增加编程环节,充分考察程序员实际动手编程能力。改革中有几个要点:1.应聘人员要先在网上进行 90 分钟的网上编程,符合要求之后才能进入到面试环节;2.应聘人员须选择一种编程语言进行两轮面试,每轮约 45 分钟,30 分钟编程、15 分钟提问讨论。面试官独立进行面试考察,并根据岗位要求设计编程考察题目,应聘者需通过当面或视频编程的方式完成题目。


对于程序员来说,把需求转化为代码实现,并写出健壮程序是最基础也是最重要的能力。华为此举优化了软件类人才的面试流程,面试更以考察软件工程能力与编码能力为核心。


事实上,对此做法表示赞同的不在少数:


  • 作为 IT 行业的资深 HR,我表示认可;

  • 作为一个面试无数次被拒的程序员,我表示认可;

  • 实际操作能力是得考察一下;

  • 不编程怎么招聘程序猿?二十多年前我自己应聘,后来我负责招聘,都是要上机写程序的。


但是也有一些不同的声音,认为这样的考核标准太过严厉:


不说别的,就把华为最牛逼的人,最优秀的人拉出来,看看他徒手能写几行,用相同的方式去把华为程序员过一遍,估计 80%需要淘汰,大家同一个圈子,何必为难同胞。


这样的抱怨,也经常发生在一些“功成名就”的优秀老程序员身上:


“我现在接近 40 岁了。去年 12 月,我离开了我的创业公司,不再担任该公司的 CTO 职位。自那之后,我至少经历了 10 次失败的面试,这些面试都有编程测试环节。我有近 20 年的开发经验,包括早期电子工程开发和完整的分布式 Web 应用程序开发等。我创建的软件可以在全球大批量的专业生产工厂中实现完整的产品追溯。然而现在,我甚至找不到一个开发的职位,因为我通不过这些编程测试。”


同样的事情在大龄程序员不那么受“歧视”的国外也依旧存在。一位具有 10 年工作经验的计算机专业博士,不停地用网上题库进行练习,想加快编程速度。在此之前,他屡次被一些 IT 巨头公司拒绝。


这样的面试要求,不仅会淘汰很多不合格的软件人员,也为很多高级开发工程师敲响了警钟。如果想进大厂,面对这样的面试要求,你慌不慌?

对于面试现场编程,BAT 未必赞同华为做法

现场编程是最能直观体现程序员编程水平的一种方式,也是程序员证明自己的最好方式。我们也曾在报道中看到过程序员大佬现场编程拿到高薪职位的各种版本。


比如某位程序员去京东面试前端岗位,在技术面这一轮直接用 JavaScript 写了个魔方特效,通过终面,拿到高薪;


再比如某位去腾讯面试的程序员,现场用原生 JS+canvas 开发出了一款五子棋游戏,成功拿下该岗位…


华为面试改革后增加了现场编程的环节,那么 BAT 等 IT 大厂面试是否有现场编程这个环节呢?我们分别询问了阿里、腾讯和百度的同学。


根据反馈:阿里有笔试手写代码的环节,但没有现场编程的环节;腾讯各个团队的面试不一样,有的团队需要上机写代码和编译提交;百度没有现场编程环节,甚至有的团队连手写代码的环节都不需要。


这样来看,BAT 都不做的事儿,华为为什么要做呢?


对于华为来说,以前用大规模招聘来快速补充业务发展所需的人力压力,所以他们的面试步骤也是因为这个诉求而逐步建立起来的。在面试改革的文件里,他们提到“HR 看简历面试又不深刻,导致大规模进人、大规模走人”,这样来看,编程环节可以极大简化 HR 检查和审核的过程。


看来应聘华为的程序员同学应该是数量庞大,针对大批量申请者,这样的现场编程面试虽然会漏掉个别优秀的人,但是不会影响华为招聘的节奏。


对于华为这一面试做法,如果 BAT 都持保留意见,那么中小型公司是不是就更没必要了?


我们采访了一位 30 余人技术团队的负责人,他表示:“在我们这样体量的团队中,让程序员在面试时现场编程是完全没必要的,通过笔试题目和现场问答,完全可以了解到应聘程序员的实力。”

除了动手编程,还能如何了解程序员的软硬实力?

写代码是程序员的生命力所在,无论是现场编程还是手写代码,面试官总是试图从这些代码中看出应聘者的代码水平和习惯,例如代码的可读性、可维护性如何;界面、功能的设计能力如何;思维、代码结构是否清晰等等。


但是有时候面试官的水平和眼光也决定着这种做法是否真的那么禁得起考验。


Facet 的 CEO 曾抱怨自己在 Netflix 时,不小心拒绝掉了亚马逊Prime Air的创始人。另一位从业 30 多年的业内人士看到这个消息,也感慨自己的一位同事,一位公司内排名 Top 5 的程序员,在面试其他公司时,首轮就被刷掉了。这说明不仅程序员本身拥有过硬的实力很重要,招聘者是否具备伯乐的眼光更重要。


招聘新思路——建立工作样本测试

“如何在短时间内了解程序员的软硬实力”是每个招聘者的必修课。诺贝尔奖得主 Daniel Kahneman 因其在判断和决策方面的成绩而闻名,他在早些时候接受采访时表示,面谈对于选择最佳岗位候选人来说是非常糟糕的,但遗憾的是他并没有提出替代方案。不过,著名的工程师兼评论员 Thomas Ptacek 在发表的招聘方法论的文章中提出了这样一个招聘方法——建立工作样本测试。相比于询问应聘者的工作内容,让应聘者实际操作是更好的一个方式。


工作样本测试需要具备以下特征:


  • 尽可能地反映出应聘者在未来将要完成的实际工作;

  • 要是标准化的,每个应聘者都要进行同样的测试;

  • 最终生成数据和评分,而不是简单的及格或不及格。


Thomas Ptacek 曾尝试使用工作样本测试,他们在一个单文件 Sinatra 项目中构建了一个电子交易系统,接口为定制的二进制协议,同时构建了 web 接口来驱动协议。应聘者需要找出这个交易体系中的缺陷。


“这样一个小测试需要应聘者在几小时内编写出几百行代码,比其它任何面试都更有预测力”。Thomas Ptacek 表示:“相比于传统的面试方法,应聘者似乎更喜欢这样的测试。另外,在工作样本中做的评估越多,面谈中需要谈的内容就越少。”


这样的工作样本测试也适用于纯开发任务,例如面试官可以实际构建和部署一个应用程序,并从应用程序中划分出一些功能区域,删去某些功能,让应聘者重新添加。

招聘常规思路——历史项目描述及笔试题目

如何才能快速了解到程序员的软硬实力?“交流历史项目是一个很好的方式”。某位技术团队负责人表示:“我一般的面试时间是 40 分钟到 1 个小时左右。从历史项目的描述中,我可以验证他是否曾真正参与到该项目中,也能很快地了解到他之前在团队中扮演的角色、做的事情,同时还可以就该项目发散到其它技术细节。另外,这样的描述也顺带考察了应聘者的表达能力和对技术细节的关注和处理能力。”


某公司 HR 表示:“HR 面试程序员的时间大概在 25 分钟左右,来公司以后先做一套题,简单粗暴有效。笔试题目除了考察基础的技术功底之外,也会增加一些场景题,考察应聘者的应对能力。”

面试高级岗位,还需要进行技术细节笔试吗?

前几日,一篇题为《我是技术总监,你干嘛问我技术细节?》的文章在技术圈火了,文章的起源是猎头妻子向作者抱怨,“现在的客户真难伺候,招的是 VP,问的全是与细节相关的问题,最终,候选人抱怨企业小瞧了他,企业则吐槽这哥们很水。”这一话题也引发了大家对于面试高级岗位是否还需要进行技术细节笔试的讨论。


针对这一话题,我们也咨询了专业猎头,他表示:“如果你在沟通中已经获知了应聘者有非常好的编程底子,或者招聘的是高级技术总监这样级别的岗位,一般是不需要进行现场编程或笔试题目考察的。我们会通过他在行业中的影响力、之前的项目经历、对于问题的解决思路和前瞻考虑等方面来考察面试者能力。”


上善伐谋,次善伐交,下善伐城。由于国内很多科技公司尚处于发展阶段,所以类似 CTO、技术 VP 等职位可能仍需要在前线“攻城略地”。但是无论是否要冲在一线,技术管理者的工作优先级,肯定是要放在对前瞻技术的预判、对团队的管理、与业务线的协作上。如果这些事情占据他们绝大部分精力,他们是不会有时间去写代码的,很多大厂 CTO 也坦言”自己现在不写代码了“,当然这并不意味着他不会写代码。


此前我们在采访蚂蚁金服 CTO 程立(鲁肃)的时候他曾经表示:“虽然我不碰代码了,但支付宝到底有多少个系统,当用户第一次点击这个系统会呈现什么样的状态,整个过程我都非常清楚。所以如果支付宝出任何故障,我会第一时间知道哪里可能会有问题,哪个关键点会出问题。”


如果是你,工作十年之后再次求职,你还愿意和刚毕业的求职者一起,做一份动手编程题吗?


2019-05-16 18:149848
用户头像

发布了 497 篇内容, 共 308.9 次阅读, 收获喜欢 1907 次。

关注

评论

发布
暂无评论
发现更多内容

鸿蒙智联设备开发,这五大法宝你应该拥有|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

详解布隆过滤器的原理和实现

万俊峰Kevin

golang 微服务 微服务架构 布隆过滤器 go-zero

数据库事务与事务隔离级别

编程江湖

数据库 java编程

Flink是如何支持批流一体的

编程江湖

大数据 flink

【Promise 源码学习】第十四篇 - 实现工具方法 promisify

Brave

源码 Promise 12月日更

ios技术分享| iOS 发布 framework 到 Cocoapods 以及常见问题

anyRTC开发者

ios 音视频 WebRTC CocoaPods Framework

Tapdata Cloud 版本上新!新增ClickHouse,ADB MySQL等5个数据源支持

tapdata

MySQL oracle

一劳永逸,使用 PicGo + GitHub 搭建个人图床工具

AlwaysBeta

GitHub 工具 PicGo 图床

教你用 JavaScript 设计一个 Neumorphism 风格的数字时钟 (代码详解)

海拥(haiyong.site)

大前端 js 28天写作 签约计划第二季 12月日更

协程实现方式——从程序控制流转移谈起

Jowin

协程原理

关于RocketMQ事务方面Demo

提高儿童被拐意识

Tiger

28天写作

如期而至-用户购买时间预测(上)

索信达控股

模型 购买预测 购买行为 精准营销

直播预告丨“Hello Ability:从页面跳转开始”周三晚不见不散

HarmonyOS开发者

HarmonyOS

测试 —— DevOps 快速交付的最大瓶颈

SoFlu软件机器人

信息网络向价值网络演进过程中产品形态的思考

拍乐云Pano

企业管理升级,如何加速信息化转型?

雯雯写代码

企业管理 信息化

2021年财经中国年会暨第十九届中国财经风云榜

大咖说

直播 财经 财经峰会

Linux一学就会之文件的归档和压缩tar命令

学神来啦

Linux 运维 ZIP tar命令 linux云计算

Vue路由守卫有哪些,怎么设置,使用场景等

编程江湖

Vue 路由器

效率高到爆炸的IT运维软件您安装了吗?

行云管家

运维 IT运维 运维i工具

全网最全-混合精度训练原理

科技热闻

大数据开发之Kafka 存储选型

@零度

大数据 kafka

更好用的Web端H265播放技术架构

百度开发者中心

智能视频

聊聊Java底层那些事

码农参上

内容合集 签约计划第二季 技术专题合集 技术专区合集

kubernetes系列随笔03:kubernetes的发展和设计思想

谦寻

Docker Kubernetes 声明式

等保2.0正式发布了吗?核心思想包括什么?

行云管家

网络安全 等保 等级保护 等保2.0

高并发线下沙龙不容错过!

Qunar技术沙龙

高并发

百度文库新一代文档阅读器!核心技术点全解析!

百度Geek说

大前端 文档 百度文库

WebView秒开方案探索

得物技术

CSS JavaScript html webview 大前端

前端开发JS框架之jQuery的基础知识分享

@零度

大前端 ​jQuery

工作十年后面试华为,60分钟现场编程能测出我的实力吗?_技术管理_田晓旭_InfoQ精选文章