出品 | CSDN(ID:CSDNnews)
以下为译文:
那些尝试
我的电话响了。
“你好,我是Jared。”
“嗨,你好,我是“某搜索和广告行业巨头”的人,来对你进行电话面试。”
“是的!我一直在等你们的电话!”
“好的。你可以写出在二叉树中找到第K个最大值的算法吗?”
我顿了一下。大脑完全空白。我从来没有经历过这样的情况。空白的Google doc仿佛在盯着我一样,光标的闪烁就像被放慢了。我东拼西凑了个东西出来,作为第一次的尝试。
“你能为这个算法写个测试用例(test case)吗?”
当然。如果我的思维没有完全被迷雾环绕,且我的自尊心没有在因为看着梦想消失在自己眼前而引发的无能狂怒下消弭,我是可以写出那个测试的。过去几个月以来所有的辛勤付出就得到了这样的结果?19年1月左右我就决定要找一份新工作了,然后就仿佛是云端之上的软件工程之神对我赐福了一样,一位来自“某搜索和广告行业巨头”的招聘人员在LinkedIn上联系了我,希望对我电话采访。这太完美了!
这种情况不是第一次发生了。作为一名刚毕业,稚气未退的天真的年轻工程师,我最近开始了自己的第一份工作,并且做得很好。但是后来我的世界天翻地覆。我遇到了一个非常磨人的bug,然后做了任何有自尊心的软件工程师在尝试自己动手解决问题之前都会先去做的事情:Google搜索。当我在搜索框中键入了圆润的问 并按下Enter键后,屏渐渐黑了下去,然后我掉进了一个shell中。
您刚才用的是我们的语言……想接受一个挑战吗?
1.好的
2.不了,谢谢
温热的Costco咖啡刚入口,我差点一口喷出来。我几乎就快要跳起来,尖叫着让我的同事们来看看了。但是后来又突然担心起来,是不是自己出现了幻觉,并意识到如果真的是幻觉那会很尴尬。我一边担心着自己即将经历一次灵魂出鞘的体验,一边按下了1。
给定一个包含n + 1个整数的数组nums,其中每个整数都在1到n之间(包括1和n),你需要证明数组中至少存在一个重复的数字。如果只有一个重复的数字,请找出该数字。
您有24小时的时间!
我心脏病都快被吓出来了。又一杯Costco咖啡下肚,我终于使自己稍稍振作,然后才意识到自己完全有能力解决这个问题。我脑子里已经有了解决问题的计划。然后我照计划做了。当我点击提交按钮时,另一个需要解决的问题马上又出现了。就这样继续了五个来回,每次的问题都变得越来越难。在提交终极问题后,我收到了另一条消息:
恭喜您!这段代码很强大!现在有一个“某巨头搜索和广告公司”的面试机会,您想要吗?
事情的经过就是这样。就像这样,我的整个职业生涯发生了变化。世界上最强大的组织之一进入了我22岁的大脑,并改写了一个寄存器的内容。我从前所有的职业规划都不做数了。在此之前,我很无知但也很幸福地认为这样的顶级公司并不在我的选择范围之内。但是显然,不知怎么的,事实已经证明我是他们值得考虑的人选了。
电话采访的过程很像我做的这个噩梦。我被要求在45分钟内写出Conway’s Game of Life。我其实发挥得很好。我写出了整个程序并进行了测试,以证明它可以正常运行。但第二天我收到了拒绝的信息。我的内心既崩溃又困惑,自己到底做错了什么?我所做的所有算法题都没用吗?这家公司为什么会要求我在这么短的时间内写出这么难的算法?
鉴于我在这个级别的难度的面试中的初次经验,我决定下次要加大自己的努力程度。下一次的面试在19年4月。我为自己建立了一个为期3个月的学习计划,并尽力追赶。早上我起床以后做三道练习题,然后去上一整天的班,然后回家跑会儿步,吃点东西,再回到我的办公室里,为的是能在一个安静的工作环境中做更多的练习。在三个月的时间里,我总共做了114道练习题。涉及的主题包括数组,回溯,二叉搜索,二叉树,广度优先搜索,深度优先搜索,动态编程,图,贪心算法,散列表,链表,概率,排序,栈和字典树(trie, pl.tries)等等。做了这么多准备工作,我没理由不成功了吧?
苦难
在“某搜索和广告巨头”的面试化为灰烬了。我无法解决那个问题。但这仅仅是一整年里疯狂的起点。起初,我对于申请哪些公司很有策略性。我不仅仅是想要“一份工作”而已,我想要的是“对的那份工作”。
接下来面了一家自动驾驶公司。提交申请后我很快就得到了回复,并被安排了代码面试。面试时,面试官怒气冲冲地用很重的口音告诉我,让我编写一个非常复杂的图像过滤算法。我写完了,并要求对方给予反馈。他说:“看起来非常好!”结果第二天,我收到了一封官话版本的拒绝电子邮件。
然后是一家分析公司,让我把一道题带回家去做。题目只有三句话。我尽了最大的努力,并写出了一个非常复杂的多线程图像处理系统。后来招聘人员礼貌地拒绝了我,当我要求反馈时,对方告诉我代码“效率太低”。
在那之后是一家付款处理公司。我与一个招聘人员有了一段很顺利的电话交流,她称赞我的简历与职位描述很相符。第二天,我收到了她的一封电子邮件,说公司里找不到适合我技能的职位。
另一个例子是在“某 交媒体平台巨头”的面试。“Jared!感谢您的申请!我认为您将成为本司的重要成员!我已将您的申请直接发送给了您所在地区的招聘经理!”正在收到此电子邮件的八分钟之后,我又收到了一封自动发送的拒绝邮件,说我的技能不适合该职位。
与我联系过的第三方招聘人员不计其数。但所有这些机会最后都没有什么结果。这里面我最喜欢的大概是一个音频处理公司。招聘人员联系了我,说团队在看过我的简历后非常希望能与我谈谈,她将联系招聘经理安排电话面试的事宜。一个星期以后,我联系对方问问是什么情况。招聘人员说,她已经与招聘经理取得了联系,经理认为我的技能与他们团队不匹配。这对我来说是完全讲得通,因此我就继续去做自己的事情了……但是后来,抱着尝试的心态,我向他们的另一个职位提交了简历,立即有另一名招聘人员联系我了。当他们马上安排了电话面试时,我很惊讶。但是不得不承认,这场面试我只能说是表现平平。第二天我收到了官方的拒绝电子邮件。
然后,我终于得到了一个“某 交媒体巨头公司”的现场面试机会。我在四场不同的面试中与许多人一起群面,历经了一系列编程问题,并对所有问题都给出了正确且令人信服的回答。
一路上,我被问到一系列复杂而困难的“跟我聊聊……那时候的事情吧”这样的问题。这令人耳目一新,因为这是我在找工作的过程中第一次遇到考察我作为一名工程师的经验和聪明才智的情境。接着就是最后的系统设计面试。面试官及时地给了一个小的系统让我设计。我开始谈论自己的解决思路,面试官在每一步上相应地提出问题。最后,我们终于到了最后关头,面试官说:“好吧,现在我们有个微服务架构……所以说您有能力设计吗?”我马上回答说,我在微服务方面没有任何经验。他不解地看着我,问道:“你没有吗?”我回答说,“是的,我没有。我在简历中已经尽量说清楚了我在桌面,嵌入式系统和移动开发中的技能和背景。”他顿了一下,看起来就像意识到自己犯了一个错误一样。呵呵,可真是棒棒哒!所以这个人传达给我的信息就是,我花了整整4个月的时间为这个面试准备,工作之余的每个醒着的时间段都花在了做练习题,以及排练如何在软技能问题中表现我的技术背景上,但他连花10来分钟浏览一遍我简历的耐心都没有。
分析
对于在求职的艰辛过程中的那些令人失望透顶的经历,我能说上一年。这种事情太多了。一直以来,我无论是在面对自己还是他人时都力求对自己的技术实力保持诚实和谦逊的态度。那种需要多年经验(我不具备的),以及需要某种我不会的技能的工作,我都不会去申请。当然,我打算从嵌入式领域回到Web领域,但我是有两年的Web工程师经验的,更不用说我还有作为移动应用程序开发人员和机器学习算法研究人员的经验呢。我完全承认,我在很多很多方面都还有成长空间,在职位上需要学习的东西也很多。但另一方面,我也非常有信心,我是有能力快速地开始从事一份新工作的。在我看来,软件工程是一种由学习和新经验提炼出来的一种艺术形式。没有哪个软件工程师会只追求在某方面达到“还算精通”,并在他或她职业生涯的全过程中一直都在那个水平上止步不前。至少我是不希望有这样的软件工程师的:这样的人很快就会被别人落下,败者食尘。那么,我的面试到底是怎么回事呢?在长时间经历这种反乌托邦过程之后,我觉得有必要把各过程分开来分析一下我的观察结果,然后再复盘,以获得一个更清晰的全局观。
1、我们被自己造的神话迷惑了——软件工程师们往往都崇尚一种认知,尤其是在当今这个技术爆炸的世界中,大家都认为会有那么一类独来独往,特立独行的程序员,任何需求他们都可以轻松地用算法解决。这类原型软件工程师们的人设是不参加任何 交,反对结构,且极度理想主义。他或她的人格是极度独立的,不需要与任何人交流就能把工作搞定。因此,由于我们无意识地相信这种人设,我作为工程师必须先通过一个可以测试这些特征的筛选,才有资格跟对这个职位有所了解的人进行交谈。但是,其实用常识思考一下,就能明白这些特征实际上并不能表明候选人的能力有多强。软件公司是一个或多个软件团队的集合,而团队又是多名个体的集合。
到目前为止,总结一下就是:似乎促成了招聘流程结构的是“怎样才算一名软件工程师”的流行观念,而不是软件工程师身上真的能让他们在工作中取得成功的特质。
2、我们都知道算法题只是人为设计出来的游戏而已——由于多方面的原因,要阐明这一点比较难。
3、既然要衡量候选人的能力,那为什么不花点时间了解一下他们呢?——几周前,我看了一个某位在“顶级”公司进行过大量面试的面试官的演讲。用他的话说,他的演讲的目的就是精炼出一个能“在面试中提取信 ”的策略。啥?!现在的人就不能好好了解一下他人吗?这种态度完全就像是冷漠的机器人,而且说实话,很反乌托邦。以后又会变成什么样子?是否要扫描候选人的大脑来寻找和已知的高水平候选人之间的相似之处了?这种态度散发着自我主义和组织男子气概恐怖地组合到一起之后的恶臭。在我看来,现在的公司更害怕招到糟糕的候选人,而不会为可能招到优秀的候选人而兴奋。在公司们能再次对招聘感到兴奋之前,对求职者来说,情况恐怕不会有改善了。最糟糕地方在于,现在求职者从招聘人员那里得到的第一条信息就是,你看上去是个很好的候选人,但是一旦进入面试,你只会发现对方只会怀疑你名不副实。我认为,应以谨慎的乐观态度而不是怀疑。
我很确定这个话题我还可以一直说下去。我的笔记中还有大约八点要写。但是到现在,这篇文章看起来更像是一篇抨击的长篇大论,而不像一篇博文了。我希望至少能够表达一下在过去七个月里自己遇到的一些困难。到了后来,我发现自己很矛盾。我现在的老板刚刚解雇了我所在的整个团队,然后我就失业了,只能独自写下自己这一肚子的苦水。我不确定是不是想要再次经历一遍求职的过程。我想了很多,从自己的经历里总结出了一些简单的结论:
我的结论是:
那就是先暂时退出这个循环。
原文链接:
https://www.jarednelsen.dev/posts/The-horrifically-dystopian-world-of-software-engineering-interviews
?再见 Python,Hello Julia!
?GitHub 超 32,000 Star!火了近十年的阿里开源项目 Apache Dubbo 云原生实践
?你现在从事的程序员还有多久会消失?牛津大学研究员帮你算了算
?一次对语音技术的彻底批判
?后端程序员必备:书写高质量SQL的30条建议
?到底是哪些人在玩链游?| 《区块链游戏玩家研究 告》
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!