编程语言与软件工程2019researchgate.net
招聘已坏:开发者如何看待技术面试?
Hiring Is Broken: What Do Developers Say About Technical Interviews?
入门 · 约 30 分钟读完前置知识:技术面试常识、定性研究基础
导读
这篇论文围绕开发者对技术面试的看法,探讨招聘流程为何被视为“坏掉了”,尤其关注白板编程、算法题、带回家项目等环节能否有效评估工程师能力。论文整理开发者的反馈,归纳出现行技术面试与真实工作表现脱节、候选人靠刷题应对等问题。
HN 关注点:技术面试的切身体验:白板题、刷题过滤、带回家作业和简历筛选是否真能选出好工程师。
HN 评论精选
这几条评论里:支持 1 补充 2 亲历 1
亲历带回家项目表现极好,却因现场白板题紧张被拒,说明技术面试未必能反映真实能力。
我曾面试一家公司,题目是写旅行商程序,规划城市间最短飞行路径。这是带回家测试,给至少一周。我比多数人早三天完成,是唯一完整注释文档的提交,界面最漂亮(还做了飞机飞行动画),运行时间最短,被评价为该公司迄今收到的最优解,也是唯一正确无缺陷运行的。然后他们让我参加6小时现场面试,问我“在白板上从零写一个能用的哈希表”。我紧张没答好,他们提前结束并拒绝了我。
palisade查看英文原文
I once interviewed at a company that had you write a traveling salesman program where you were planning the shortest path of flights between cities. It was a take home test where you were given at least a week to complete it. I completed the test in record setting time (3 days earlier than most), mine was the only one that was fully documented with comments (no one else bothered to do this), they said I had the most visually stunning user interface (most were ugly or unusable; I even animated the plane flying between cities), the program came to the outcome in the shortest runnable time, out of all the submitters they said my program was the most optimized solution (not the best ever made, but the best submitted to this company so far), and mine was the only one that actually worked correctly and ran without flaws. They then proceeded to have me come in for the 6 hour interview in which they asked questions like, "Write a working hash table from scratch on the whiteboard." I got nervous and passed the question, they ended the interview early and rejected my application.
补充法律行业靠简历品牌预筛,面试只是确认,因此成功率很高;软件行业让更多人进面试却用不可靠的现场题筛选。
我读过无数“软件公司招聘坏了”的文章,昨天问做律师的姐姐法律行业怎么招聘。她说即使全国最精英的律所,面试成功率约50%,而谷歌不到10%。原因是律所只在已相当确定想雇人时才邀请面试;他们几乎不靠面试表现判断能力,而主要看简历——法学院品牌、GPA、此前律所品牌。学校或前律所不够精英,连面试机会都没有,这还常是公司政策。她曾幸运拿到精英律所offer,但HR因她没上Top15法学院而阻止录用。讽刺的是,我从没听人抱怨法律招聘坏了,也许因为律所在简历阶段就把大多数人筛掉了。
noego查看英文原文
I've read a million "hiring is broken" articles about software companies, so I asked my sister (lawyer) yesterday how the legal industry does hiring. She told me that even at the most prestigious and exclusive legal firms in the nation, the interview success rate is ~50%. That seemed staggeringly high, considering that Google's is less than 10%. So I asked her how these legal firms managed to pull off such a high interview success rate. Apparently, they only ever invite someone to interview, if they are already pretty sure they want to hire that person. And how does that work? They make no attempt whatsoever to judge your competency on the basis of interview performance. Rather, you are judged almost entirely by your resume - the "brand name" of the law school you attended, your GPA, and the "brand name" of the law firms you've previously worked at. If your school or previous law firms aren't prestigious enough, you won't even be invited to an interview. In fact, not only is the above a convention, it's often a firm policy. My sister once got a job offer, through very fortunate circumstances, at an elite law firm. But their HR department blocked her hire, literally because she did not attend a top-15 law school. Ironically enough, I've never heard anyone complain about legal hiring being broken. Perhaps that's precisely because legal firms don't even give most people a shot - they are filtered out entirely at the resume stage. I imagine people get far more agitated when they are rejected after an interview, as opposed to being ignored entirely from the outset. I'm personally glad to work in an industry where even the most exclusive companies are willing to give everyone a shot at the interview, regardless of which school they went to. Is hiring broken in tech? Sure. But it's completely dysfunctional elsewhere.
支持要求候选人当场推导最优算法不现实,刷题通关不等于工程能力。
作者用LeetCode最大子数组问题开场:该问题由Ulf Grenander于1977年提出,作为数字图像模式最大似然估计的简化模型;他给出O(n²)算法,改进暴力O(n³)。CMU的Jay Kadane很快设计出O(n)算法,显然已最快。如果你真认为除CMU等机构的算法专家外,普通人能被合理期望当场推导这类题的最优解——而不是像候选人实际被迫做的那样,连续数周刷几十道题以至少有50%机会通过“过滤器”——那你要么天真,要么故意自欺。
tropicalia查看英文原文
Let’s begin with a technical interview problem. Consider the following coding question from LeetCode, an online platform for preparing software development candidates for interviews: [statement of the Maximum Subarray Problem] Before going further—and regardless of your coding proficiency—we’d like you to spend a few minutes and take a stab at this question. From Wikipedia: The maximum subarray problem was proposed by Ulf Grenander in 1977 as a simplified model for maximum likelihood estimation of patterns in digitized images. ... Grenander derived an algorithm that solves the one-dimensional problem in O(n2) time, improving the brute force running time of O(n3). Jay Kadane of Carnegie Mellon University soon after designed an O(n)-time algorithm for the one-dimensional problem,[1] which is clearly as fast as possible. The same O(n)-time algorithm was later automatically derived by algebraic manipulation of the brute-force algorithm using the Bird–Meertens formalism.[2] If you really think anyone -- short of a faculty-level algorithm specialist at places like CMU -- can be reasonably expected to derive an optimal solution to problems like these on the spot (as opposed to the way candidates are actually forced to prove their ability to "solve" them: by binge-cramming on dozens and dozens of problems like these for weeks on end, so that they have at least a 50 percent change of passing your "filter") -- the you're either very naive, or deliberately kidding yourself.
补充白板、带回家、结对编程、试用期等替代方案各有明显缺陷,招聘难题没有简单解。
每次HN讨论这个问题都显示它很难解决:没人喜欢白板;带回家作业是无偿劳动,有孩子的人下班后没时间;面试中结对编程让人不适,因为节奏或不是习惯的工作方式;有好工作的人不愿接受contract-to-hire或试用期;研究生学位等资历也不能保证是好工程师。当前面试很糟,但所有替代方案在重要方面更糟。
twblalock查看英文原文
Every time this comes up on HN we see why the problem is so hard to solve: - Nobody likes whiteboarding - Take-home assignments are unpaid work, and candidates who are raising children don't have time to do homework after they get home from work - Pair programming during interviews makes people uncomfortable because of the pace or because it's not how they are used to working - People who currently have good jobs are unwilling to consider contract-to-hire or "tryout" periods - Credentials, including graduate degrees, are no guarantee that someone is a good engineer The current interviewing situation in the industry sucks but all of the alternatives are worse in important ways.
历次讨论
- 2019Hacker News 讨论帖239 分 · 460 评
同领域还值得读
Google 的软件工程(2017)
Software Engineering at Google (2017)
介绍了 Google 的软件工程实践,包括其单一代码库(monorepo)、几乎全部开发在主干进行而非分支、代码审查、构建系统 Blaze、协议缓冲区等工具与流程,并讨论了频繁重…
编程语言与软件工程2017 · 1,127 分 · 465 评 · 引用 15入门 · 约 45 分钟编辑精选Peter Naur:编程作为理论构建 (1985)
Peter Naur – Programming as Theory Building (1985)
Peter Naur 1985 年的经典论文《Programming as Theory Building》提出:编程的本质不是写代码或文档,而是在程序员头脑中构建对程序及其运行…
编程语言与软件工程2016 · 629 分 · 74 评入门 · 约 45 分钟编辑精选SciPy 1.0:Python 科学计算的基础算法
SciPy 1.0: fundamental algorithms for scientific computing in Python
这篇发表于 Nature Methods 的论文介绍了 SciPy 1.0——Python 科学计算生态的基石库,涵盖其核心算法模块(优化、积分、插值、线性代数等)、软件架构与社…
编程语言与软件工程2020 · 387 分 · 98 评入门 · 约 45 分钟编辑精选Lisp 的历史(1979)
History of Lisp (1979)
这是 Lisp 发明者 John McCarthy 于 1979 年为 HOPL(编程语言史)会议撰写的回顾文章,讲述 Lisp 的起源、设计动机与早期演进,文中也涉及 if 表…
编程语言与软件工程2018 · 352 分 · 44 评入门 · 约 45 分钟编辑精选使用 NumPy 进行数组编程
Array Programming with NumPy
这篇 Nature 文章介绍 NumPy 的数组编程模型及其在科学计算中的核心作用:以 ndarray 为中心,通过向量化操作让 Python 高效处理多维数组。
编程语言与软件工程2020 · 318 分 · 134 评入门 · 约 40 分钟编辑精选