白板编程,编程面试中的特点

白板编程,编程面试中的特点

原文链接:白斑编程浅谈
选取了一些与己有关的东西

技术面试中常见的问题

  1. 编码:考察面试者的编码能力,一般要求面试者在 20 ~ 30 分钟之内编写一段需求明确的小程序(例:编写一个函数划分一个整形数组,把负数放在左边,零放在中间,正数放在右边);
  2. 设计:考察面试者的设计/表达能力,一般要求面试者在 30 分钟左右内给出一个系统的大致设计(例:设计一个类似微博的系统)
  3. 项目:考察面试者的设计/表达能力以及其简历的真实度(例:描述你做过的 xxx 系统中的难点,以及你是如何克服这些难点)
  4. (已绝迹)脑筋急转弯:考察面试者的『反应/智力』(例:如果你变成蚂蚁大小然后被扔进一个搅拌机里,你将如何脱身?)
  5. 查漏:考察面试者对某种技术的熟练度(例:Java 的基本类型有几种?)

以上,第一点几乎是面试中无法逃避的内容,而除了有上机编程的情况外,还有经常出现的情况是白板面试,在不使用熟悉的IDE或编辑器。(IDE可以智能提示,帮助编译,调试程序找出bug)

白板编程面试的目的

通过白板编程,面试官可以有效的判定出面试者属于前者还是后者,从而招进合适的人才,并把老油条或是嘴遁者排除在外。除了判定面试者的开发效率,白板编程还有助于展示面试者的编程思路,并便于面试者和面试官进行交流。

白板编程的目标并不是要求面试者一下子写出完美无缺的代码,而是:

  • 让面试者在解题的过程中将他/他的思维过程和编码习惯展现在面试官面前,以便面试官判定面试者是否具备清晰的逻辑思维和良好的编程素养。
  • 如果面试者陷入困境或是陷阱,面试官也可以为其提供适当的辅助,以免面试陷入无人发言的尴尬境地。

合适白板编程面试的题目

首先是不适合白板编程的题目:

  • 这里边,毕业生常见的就是编程之美,july的算法博客,和leetcode。这些算是被问烂的编程题,很多面试者只求记住,不求甚解。(当然,作为被面试者,刷通leetcode也许对自己的算法能力提高很有帮助)
  • 脑筋急转弯类型的题目
  • 复杂库或API调用
  • 直接的基本算法

适合的题目:
技术面试题目不应该太难,也不应太简单,不能是脑筋急转弯,也不能直接来自网络。

强烈注意《编程珠玑》《TAOCP》后边的练习题。

  • 不止一种解法,而有最优解
  • 考察点比较明确
  • 可延伸

面试者该如何准备

  1. 拥有扎实的数据结构/算法基础
  2. 知道如何利用 前条件/不变式/后条件 这些工具编写正确的程序
    能够在白板(或纸上)实现基本的数据结构和算法(如果 1 和 2 做到这一步是水到渠成)
  3. 在 leetcode 或 careercup 上面进行过练习,了解常见的技术面试题目(我个人不鼓励刷题,但在面试前建立起对面试题的『感觉』非常重要)

面试中:
确定需求:输入,输出,数据范围,时间要求,空间要求,其他限制。

  • 先写出轮廓(大纲)
    白板编程没法复制粘贴,所以后期调整代码结构非常困难。因此我们最好在开头写出程序的大致结构,从而保证之后不会有大改;

  • 确定前条件/不变式/后条件
    我们可以通过注释的形式给出代码的前条件/不变式/后条件

  • 使用实例数据验证自己的程序
    尽管不变式足以验证程序的正确性,但适当的使用实例数据会大大增强代码的可信性

  • 使用缩写
    白板编程并不需要面试者在白板上写出能够一次通过编译的代码。为了节省时间,面试者可以在和面试官沟通的基础上使用缩写。例如使用 Iter 替代 Iterable,使用 BQ 替代 BlockingQueue。(此法尤其适合于 Java –_–#)

  • 至少留一行半行宽
    出于紧张或疏忽,一般面试者在白板编程时会犯下各种小错误,例如忘了某个判断条件或是漏了某条语句,空余的行宽可以帮助面试者快速修改代码,使得白板上的代码不至于一团糟。

不会做怎么办

  1. 至少先给出一个暴力(Brute force)解法
  2. 寻找合适的数据结构(例如栈/队列/树/堆/图)和算法(例如分治/回溯/动态规划/贪婪)
  3. 从小数据集开始尝试
  4. 如果还是没有头绪,重新考虑题目的前条件,思考是否漏掉了条件(或是隐含的条件)
  5. 如果 3 分钟过后还是没有任何思路,请求面试官提示,不要觉得不好意思——经过提示给出答案远强于没有答案
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • 当我最初开始参加编程面试的时候,我所有最心仪的公司都忽视了我。现在回头看那个时候,我发现自己当时去参加面试都完全没...
    bd3250545d54阅读 1,302评论 1 21
  • 这是一个很难记录的故事,因为一提起这个故事,我就会深陷在恐惧中。 悟能先生是一位中年上班族,至少我认识他的时候,他...
    limbopan阅读 142评论 0 0
  • 闲暇时,总喜欢摆弄摆弄阳台上的那些多肉绿植,或盆栽或水培。 一株株小小的多肉,在暖阳的照耀下,随意而安静地生长着,...
    墨痕愫语阅读 600评论 10 17
  • 人生有情,但是当人情与人生两难全时,怎么选择? 转眼进入职场两年了,从懵懂的小白,变成领导信任的助手,熟悉了一些职...
    星蘭阅读 287评论 0 1