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

2015-09-09  本文已影响865人  刀背藏身

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

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

技术面试中常见的问题

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

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

白板编程面试的目的

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

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

合适白板编程面试的题目

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

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

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

面试者该如何准备

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

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

不会做怎么办

  1. 至少先给出一个暴力(Brute force)解法
  2. 寻找合适的数据结构(例如栈/队列/树/堆/图)和算法(例如分治/回溯/动态规划/贪婪)
  3. 从小数据集开始尝试
  4. 如果还是没有头绪,重新考虑题目的前条件,思考是否漏掉了条件(或是隐含的条件)
  5. 如果 3 分钟过后还是没有任何思路,请求面试官提示,不要觉得不好意思——经过提示给出答案远强于没有答案
上一篇下一篇

猜你喜欢

热点阅读