ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
技术面试中的问题大致可以分为 5 类: 1. 编码:考察面试者的编码能力,一般要求面试者在 20 ~ 30 分钟之内编写一段需求明确的小程序(例:编写一个函数划分一个整形数组,把负数放在左边,零放在中间,正数放在右边); 2. 设计:考察面试者的设计/表达能力,一般要求面试者在 30 分钟左右内给出一个系统的大致设计(例:设计一个类似微博的系统) 3. 项目:考察面试者的设计/表达能力以及其简历的真实度(例:描述你做过的 xxx 系统中的难点,以及你是如何克服这些难点) 4. 脑筋急转弯:考察面试者的『反应/智力』(例:如果你变成蚂蚁大小然后被扔进一个搅拌机里,你将如何脱身?) 5. 查漏:考察面试者对某种技术的熟练度(例:Java 的基本类型有几种?) 这 5 类问题中,脑筋急转弯在外企中早已绝迹(因为它无法判定面试者的真实能力),查漏类问题因为实际价值不大(毕竟我们可以用 Google)在外企中出现率也越来越低,剩下的 3 类问题里,项目类和设计类问题要求面试官拥有同类项目经验,只有编码类问题不需要任何前提,所以,几乎所有的技术面试中都包含编码类问题。 然而,最令面试者头痛的也是这些编码类问题——因为几乎所有的当面(On-site)技术面试均要求面试者在白板上写出代码,而不是在面试者熟悉的 IDE 或是编辑器中写出。在我的面试经历里,不止一个被面试者向我抱怨:『如果能在计算机上编程,我早就把它搞定了!』就连我自己在面试初期也曾怀疑白板代码的有效性:『为什么不让面试者在计算机上写代码呢?』 然而在经历了若干轮被面试与面试之后,我惊奇的发现白板编程竟然是一种相当有效的技术考察方式。这也是我写这篇文章的原因——我希望通过这篇文章来阐述为什么要进行白板编程(WHY),什么是合适的白板编程题目(WHAT),以及如何进行白板编程(HOW),从而既帮助面试者更好的准备面试,也帮助面试官更好的进行面试。