程序员面试的可怕反乌托邦

实验



我的电话响了。



“你好,我是贾里德。



- 你好。我打电话给您,是关于在巨人搜索和广告公司进行电话采访的电话[很明显,这是Google-大约是车道]。



-是的!我期待着您的来电!



- 好的。您可以编写一种算法在二叉树中找到第K个最大值吗?



我闭嘴完全断开连接。从未遇到过这种情况。一个空白的Google文档盯着我,光标以慢动作闪烁。我正在草拟一些东西作为第一步。



-您可以为此算法编写一个测试用例吗?



当然。如果我没有完全服药,并且我的内心没有在梦before以求的眼神中燃烧,那我可以。这就是我过去几个月所有辛勤工作的结果吗?在2019年1月左右,我认为是时候找到新工作了。似乎软件工程之神祝福了这个想法,Giant Search and Advertising Company的招聘人员通过LinkedIn与我联系进行电话采访。这太壮观了!



这不是第一次发生这种情况。作为一名刚从高中毕业的杰出年轻工程师,我最近开始了我的第一份工作,并且做得很好。但是后来我的世界颠倒了。我研究了一个特别令人讨厌的错误,做了任何自重的软件工程师会做的事情,然后尝试自己解决:google。当我在搜索框中按相应的平庸查询按Enter键时,屏幕变黑,我被扔进控制台。



您说我们的语言...想解决问题?

1.是

2.否,谢谢


我差点被不冷不热的好市多咖啡喝了。我想跳起来为同事们来观看而尖叫。但是后来我突然担心自己会出现小故障,在这种情况下,我会发现自己处于非常微妙的状况。担心自己的精神快要飞出我的身体,我按了1。



您将获得一个包含n + 1个整数的数组num,其中每个整数在1到n之间(包括1和n)。证明至少重复一个数字。假设只有一个重复项。找到它。



您有24小时!


我有轻微的心脏病发作。当我能够再次使用Costco咖啡使自己恢复活力时,我意识到我可以完全解决问题。我已经有一个计划。所以我做了。当我按下“提交”按钮时,他们给了我另一个解决方案。这被重复了五次,每次都变得越来越困难。当我发布最后的答复时,我看到了另一条消息:



恭喜你!这段代码非常好!在寻找巨人搜索和广告公司的采访吗?


就这样。我的整个职业世界已经改变。世界上最强大的组织之一已经渗透了我22岁的大脑,并重写了注册表。以前的职业目标都不再重要。在此之前,我没有意识到这样的顶级公司可以雇用我。但是很明显,我最终以某种方式值得关注。



电话采访就像一场噩梦。我被要求在45分钟内编写Conway的Life游戏。实际上,我做得很好。我编写了整个程序并进行了测试。第二天,我被拒绝了。内心,我感到沮丧和困惑。我到底做错了什么?不是所有的测试都有意义吗?为什么我必须在这么短的时间内编写出如此复杂的算法?



在此级别上第一次解决问题的经验之后,我决定应该提高自己的技能。采访发生在今年四月。我草拟了三个月的课程,开始做生意。每天早上,我在上班前都要完成三个实际任务。晚上,在慢跑和吃点点心后,我仍然工作。三个月内,我总共解决了114个实际问题。数组,回溯,二叉搜索,二叉树,广度优先搜索,DFS,动态编程,图形,贪婪算法,哈希,链接列表,概率,排序,堆栈和前缀树是我研究的一些主题。 ... 这样的准备怎么会失败?



失败的



巨人搜索和广告公司的采访结束了。我无法解决问题。但这仅仅是疯狂的开始。首先,我非常有策略地联系了哪些公司。我不仅需要“好的”工作,还需要“正确的”工作。



下一个是自动驾驶汽车公司。提交应用程序并设置代码编辑器后,我几乎立即得到了答复。面试官很生气,口音很强烈,要求我编写一个非常复杂的图像过滤算法。我写的。 “看起来很好!” - 他说。第二天,我收到了一封公式化的拒绝信。



然后有一家研究公司要求三句作业。我尽了最大的努力,并编写了一个非常复杂的多线程图像处理系统。我从招聘者那里得到了礼貌的“否”,当被要求解释时,我被告知我的实施“效率太低”。



之后,有一家付款处理公司。我和招聘人员进行了很好的电话交谈,她很欣赏我的简历与职位描述的匹配程度。第二天,我收到了她的一封电子邮件,说他们找不到适合我的技能的工作。



另一个例子是与巨人社交媒体平台公司合作:“讨厌!感谢您的申请!我们认为您将是在我们公司工作的完美之选!我已将您的申请直接发送给您在地区办事处的招聘经理!”八分钟后,我收到一封刻板的拒绝信,说我的技能不适合该职位。



无数的外部招聘人员已经与我联系。所有对话都以一无所有而结束。也许我最喜欢的一家声音处理公司。招聘人员联系了我,并说审核完我的简历后,团队非常兴奋并渴望与我交谈,因此她将联系人事经理。一个星期过去了,我问她最近怎么样。招聘人员说她联系了人力资源经理-他认为我的技能不适合这份工作。我接受了...但是,作为测试,我将简历发送到另一个空缺-另一个招聘人员立即与我联系。他们立刻打电话给我感到惊讶。我不得不承认,这次我做得不好。第二天,我收到了一封拒绝邮件。



最后,我进入了巨人社交媒体公司办公室的采访阶段。我在四个不同的访谈中与几个人回答了一系列编码问题,所有这些问题都正确且令人满意。途中,有人问我一些令人困惑和棘手的问题,例如“告诉我们……的那个时候”。自从第一次寻找工作时,我就感到耳目一新,我被问到我作为一般工程师的经验和见解。接下来是最后的系统设计访谈。面试官很快给了我一点开发系统。我开始谈论自己的决定,并一路上被问到问题。最后,我们到了他说的地步:“好吧,我们有一个微服务架构...您可以设计它吗?”我立刻说我对微服务没有任何经验。他疑惑地看着我,问:“没有经验吗?”我确认过了。我试图明确表达自己在PC,嵌入式和移动开发领域的技能和经验。他像一个知道自己犯了错误的男人一样沉默了下来。优秀的!我花了四个月的时间准备这次面试,几乎所有的非工作时间都花在准备,解决实际问题以及排练如何表达我的沟通技巧方面,而他并没有花十分钟阅读简历。我花了四个月的时间准备这次面试,几乎所有的非工作时间都花在准备,解决实际问题以及排练如何表达我的沟通技巧方面,而他并没有花十分钟阅读简历。我花了四个月的时间准备这次面试,几乎所有的非工作时间都花在准备,解决实际问题以及排练如何表达我的沟通技巧方面,而他并没有花十分钟阅读简历。





我可以继续为我在这一艰难的求职过程中遇到的许多失望而感到悲伤。有很多。我一直在努力让自己和他人对自己的能力完全诚实。我不是在申请要求我多年没有的经验或缺少技能的工作。当然,我想从嵌入式程序设计回到网络,但是除了担任移动应用程序开发人员和机器学习算法研究人员的其他经验之外,我还有两年的网络工程师经验。我完全承认,我有无数的增长和自我完善的机会。但另一方面,我对自己拥有的技能非常有信心,这些技能使我能够很快开始新工作。在我看来,编程是通过学习和新经验定义的一种提炼艺术形式。没有软件工程师会在整个职业生涯中停止发展。至少我不希望:这样做的人将很快被甩在一边。那么,这里到底发生了什么?经过了很长一段时间的严峻考验之后,我决定分解并分析我的观察结果,然后再仔细研究,以获得更清晰的画面。我决定分解并分析我的观察结果,然后仔细考虑以获得更清晰的画面。我决定分解并分析我的观察结果,然后仔细考虑以获得更清晰的画面。



  1. . , , -, . - — , . , , -. , , . , . .  — .



    • :

    • — , .

    • — , .

    • — . , : , .

    • — , . , . . . . - , -, .


    , , - . , , - .
  2. , — , , .



    • ? . , , , , . , . , ? . , .

    • ? , , . , . « ». . , , .  — , , . , , , , , . , , ?

    • . , . , . LinkedIn . , . , . , , , , «» .

    • , . . , . , . . .  — () , . . : « . ? : «, ». « ? ?» : « . ». . ,  — ?

    • , . , . , . , A. . ! ! . , . . ! ! - , , . : , , A : , - .

    • . 45 . . , . «», 50 , , . , 15 , . . , , . . 45 ?

    • . , Google. , . : « » « ». . , . , , , . , , « , , ». , , , . , «» , , , «» . , . - , . , . , . , , , , . ! ?
  3. , ? , . , , « ». ?! , ? , , . ? , ? . , , . , . , , , , . , .


我敢肯定,我本可以继续本着同样的精神。我的笔记中还有大约八点。但就目前而言,这篇文章看起来更像是一个杂文而不是博客文章。我希望我能够分担过去七个月中遇到的一些困难。最后,我有矛盾的感觉。我现在的雇主刚刚解雇了我的整个办公室,让我失业,一个人写我讨厌这一切。不确定我是否要再次执行此过程。我对自己的经历进行了很多思考,并得出了一些简单的结论:



  • , — 85 000 Java- , , . Python, . embedded C C++ , . Flutter . Clojure, . C#. , -. .

  • 我不明白为什么不允许我编写软件-公众声称公司拼命寻找软件工程师与甄选候选人的残酷现实之间存在根本的矛盾。在强大的“死或生”压力下,这些编码挑战似乎更多地是一种破坏机制,而不是有价值的评估工具。使用它们就像在询问他们对法律的知识之前先射击警察候选人。

  • 我不知道对方是什么样子 -关键是,受到批评的流程可能是公司挑选好人和坏人的唯一途径。我从来没有参加过招聘团队,而且我肯定我并不了解。


总之,我有几点想法:



  •  — , . , , . . , , ( ) , . , . , . , . , . , , , — , .

  •  — -. , : -. , . , . ? , ? , ? . , . , Agile. , . , . Java Python, Python, ? , , , . , - , .

  • — . , . . , -, . , , , :



    .



    . :






All Articles