在编程面试中,如果有人问我已经知道答案的问题,例如为特定问题提供算法。我应该把这个透露给面试官吗?仅当问题涉及新颖性时,此问题才有意义。
一个示例是“如何颠倒字符串中的每个单词,而不颠倒它们的顺序?”。似乎“应该”知道的较简单的东西(例如我的例子)和较难的更人为的问题之间似乎也存在分歧。
您处理此问题的政策和理由是什么?如果您已经熟悉了问题/脑筋急转弯,除了回答问题外,还应该披露吗?不披露您对该问题的先验知识是否涉及任何道德困境?
在编程面试中,如果有人问我已经知道答案的问题,例如为特定问题提供算法。我应该把这个透露给面试官吗?仅当问题涉及新颖性时,此问题才有意义。
一个示例是“如何颠倒字符串中的每个单词,而不颠倒它们的顺序?”。似乎“应该”知道的较简单的东西(例如我的例子)和较难的更人为的问题之间似乎也存在分歧。
您处理此问题的政策和理由是什么?如果您已经熟悉了问题/脑筋急转弯,除了回答问题外,还应该披露吗?不披露您对该问题的先验知识是否涉及任何道德困境?
Answers:
我会毫不犹豫地解决这个问题。知道问题的答案并不是什么邪恶的事情,它意味着您之前已经遇到过问题并且知道如何解决。修复它,继续下一个。
我仍然会回答这个问题。我经常采访程序员。我对您可以解决问题(除非您根本无法解决)的兴趣不大,对您如何解决问题更感兴趣。
我在面试中问了很多很多..以及很多烦人的小问题,这些问题是专门设计的(并随着时间的流逝而完善),使我对您的实际优势和您的简历有很好的理解。我会尽我所能带领您进行一些主观的开玩笑,然后为您解决越来越棘手的问题。
以弗兰克(Frank)为例,FizzBuzz,我想听听的最后一件事是:“哦,是的,我知道如何使用模运算符...”如果我在采访您,我知道。我可能想看看您的大脑换档有多快,或者我想测试一下您执行一项看起来平凡而又愚蠢的作业的能力。关键是,我不仅在测试您解决问题的能力。
我可以用数百个活动部件制作鼠标陷阱。如果一家公司从事捕鼠业务..那么... :)
我赞成开放和诚实的沟通,所以我肯定会说我知道这个问题以及其中的技巧。
为了获得更多的荣誉,我想您可以说:“好,这是其他所有人的做法,但让我们看看是否有其他方法。” 或者,您可以通过其他方式解构该问题,并说明为什么人们喜欢该问题,以及该问题试图让您看到什么。
(编辑:从其他人对此帖子的评论中删除了对FizzBuzz的引用。)
根据我的经验,对于大多数技术面试而言,受访者对您的解决方案,您如何提出它以及如何对其进行解释非常感兴趣,而不是您之前是否曾听过相同的话。除非它是涉及“技巧”的“难题”问题之一,否则除非事先能够自己解决问题,否则事先了解该问题并不能真正为您提供决定性的优势。
对于一个非常重要的问题,提出的问题实际上可能是众所周知的问题,或者可以简化为一个问题。如果有人问在图中找到两个节点之间最短路径的方法,您是否假装不知道BFS / Dijkstra?恕我直言,对于某些问题,隐藏您知道自己的东西的事实甚至可能适得其反。
我认为告诉采访者仅适用于那些愚蠢的“陷阱”问题,例如圆形沙井和其他类似的东西。提出问题后,一旦知道答案就很明显了。
反转字符串等,没有明显的“陷阱”解决方案,如果知道的话,您可以在3秒钟内进行解释。
“知道”答案不是重点。以一种使面试官有机会了解您所给出答案的方式进行沟通是。(当然,面试官知道很多答案,但是正如我所说,这不是重点。)
因此,我将尝试将答案框架化为合理的讲义或幽默的框架,以便面试官可以了解我的想法和功能,或者不了解。
例如,对于所有人(对面试官来说都是有益的),将提出的问题置于完全不同的上下文中可能很有趣,这表明即使手头的问题看起来相似,解决方案也无法在新的上下文中起作用。我认为这里的艺术是找到一个与问题有某种联系的上下文,在该上下文中第一个答案的解决方案不起作用,然后提出面试官可能会细看(或嘲笑)的引人入胜的解决方案。
那有什么选择呢?如果您告诉面试官您知道所提出问题的答案,并希望他们仅向您提供您不知道答案的问题,那会发生什么?要么
我怀疑选项(1)和(2)不会发生-叫我愤世嫉俗的先生。因此,您要么是笨蛋,要么是聪明人,这两者都不会让您找到工作。嘿,祝你好运!
正如其他人指出的那样,面试的重点是通过回答您提出的任何问题,为您提供展示自己的技术水平的机会。这种方式意味着您已经被问到的问题对您有利。如果您坚持要破坏自己,请继续-没有人会阻止您-但我建议您不要这样做。
分享并享受。