我如何才能更好地解决白板面试问题?[关闭]


16

我坐在面试中,发现有类似能力的人在面试中在白板上回答问题时存在很大差异。

通常,能够清楚地解释您的想法,用干的橡皮笔书写可读代码,避免长时间沉默,即使最终答案大致相同,也倾向于对候选人进行更有利的评估。

如何在白板面试问题上变得更好?有没有更好的准备方法?


4
您说自己注意到“在面试期间在白板上回答问题的能力相似的个人之间存在很大差异”。您确定是这种情况吗?尤其是对于像软件工程这样的以团队为导向的领域,我会考虑一个可以站在一群技术人员面前,并比没有能力的人更能胜任解释他们的决策和思想过程的人。当然,获得最佳答案很重要,与他人合作达到目标也很重要。
Thomas Owens

12
您可以通过做得更多而变得更好。我总是首先为不想要的工作安排面试。这样一来,我可以在参加真正想要的工作的面试之前就练习白板:-)
Martin York

1
实践非常完美-也许在这里也是如此。

1
做自己在面试中!这可能无法保证找到工作。但要保证您得到应有的最佳工作。
Dipan Mehta 2012年

答案肯定是练习,练习,练习!一个不错的起点是这里:code-exercises.com/programming
kms333 '16

Answers:


15

您应该购买小白板,然后练习,练习,练习。让您的朋友从《编程访谈公开》一书中问您问题。然后解决问题,并像实际交易一样向他们解释您的思维过程。您的目标是不要发狂。您想表达清晰的想法。即使您不能解决问题,也要向他们表明您的思维过程是明智的,并且步入正确轨道。

在白板上写答案并不直观。这需要练习。我曾经是其中一个SAT培训计划的老师,我们花费了数小时的培训,在黑板上写字并解释了我们的思维过程。在程序开始时,大多数人迷失了自己的语言,用可怕的笔迹书写。到最后,我们看起来像经验丰富的退伍军人。您不想看起来像我们在程序开始时那样。

故事的寓意:不要毫无准备地去接受采访。解决白板上的问题是您应该练习的方法。


3
是的,不幸的是,这造成了“最佳”候选人是面试次数最多(或“准备”)的候选人。有时,这意味着一个好的员工,有时却没有。
凯文

1
不过,转化为优秀员工的频率可能要高得多。相反,经过培训并取得成功的人是:A)关心为公司工作,B)能够在他们心目中的事情上取得成功。如果编程问题很难/很好,那么白板准备因素将变得不那么重要。
Casey Patton

@Kevin:当然...我只是在扮演Devil's Advocate。我曾几次表达过同样的挫败感。
Casey Patton

1
@Kevin,这是双向的,而且风险是对称的,除了可能保护愚蠢的程序员免于被解雇的法律。
工作

一个好的面试官可能会发现在白板上表现不佳的候选人的潜力。我完全同意@CaseyPatton的观点,并补充说,能够进行交流自然会帮助白板,无论如何这都是一项关键技能。相反,如果您不了解自己的知识,那么演示者的出色程度并不重要。
gregmac 2011年

8

在进行白板面试时,需要回答三个问题:

  1. 你能解决这个问题吗?
  2. 您能否就问题和解决方案进行清楚的沟通?
  3. 您能够收到其他人的反馈吗?

因此,解决方案不是重点,而是您如何获得解决方案,这就是面试官将如何评估您。

你能变得更好吗?是的你可以:

下次您必须与同伴(如果您正在学习的是其他学生或如果您正在工作的其他同事)一起解释一些事情时,请执行以下操作:

  1. 将它们拖到白板上
  2. 拿起笔和橡皮
  3. 开始解释问题
  4. ???
  5. 利润

哦,别为难。只是假设您的草图和伪代码无论如何都会变得糟糕,而是即兴发挥。我们的目标是与您的同龄人一起找到答案,并始终乐于接受同龄人的反馈。如果您可以解决问题,则可加分。您做得越多,就越能做到。实践使完美。

除了编写代码;学习绘制UML图并进行讨论。都是方框,圆圈和箭头,通常绘制的类型是类图,序列图和(很少)用例图。在所有其他情况下,您只需要绘制方框,圆圈和箭头。


8

白板不仅用于面试

这可能是一个激进的观念,但是当我向应聘者提出白板问题时,我会在心理上将其回答与最近几次同事使用白板向我解释或向我寻求帮助的反应进行比较。这不仅是在面试时进行的测试,而且是日常交流中至关重要的技能。

那么,如何帮助那我要白板问题做准备时,我接受采访?我将其视为与同事一起解决问题,而不是大学考试。这意味着我提出了自己的想法,当我需要更多信息时,我会询问。如果某些事情看起来不太正确,我会与面试官讨论,直到满意为止。

如果他们想让您反向链接列表,并且您不记得链接列表是什么,请询问。如果最终结果更好,那么我会给您更高的分数,他不知道什么是链接列表,但他编写糟糕的代码来操纵链接列表。不管您是多么有经验的程序员,您都不可能以某种方式神奇地知道我们所有的代码和其他专有信息来开始工作。

在我看来,面试不是您可以追求的目标,如果可以的话,它会歪曲您对工作的适应性的看法,反之亦然。很容易说出某人何时背诵他们所记住的答案。这就是我有意将候选人推到知识领域之外的原因之一。我想看看他们如何应对尚未准备好的问题。

您可能以为我疯了,但是我对评估某人的思维过程与其记忆能力的好处感到非常强烈,以至于我告诉采访者,当我实质上是在反省我对相同问题的回答时在最近的3次采访中,询问他们是否想选择更具挑战性的内容。他们总是要求我“幽默”,以防万一我在虚张声势,但是至少他们对我的技能有了诚实的评估。


4

我坐在面试中,发现有类似能力的人在面试中在白板上回答问题时存在很大差异。通常,能够清楚地解释您的想法,用干橡皮笔书写可读代码,避免长时间保持沉默,即使最终答案大致相同,也往往会对候选人产生更好的评价。

我不记得上次我作为个人开发软件时曾做过的事情。我总是不得不与他人协调我的活动,讨论我的设计和实施决策,并与他人一起构建软件。在面试中表现出沟通技巧是一大优势。面试会让您感到紧张,但紧迫的最后期限和工作压力也会使您紧张。

我还要重申我的评论。鉴于软件工程的团队导向性质,您不仅需要考虑技术能力。说话和写作的能力(尤其是技术上的能力)对于大多数职位都很重要。我会评估某人在与工作相关的所有因素上的能力,而不仅仅是他们构建软件的能力。

在白板面试问题上可以变得更好的方法有哪些?

有没有更好的准备方法?

我可以想到两个人对白板问题的回答不佳的两个原因:他们对技术信息的掌握不佳,或者他们的演讲者/演讲者不佳。当然,这可能总是两者兼而有之。

变得更好的方法取决于问题。通过阅读,执行和提问(通常按此顺序)来实现技术改进。演讲技巧很差,这是通过练习而来的,尽管有些人天生就是很好的演讲者,而其他人则不是。我认为任何人都可以发展沟通技巧,但是个性将在一个人的实际成就中扮演重要角色。

面试过程中如何进行的提示?

这取决于。

即使到面试官完全“头脑不清”,细节也总是好的。如果我没有提供足够的信息,那么我会让面试官要求我更详细地解释一些事情,并且他们通常会问关于我的设计或代码的明确的,直截了当的问题。

花几分钟的时间事先思考问题,而不说或做任何事情总是一个好主意。您可以利用这段时间提出问题,以澄清面试官在寻找什么。这不仅使您有机会向访问者提供他们所寻找的确切信息,而且还表明您可以通过多种可能性思考自己的方式。


3

站在别人面前做演讲是一种可学习的技能。如果您不擅长此事,建议您加入当地的Toastmasters章节。您将练习一些在面试中遇到的压力,尤其是白板部分(如果有的话),这是“以前从未见过的话题,现在站在陌生人面前并进行解释”。


2
能够谈论您从未见过的事情通常被称为BS-ing。能够将技术面试的解决方案写成白板通常被称为合格。我知道,因为我一开始很糟糕,第二个很好。他们是完全不同的技能。
凯文

@Kevin,有很多知识渊博的人在压力下cho不休,OP指出了这一点。公开演讲令许多人感到恐惧,而Toastmaster的演习旨在消除这种恐惧,例如军方的新兵训练营。感到恐惧并生存下来。下次遇到令人恐惧的情况时,您会认识到它,并且记得自己曾经幸免于难,并且不再感到恐惧。
Tangurena

这是一个很好的理论,但我不确定它是否真的可以那样工作。我参加了公开演讲课,但仍然令我感到恐惧,但是为少数人提供有关技术主题的白板没有(而且从来没有真正做到过)。这是不同的,因为自信地讲一个您精通的技术话题比说一个您几乎不了解的随机其他话题容易得多。也许这对我来说更简单?
凯文

3

尽管其他人已经涵盖了身体方面(练习!),但我将谈谈心理方面。无论您进行多少练习,面试都是一种不同的环境。您不会一个人或与您的朋友在一起-您将与从未见过的试图判断自己能力的人在一起。

练习时,请始终牢记该环境。您不必恭维或suck他们-您的目标是展示您的能力和态度。说话自然,并解释您的想法。他们想看看您的想法,因此大声思考,交谈,讨论,并让他们参与您的思想。

另一个重要因素是反弹。实践问题总是有解决方案的-当您遇到困难时,您可以检查下一步,将其写下,理解和学习。但是您的面试官不是解决方案手册。他们会帮助您,但是没人会说“下一步是做x”,他们会说“您是否想到了y(与x相关)?” 因此,练习时不要总是参考手册。有一个朋友给您一些模糊但相关的建议,然后尝试从那里开始。解释他们的建议如何帮助您解决问题。始终向他们展示您的想法。

希望能帮助到你!


+1:非常有帮助...我即将进行白板面试,当您不知道期望值多少时,这有点令人不安。我知道我可以解释我的思想过程,这将非常重要。
IAbstract

2

提出问题和避免假设是某些白板问题的另一点。看起来像“嘿,我以前做过类似的事情,这就是解决方案……”实际上是一个问题,看看您是否会做出这些假设并从脚下飞起来。并不是说这是一个棘手的问题或使您感到尴尬,而是通常存在很多小东西,如果您碰到其中任何一个,它都会很容易地显示出来。一些示例区域:

  • 要求有多具体?您确定结果会如何吗?
  • 哪个复杂性指标在时间或空间上更重要,并且某些操作是否比其他操作更值得考虑,例如,如果您正在构建数据结构,那么可能希望访问比添加或删除要快,反之亦然?
  • 您如何解释您的解决方案很好?
  • 您能否浏览一两个示例来说明您的理论解决方案将如何工作?可以发现这里的测试用例很有趣,好像有用户输入,在何处进行验证以及如何传达错误消息等。

当然还有其他方面,但是这些是我在模拟面试中如何做时要考虑的主要方面。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.