0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么程序员面试时会要求白板编程

工程师人生 来源:网络整理 作者:工程师吴畏 2018-11-20 16:52 次阅读

在技术评估中的检查方法

白板编程可以检查出两方面的技能:

从一开始就可以写简洁的代码,以及

知其代码之所以然。

这两大技能对于一个出色的软件开发人员是至关重要的。通过进行白板编程,这两种技能都能被准确地检验出来。

从一开始就写简洁的代码。

不管我们是否喜欢,现代软件工程主要在于知道足够的模式,并在正确的规则中使用正确的模式。

几天甚至几周后的工作的结果,通常只是修改几百行的代码。

表面上看,原来的开发人员在写代码时需要多少协助并不重要。他们可能在写代码之前,在脑子里就已经想好所有细节了。或者也有可能他们写每一行代码的时候都查阅了API文档、实例、或者语法指导。

但是当我们深入探究的时候,就会发现这其中有很大差异。

理解概念要比理解现象更重要。

一段代码变得越复杂,仅仅依靠一些开发模式的知识去开发就会变得更难,甚至理解代码都会很艰难。

好的白板编程练习,可以检查出一个人到底是理解概念,还是通过记住大量模式来掩盖其基础知识的匮乏。

当我们问到“你最擅长哪种编程语言?”我们其实并不是想要简洁的代码。我们只是在寻找一个切入点,能深入了解一个人,看看他到底有多大能耐。

这里简单总结一下根据“候选人熟悉哪一领域”来决定“在面试中需要涉及哪些方面”:

面向对象编程——多继承,虚拟方法,对象构建与析构顺序,异常处理。

前端——异步逻辑与终止,REST API,验证用户输入。

算法与数据结构——动机,用法,平均及最差情况下的复杂度。

后端与架构——内存模型,垃圾处理机制,多线程,线程锁机制,benchmarking, profiling。

函数式编程——Lambdas,curring,排序操作,一元。

内核层次——文件系统,网络,POSIX,协议,标准的检验与分析工具。

测试——单元测试,逆向测试和端对端测试,必要测试,基于模型的测试,测试驱动的和行为驱动的开发,集成测试。

和候选人谈到上面这些的时候,最好的方法是从举一个例子开始。最好的例子就是让他们自己写一个短小简单的例子。

实际中,候选者写的大多数代码片段都是不完美的。这就提供了一个绝好的机会,看看候选者到底有多少知识。

白板编程很有用,是因为:

有限的写代码空间。

有限的写代码速度。

修改很麻烦,最好要避免。

没有补全,语法高亮和其他IDE的牛逼功能。

想明白代码到底要干嘛。

过一遍代码片段是如何运行的,这是非常好的练习。做技术面试的时候,绝对不要跳过。

如果代码写的是一个算法,有人可以写出所有步骤,有人可以考虑到特殊情况,有人可以写出不变式(invariants)并能证明。有人可以根据每个独立循环结构和递归调用解释其复杂性。

如果代码是面向对象编程,有人可以明确指出其具体功能,对象在何时如何被创建,如何被销毁,什么时候以什么样的顺序会调用构建与析构函数,以及异常出现会怎样,内存布局看起来是什么样的。

I代码是否整洁,或是否包含明显的bug,这非常重要。

观察候选人认真解释代码每一步实现的功能,可以了解他们的思考与说话方式。以及他们在其他领域有多深的了解。

最后,这些都是在技术面试中要用到的检验技巧。而不是使用API和使用IDE完成特定任务的技巧。

白板编程很有用,是因为:

白板上的内容或多或少是不变的。

用不同颜色的笔标出“候选人的原始代码”、“面试官的评论”、“候选人评论”,可以很好的将对话可视化。

不用白板是否有办法做到上面这些技巧呢?

能,也不能。

对于写整洁的代码,我觉得可以让候选人在自己的笔记本电脑上写。

但是要有这些条件:

代码要用投影仪投射在大屏幕上

字体要非常大。

关掉大多数IDE的牛逼功能。

要知道,在不熟悉的操作系统、键盘甚至是编辑器上,相比在白板上编程可能会更难。要么让他们在自己的电脑上写程序,要么确认你提供的环境他们能够接受。

至于理解代码的部分,白板要更有利。

理想情况下,如果是投影仪的影像就是投放到白板上,我会让候选人把投放投射的白板上,面试官再拿几支记号笔。

不过我要说明白,电脑上不允许使用“快速修改”之类的功能。

如果只有两个人的话,打印机又在旁边,那就用用大字体打印出代码,然后用几支彩色笔去分析也非常好。

教学可以帮助练习这些技巧。

我经常被问到,一个人要如何掌握上面的这些技巧。我的答案就是:教学(teaching)。

这对面试官和应聘者都是有益的。

我自己对我的知识水平有一个简单标准。如果我可以对一个领域不做准备就能进行讨论的话,我就算是有丰富的知识了。

在软件领域,这就意味着不用点退格就写出完美的代码,然后能一步一步解释它是做什么的。

如果你是那种经常要被叫过去解释一个算法或者API的人,那你基本上就不会对白板编程面试感到有困难。

白板编程是面试的必要环节么?

不可否认,白板编程很有帮助。但没有它也可以。

如果有一个大屏幕可以显示代码,如果屏幕本身就是个白板,可以在上面用彩色笔进行注释。

我个人喜欢鼓励别人走到白板前。而且这样做有什么不好呢?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    88

    文章

    3595

    浏览量

    93609
  • 程序员
    +关注

    关注

    4

    文章

    950

    浏览量

    29768
收藏 人收藏

    评论

    相关推荐

    Linux驱动程序程序员指南

    电子发烧友网站提供《Linux驱动程序程序员指南.pdf》资料免费下载
    发表于 11-22 15:53 0次下载
    Linux驱动<b class='flag-5'>程序</b><b class='flag-5'>程序员</b>指南

    AI编程工具会不会抢程序员饭碗

    AI编程工具可辅助编程,减少手动编码,提升效率,对程序员有积极影响也有挑战。程序员需深化技能、拓宽知识应对。长远看,AI与人类程序员将共生共
    的头像 发表于 11-08 10:17 115次阅读

    程序员面试只需一个技能征服所有面试官!

    为什么要学嵌入式?面试各方面感觉都良好,为啥最后给毙了?在这么多技术活儿里,嵌入式开发为啥这么吃香?嵌入式开发找工作,为何更容易?……来,来,来,看看不为人知的内部消息!就像我最近听说的这个事儿,有
    的头像 发表于 11-05 19:35 153次阅读
    <b class='flag-5'>程序员</b>去<b class='flag-5'>面试</b>只需一个技能征服所有<b class='flag-5'>面试</b>官!

    第五届长沙·中国1024程序员节开幕

    据官方媒体报道,10月24日;  第五届长沙·中国1024程序员节在湖南湘江新区开幕;本次中国1024程序员节以“智能应用新生态”为主题。设置有岳麓对话、技术英雄会、主题峰会及赛事、展览等活动,一场
    的头像 发表于 10-25 15:42 164次阅读

    程序员节视频创意大赛,用串口屏赢取千元大奖

    10月24日,程序员专属的节日里,我们盛大开启“程序员节视频创意大赛”特别活动!这不仅是一场视觉的盛宴,更是智慧与创意的璀璨碰撞。我们诚挚邀请每一位程序员编程爱好者,拿起你的镜头,记
    的头像 发表于 07-08 10:38 72次阅读
    <b class='flag-5'>程序员</b>节视频创意大赛,用串口屏赢取千元大奖

    程序员节视频创意盛宴,邀您共襄盛举!

    10月24日,程序员专属的节日里,我们盛大开启“程序员节视频创意大赛”特别活动!这不仅是一场视觉的盛宴,更是智慧与创意的璀璨碰撞。我们诚挚邀请每一位程序员编程爱好者,拿起你的镜头,记
    的头像 发表于 07-04 09:00 67次阅读
    <b class='flag-5'>程序员</b>节视频创意盛宴,邀您共襄盛举!

    数控程序编程通常可分为哪两大类

    编程的定义 手工编程是指数控程序员根据零件的加工要求和机床的性能,通过人工编写数控程序的过程。手工编程
    的头像 发表于 07-01 14:17 943次阅读

    适者生存,程序员最终会流向哪……

    程序员没有永远的护城河!!就目前的互联网大环境来看,it行业已经是……
    的头像 发表于 03-11 17:11 389次阅读
    适者生存,<b class='flag-5'>程序员</b>最终会流向哪……

    PSoC™ kit59开发KIT_A2G_TC387_MOTORCTR中是否存在程序员支持对PSoC™ 1系列MCU进行编程

    PSoC™ kit59 开发KIT_A2G_TC387_MOTORCTR中是否存在程序员支持对PSoC™ 1 系列 MCU(如 cy8c29466、cy8c27xxx、cy8c21xxx)进行编程
    发表于 03-05 06:47

    瑞萨Flash程序员V3 发布说明

    电子发烧友网站提供《瑞萨Flash程序员V3 发布说明.pdf》资料免费下载
    发表于 02-19 09:37 1次下载
    瑞萨Flash<b class='flag-5'>程序员</b>V3 发布说明

    2024程序员的未来方向如何走?还看今朝

    这几年的IT行业想必大家已经感受到了,Android、Java、前端等等程序员都经历了大厂……
    的头像 发表于 02-02 09:45 785次阅读
    2024<b class='flag-5'>程序员</b>的未来方向如何走?还看今朝

    1月18号“纯鸿蒙”千帆启航,程序员预备!

    。 如何正确看待鸿蒙? 我作为程序员来说,首先是看鸿蒙的发展、市场开发岗位、薪资以及前景。 这几年对鸿蒙的发展情况来分析,从2019年开始鸿蒙的出来今天,华为鸿蒙取得了很大的成就。从“不兼容
    发表于 01-16 22:13

    “GPT 驱动的新程序员时代 ,我们该如何编程”分论坛圆满举办

    的 AI 工具已经将全球的知识库和代码库变得触手可及,只要有足够的创造力和想象力,几乎每个人都能成为“新程序员”。在这一背景下,软件工程领域正在经历一场巨变,那么开发者如何适应这种变化? 12 月 17 日,2023 开放原子开发者大会
    的头像 发表于 12-25 14:40 419次阅读
    “GPT 驱动的新<b class='flag-5'>程序员</b>时代 ,我们该如何<b class='flag-5'>编程</b>”分论坛圆满举办

    “GPT驱动的新程序员时代 ,我们该如何编程”分论坛圆满举办

    工具已经将全球的知识库和代码库变得触手可及,只要有足够的创造力和想象力,几乎每个人都能成为“新程序员”。在这一背景下,软件工程领域正在经历一场巨变,那么开发者如何适应这种变化? 12 月 17 日,2023开放原子开发者大会的
    的头像 发表于 12-21 19:35 367次阅读

    诚邀报名 | GPT驱动的新程序员时代,开发者如何编程

    2023开放原子开发者大会 . OPENATOM DEVELOPERS CONFERENCE GPT驱动的新程序员时代 我们该如何编程 2023.12.17 生成式AI正以旋风般的速度重塑我们的工作
    的头像 发表于 12-11 22:20 517次阅读