当前位置: 首页 > 科技观察

白板与编码面试:为什么不在计算机上编程会有所帮助

时间:2023-03-20 18:55:28 科技观察

如何检查技术评估白板检查两项技能:能够从一开始就编写干净的代码,并了解您的代码为何有效。这两项技能对于优秀的软件开发人员来说至关重要。这两种技能都可以通过做白板编程来准确测试。从一开始就编写干净的代码。不管我们喜欢与否,现代软件工程主要是关于了解足够的模式,并在正确的规则中使用正确的模式。几天甚至几周工作的结果,通常只是更改几百行代码。从表面上看,原始开发人员编写代码需要多少帮助并不重要。在编写代码之前,他们可能已经把所有的细节都记在脑子里了。或者他们可能会为他们编写的每一行代码查阅API文档、示例或语法指南。但是当我们深入挖掘时,我们发现有很大的不同。理解概念比理解现象更重要。一段代码变得越复杂,仅凭一些开发模式的知识甚至理解代码就变得越难开发它。一个好的白板编程练习可以检查一个人是否理解这个概念,或者通过记住很多模式来隐藏他们缺乏基础知识。当我们问“你最擅长什么编程语言?”我们并不是真正的意思是干净的代码。我们只是在寻找一个切入点,深入了解一个人,看看他的能力如何。这里简单总结一下,根据“应聘者熟悉哪个领域”来决定“面试需要涉及哪些方面”:面向对象编程——多重继承、虚方法、对象构造和销毁顺序、异常处理。前端-异步逻辑和终止、RESTAPI、验证用户输入。算法和数据结构-动机、用法、平均和最坏情况的复杂性。后端和架构——内存模型、垃圾处理机制、多线程、线程锁机制、基准测试、分析。函数式编程-Lambdas、curring、排序操作、一元。内核级——文件系统、网络、POSIX、协议、标准检查和分析工具。测试——单元测试、逆向测试和端到端测试、基本测试、基于模型的测试、测试驱动和行为驱动开发、集成测试。与候选人谈论上述内容时,最好的方法是从一个例子开始。最好的例子就是让他们自己写一个简短的例子。实际上,候选人编写的大多数代码片段都是无效的。这提供了一个绝佳的机会来了解候选人真正拥有多少知识。白板编程之所以有用,是因为:编写代码的空间有限。写代码速度有限。修改很麻烦,必须避免。没有补全、语法高亮和其他很棒的IDE功能。想了解代码在做什么。回顾代码片段的工作原理是一个很好的练习。进行技术面试时,切勿跳过。如果代码是一种算法,有人可以写出所有的步骤,有人可以考虑特殊情况,有人可以写出不变量并证明它。有人可以根据每个独立的循环结构和递归调用来解释复杂性。如果代码是面向对象编程,有人能清楚地指出它的具体作用,对象是什么时候创建的,怎么创建的,怎么销毁的,什么时候调用构造函数和析构函数,以什么顺序调用,异常时会发生什么发生时,内存布局是什么样子的。代码是干净的还是包含明显的错误非常重要。仔细观察候选人解释代码的每一步是做什么的,可以帮助您了解他们的想法和说话方式。以及他们在其他领域的了解程度。***,这些是技术面试要用到的测试技巧。而不是使用API和使用IDE来完成特定任务的技巧。白板编程之所以有用,是因为:白板上的内容或多或少是不变的。用不同颜色的笔标出“应聘者原代码”、“面试官点评”、“应聘者点评”,可以很好的形象化对话。有没有办法不用白板就可以完成上述技巧?能不能。对于编写干净的代码,我认为候选人可以在自己的笔记本电脑上编写。但是有这些条件:代码要用投影仪投影到大屏幕上,字体要很大。关闭IDE的大部分出色功能。请注意,在不熟悉的操作系统、键盘甚至编辑器上编程可能比在白板上更难。要么让他们在自己的电脑上写程序,要么确认他们能接受你提供的环境。至于理解代码的部分,白板更有好处。理想情况下,如果将投影仪图像投影到白板上,我会要求应聘者将投影放在白板上,让面试官拿几个标记。不过要明确一点,计算机上不允许使用“快速编辑”等功能。如果只有两个人,打印机就在附近,把代码用大字体打印出来,然后用几支彩笔分析也很好。教学可以帮助练习这些技能。我经常被问到如何才能掌握上述技能。我的回答是:教学。这对面试官和候选人都有好处。我自己对自己的知识水平有一个简单的标准。如果我能在没有准备的情况下讨论一个领域,我就被认为是有知识的。在软件世界中,这意味着无需按退格键即可编写完美的代码,然后能够逐步解释它的作用。如果您是那种经常被要求解释算法或API的人,那么白板编码面试可能不会有任何问题。白板编程是面试的必要部分吗?不可否认,白板编程是有帮助的。但没有它也没关系。如果有大屏幕显示代码,如果屏幕本身是白板,可以用彩笔标注。我个人喜欢鼓励其他人来白板。这样做有什么问题?原文链接:DimaKorolev翻译:伯乐在线-TonyRideBike翻译链接:http://blog.jobbole.com/65625/