2018-07-31 15:30:18 +0000 2018-07-31 15:30:18 +0000
152
152

如何处理面试技术测试的荒诞不经意的任务(如不合理的大任务,时间很短)?

如果面试中的技术测试涉及到不合理的大任务,时间很短,如果应聘者交出不符合应聘者质量标准的作品,让应聘者在规定时间内完成,是否合理?而且,如果考生确实尝试了这个任务,而评分员在没有对考生的作品提出有益的建设性批评的情况下,却让考生失败了,那么考生该如何以专业的态度来应对呢?

***今后如何决定是否要接受自己认为荒唐的技术测试(如不合理的大任务、短时限的任务)? )


我是一个有20多年经验的合同制软件开发人员,所以经常会有非常简短的面试,也经常会有技术测试,通常是在家里完成。他们说要做一个快速的技术测试,他们明白像我这样的潜在供应商不希望花几个小时的时间来证明自己,所以我并没有太过担心,通常他们都是一些小问题,或者让我建立一个快速的控制台应用程序来演示一些概念。

这个测试是要在两个小时内完成的,在我的专家看来,如果做得好的话,没有人会把这个事情说成是两个小时的工作。

然而,尽管如此,我还是尽我所能的去做了,并提出了一个完全可行的解决方案,而且不是太差的架构。他们要求我回答几个问题,包括 “如果你有更多的时间,你会怎么做?"。我在后续的邮件中写了一些我偷工减料的地方,以及为什么要这样写。我还用.NET Core 2写的,因为他们说他们的系统就是用的.NET Core 2。

我认为我做得很好,把所有的东西都塞进了两个小时的开发中。 .NET Core 2是非常新的,而且出了名的棘手–你所安装的SDK和用来编写的SDK之间的任何版本不匹配都会产生问题,因为我后来把它部署到我自己的服务器上,看看为什么他们说它不能运行,我不得不更新我的本地SDK来匹配服务器。

我更恼火的是他们说我的工作不够好,因为我有那种对自己要求很高的性格类型,我对自己的标准要求很高,这让我和中介公司的关系变得很糟糕,而不是得不到工作。作为一个承包商,我通常会被带进那些无能的公司(开发团队走人,开发团队不知道自己在做什么,管理不善,等等),所以我可能只能归咎于这一点。我应该说 "对不起,这个技术测试是不可能在2个小时内完成的",还是说我可以或者应该做的事情? **

** ** 我想补充一点,我是一个承包商,不是正式员工。这意味着我在这里经营着一个企业;无论客户是好的、坏的、可怕的、无能的等等,我都会在我的技能范围内做任何类型的工作,因为这是工作的附带条件。这也意味着,当谈到工作的地方时,选择的余地要少得多;虽然我可以很容易地找到一份长期工作,但对于合同工来说,同样的情况也不是这样。

答案 (12)

252
252
252
2018-07-31 15:39:22 +0000

GS(高盛公司)曾经向我要了一个小的代码样本,跑到交易所的订单模拟机上。没有什么特别的地方,只是他们指定了全面的测试范围和生产代码质量。

我给招聘人员发了一份报价,告诉他,如果他们不给钱,就不要玩。你的例子也是类似的—-除了早有准备之外,根本没有什么怪异的方法可以在2个小时内做到这一点。我敢说,这就是欺诈行为。这很可能只是一种滑稽无能的表现。

记住,这是IT行业–IT是一个卖方市场。大量的工作–没有专家。要有这样的行为。不要和白痴打交道。我拒绝任何没有事先面试的编码工作,因为还有另一面。所有那些 “有趣,有挑战性 "的项目,反正都是一样的蠢货,一遍又一遍的重复着。我想先知道我是否要浪费我的时间,因为我喜欢做自己喜欢的项目,而招聘人员完全不知道现在的项目是什么。

187
187
187
2018-07-31 17:24:09 +0000

记住,当一家公司在面试你的时候,你也是在面试他们。

如果测试给你的目标和时间安排不合理,**猜测你在工作中能得到什么结果,不要把它当做是你的个人行为,一个糟糕的测试并不能作为衡量你的技能的有用标准。如果他们说你的工作不够好,而你知道是好的,那么他们显然也不会欣赏你在工作中的表现。

又一次,不是你的问题,是他们的问题。

31
31
31
2018-08-01 19:38:33 +0000

后知后觉是20/20。下次应该这样说:

“按照惯例,除非先和客户谈好,否则我不会做任何带回家的作业。”

“你是客户吗?不是,那就帮我联系客户的招聘经理。还有,如果你是为HR工作(除非你想让我做一个HR相关的应用,否则你不是客户),那就不是客户。”

“好的,这个人是做什么的,为贵公司做什么的?如果贵公司雇用我,他/她会是我的上司吗?好的,是的,我想和这个人谈谈。我想和那个人谈一谈。”

一旦你终于和那个人谈好了,那么你就会说这样的话:

“好的,你看了我的简历了吗?你认为我们可以跳过这个整个take-home项目吗?”

假设招聘经理还是不想跳过,那么你可以说:

“问题是,我以前也被烧过。”

有一点,我不知道我是应该从头开始构建这个项目,还是直接重用一些我身边的代码?

还有一次,我在几个小时内就把项目从头开始建好了,但是因为没有生产好的应用而被批评。"

还有一次,因为版本不匹配,他们的IT不知道如何调整配置文件,让我的项目正常运行。"

但不管你怎么做,都不要给招聘方这样的解释。不要解释,也不要给招聘人员辩解。你想给守门人解释自己是没有用的。你给守门人的信息越多,他(她)就越有可能利用这些信息来对付你,因为从设计上来说,守门人很少有权力做出让步,但另一方面,他们的作用更多的是寻找理由来筛选求职者。所以,假设你已经和实际的决策者,也就是你实际要向的招聘经理汇报,并且假设你从这个人那里得到了很好的暗示,你可以说:

“好吧,我愿意做这个项目的带回家的项目,但我更愿意在我的项目安装和评估的时候到场。”

“那这个周三怎么样?[………..] 你会去吗?其中一个开发者也会到场吗?”

但是同样的,只有当你从这个人那里得到好的暗示时,才会这样做。相信你自己的直觉感觉。如果因为任何原因,你觉得他们把这个带回家的项目当做一种懒惰的方式来筛选众多的应聘者。或如果出于任何原因,你觉得他们试图从你身上提取一些免费的工作,所以他们可以把它放在生产中,不要同意作业。如果他们想让你做他们的功课,他们也要在你身上投入一些时间。这是一种相互尊重的表现。

如果因为任何原因,你没有得到这种尊重。比如说,如果他们换了工程师,你本来应该在最后一刻和HR人员见面的工程师。要有礼貌,但要坚定。不要把你的带回家的项目交给他们。告诉他们,你会很乐意重新安排面试时间,然后离开。

21
21
21
2018-08-02 01:42:05 +0000

我不喜欢在回答中参考其他答案,因为答案应该是可以自己理解的。然而,投票最高的答案基本上归结为 “公司是一群白痴。逃离他们。” 这让OP没有什么可以改进的地方,也没有什么可以改变的地方。我看到了OP可以改进的地方,不管公司是否做错了什么,我们作为回答者并不知道,因为我们只听到了故事的一面。你被要求完成一个编码挑战 2. 当你收到挑战书后,你没有表达你的担忧,而是开始编码 3. 候选人接受了挑战的所有条件 2. 该候选人按时提交了项目 3. 该项目没有成功 4. 我们的首席开发人员说代码质量很差 5.候选人开始为自己的工作找借口 5.候选人开始为自己的工作找借口 想象一下,你在工作中遇到了这样的情况,你的经理/团队领导要求你在不合理的时间内完成一个任务。如果你没有立即沟通说你不能在那么短的时间内完成那么多的工作,那么任何失败都是你的错,因为你接受了最初的条件。是专家,而不是他们,他们要靠你来沟通,

我无法强调双方有一个共同的认识是多么重要。你有一个难以逾越的理解差距,因为你错过了解决这个问题的机会。下次有了问题就直接沟通,否则对方会以为一切都好了! 不沟通重要的信息,就是漏掉的谎言,任何形式的谎言都是不专业的。他们对信息的反应是他们的责任,而不是你的责任。

我推荐阅读The Clean Coder: Robert C. Martin(Bob叔叔)的《职业程序员的行为准则》,特别是:

  • 第二章:说不
  • 第三章:说好
  • 第十章:估计
  • 第十一章:压力

如果公司因为你在开始执行任务前要求反馈和澄清而拒绝了你的申请,他们并没有过滤掉你,已经过滤掉了他们你不想为之工作的公司。

20
20
20
2018-07-31 15:44:10 +0000

我遇到过一些聪明的测试,也遇到过一些愚蠢的测试(SQL/BI),并主动退出了一个愚蠢的测试,解释说他们想要的是错误的方法。

我也看到过一些测试,实际上是免费项目的尝试,有 “样本工作",本质上是一个新的解决方案。

它发生了,我把它归结为经验,然后继续前进。我总是把面试时间安排在下班后,所以对我来说并没有真正的损失。

12
12
12
2018-08-01 17:10:35 +0000

那么你告诉他们,如果面对这个任务,你会怎么跟老板说,

要么是他们不知道自己在做什么,那么你就会对公司有很大的了解,要么是他们希望看到你不要浪费时间(公司的钱)把事情做得很差,而不是跟没有技术知识的人谈这个事情,来判断这个事情。

有两种结果,你做对了,就会以飞黄腾达的颜色通过,或者你躲过了子弹,不用两个月后再来告诉我们,你的老板是如何要求不可能的事情;)

4
4
4
2018-08-02 19:08:04 +0000

以下是我的做法:

  1. 和公司的联系人沟通,说明你认为时间上不可能,以及你打算实际做什么

  2. 如果有时间等待答复,就等着吧;如果没有,就按你的打算去做,并详细记录下你的选择

  3. 最理想的情况是勾画出你会把剩下的时间用在哪里

注意,极少数面试官实际标定和测试一个任务需要2个小时。如果你真的想要这份工作,就在一定的时间内把它完成到一定程度。

正如你所发现的,质量通常比时间更重要,除非他们有严格的机制来确保所有的候选人都能在时间内完成。

2
2
2
2018-08-07 04:02:15 +0000

这是一个假的测试来映射你的性格,尤其是你如何处理荒唐和紧张的事件。你是那种

1.恼羞成怒,离开或 2.默默地试图解决或做你 3.实际上试图与管理层争论和解释什么事情是不合理的或 4.得到如此的压力,你不知道该做什么或 5.你是谁假装试图解决,但给同样荒谬的编造的结果回来,因为这正是任何人提出这样的任务会得到的结果?

2
2
2
2018-08-02 00:50:53 +0000

这是我的专家观点,如果做得好的话,没有人会把这当成两小时的工作。

请原谅,但你没说到重点。

从团队的角度想一想。他们需要一个熟悉ASP.NET、MVC、REST、与数据库对话、以及一个自动填写文本框的适度高级功能的人。

我可以完成这些事情吗?是的,最终会的。毕竟,这些东西我都听说过,所以我可能会把它们列在简历上。像你这样的专家可以在限定的时间内把一个工作系统串联起来,因为你经常和这堆东西打交道,但我得花上几个小时去翻阅手册。

一份简历就是一张纸,在这里列举出弹指一挥间是小事一桩。一个糟糕的招聘比没有招聘更糟糕。我假设你没有团队里的人亲自推荐你,所以招聘经理要的是能力的证明。诚然,一个真正的生产就绪系统会花更多的时间,但测试没有要求生产就绪,因为它问的是你如果有更多的时间会做什么。测试的成功表明你已经熟练掌握了所有的层级,更重要的是你知道如何安排优先级。把它做出来,然后把它做得漂亮!

两个小时的测试不是建筑航天学的时间,

此外,你几乎可以肯定的是,你不是第一个看到这个测试的考生。团队已经使用过或许调整过多次他们的过滤器,至少有一个开发者通过了。像最近几年非常流行的那样—-义愤填膺或 “教育 "他们为什么这是一个糟糕的测试,在他们看来,你会被归入 "笨蛋 "的行列。他们会认为,Phew!他们会认为,_另一个拖延症患者或骁将,我们不需要处理。站在你的潜在客户的角度看问题。与其说是荒谬的,不如说是荒谬的,不如说是怀疑的好处。在两个小时的测试中,简单地记下你的假设,做一个简单的demo工作的晴天案例,并在剩下的时间里,记录下你如何让一个真正的系统健壮起来。

1
1
1
2018-08-07 22:11:40 +0000

尽量减少不太重要的因素; 3. 显然不是试图获得 “免费工作"; 4. 至少要有一些关于审核者 "寻找什么的提示。”

在之前的工作中,我设计并管理了一个可以说是 “荒谬 "的编程测试。那份工作一直是一个高级的全栈ASP.NET/SQL Server开发人员的工作,任务是创建一个非常基本的Web应用程序,涉及一个页面和两三个简单的存储过程。应聘者使用标准工具进行了现场测试:

  1. Visual Studio(考生所选择的版本在过去两三个版本内);
  2. SQL Server Management Studio;
  3. 一个网络浏览器,不光是测试用的,还可以用来查找文档、资源等。

我特别告诉考生,这些都是允许他们做的,

我给考生提供了一个基本的 "shell "方案(在每个允许的Visual Studio版本中),并提前创建了数据库和表,

我给考生做了一页说明,并告诉考生,我在十分钟后再来回答有关的任何问题,之后她有一个小时的时间完成任务。

当我在十分钟后回来,回答完任何问题后,我告诉考生,如果她不确定能不能在一小时内完成任务的每一部分,可以考虑在规定的时间内集中精力完成任务的一部分,并在规定的时间内完成,然后再去跑。我还提到,如果她在这一小时内还有问题,可以在两个隔间外找我问。

因为是我写的,所以从头到尾大概四十五分钟就能完成。我绝对没有指望考生能在一个小时内完成整个考试。这个 "荒唐 "的时间限制有三个原因:

  1. 我们想看看应聘者是否对岗位要求有哪怕是半点合理的把握。记住,这是对高级职位的要求。Well over half the time, the answer was "no.")
  2. 考生应该能够分析出基本的要求,并将其拆分成可管理的、离散的任务。
  3. 延长测试时间超过一个小时,会占用考生更多的时间,而不会给我们提供更多的、甚至是更多的信息。

在一个小时结束时,我要求考生向我展示她有什么东西,是否有运行方案的一部分需要演示等等。这个时候,我们一般会花五分钟左右的时间来回顾一下工作,然后候选人会和经理进行一对一的面试。面试的时候,开发团队都会看一下候选人提交的内容。我们真的_期待这个任务,因为它从来都不枯燥。

如果候选人有一个运行中的解决方案,能够处理好整体任务中的预期部分,那么这个候选人几乎可以肯定地通过这个阶段的面试。即使这个方案还没有运行,如果我们能看到候选人有实质性的进展和证据证明候选人的能力,我们一般还是会考虑这个候选人。我们总是会检查候选人的浏览器历史记录,看看她访问了哪些资源。

实际候选人没有成功的原因包括:

  1. 从字面上看,整整一个小时后什么也没产生。很遗憾,这种情况发生过多次

  2. 抄袭考生当前工作中的代码,并试图(而且失败了)修改代码以满足考试的要求。当我们怀疑到这种情况时,浏览器的历史记录就会给出答案,

  3. 无法形成一个连接字符串来连接应用程序和数据库。这一条可能看起来有点不公平,但请记住,我们要找的是高级人才,包括有SQL Server开发经验的高级人才。我们当然不希望应聘者记住如何构造连接字符串,但我们希望应聘者能够快速查找。最早的例子来自https://www.connectionstrings.com/sql-server/会很好用。

还有一个部分是经理和开发团队一起面试,我们会问一些关于候选人的解决方案,她会如何处理项目的其他部分等问题。

综上所述,我建议在断然拒绝之前,先考虑一下雇主的动机,让他做一个 "荒唐 "的测试。

1
1
1
2018-08-02 11:03:40 +0000

_这篇回答没有说明这类测试是否是一件好事(或者说我是否纵容这类测试),而是集中在具体问题上。 例如,一个不合理的大任务,时间很短的任务)在未来?

就像你在现实世界中会做的那样:

—合理地沟通这个任务需要多长时间。 —-尽可能多地做一些你能做的事情,以你能承受的最少的质量水平。 - 清楚地记录你在哪些地方偷工减料,影响是什么,以及由此产生的TODO。

所有这些都将极大地帮助我,作为雇主或客户,判断我是否想和你合作。矩阵式管理确实存在………..在这种情况下,我更希望有一个能够优雅地处理这种情况的人,而不是一个提供最伟大的代码的英雄,但无法沟通时间/质量的限制。

确切的衡量标准是去追求更多的质量,还是去追求更多的内容,这取决于。例如,在你的情况下,你可能主要是看到你能提供高质量的作品,就会对他们感兴趣。所以你可能会削减一些功能(通过使用一些占位符等),但要保持你的代码质量高。同样的,如果是安全相关的工作,你也会这样做。但如果是一个完全没有批判性的概念证明的东西,那么可能会更倾向于另一个方向。把这些都记录下来(简明扼要地),你就会很顺利了。

PS:我喜欢避免 “疯狂或糟糕 "的判断。也就是说,你不应该关心客户是不是疯了,或者说,你不应该只根据任务的大小来判断客户是疯了,还是想抓你(即,让你免费完成工作)。对你来说真正的量是你的时间,而是固定的。只要你能把这两个小时的时间投入到一个潜在的新客户身上就可以了,至于是轻松完成的任务,还是高压的工作,或者只是在他们的办公室里聊两小时的小事,应该都不重要。

0
0
0
2018-08-02 02:00:29 +0000

2个小时的疯狂技术测试绝对没有*错。所有**其他应聘者都要做同样的测试,所以你被录取的概率和简单的初级编程练习没有什么区别。不存在任何偏见,只是因为你应聘了这个职位,就要求你去做,

你是招聘市场上的卖家,你的责任是尽可能的迁就买家。除了换个职位,你几乎没有什么讨价还价的能力。当然,一个编程考试,__**所有应聘者都要做的编程考试也不是没有道理,不管你是否能真正竞争过它。如果你的能力很强,但无法完成测试,其他考生也会无法完成。那么问题出在哪里呢

你尽力而为。因为没有被录用而生气?公司要招人,所以别人可能做得更好。不可能的编程测试的重点是找到****表现最好的候选人。最好的候选人是否完成这项工作是无关紧要的。

如何决定是否应该参加我认为荒唐的技术测试

你应该对任何技术测试都感到舒服,如果你认为你有这个工作的技能,而其他所有的候选人都会做这个测试。永远不要做一个疯狂的测试,如果你认为这是一个免费的编程工作的尝试,或者/和由于偏见(如种族主义)而给你的测试。

PS:我从来没有提到OP不是 “足够好_"。@TessellatingHeckler