在 Coding Interview 中,有的人常常很困惑:
我是要一边写代码,一边跟面试官沟通,还是一阶段沟通一下?
我说太多,面试官会不会觉得啰嗦呢?
再回答这个问题之前,我们需要先了解,Coding 面试中的沟通主要考察的是什么?
在 Coding Interview 中,首先,也是最重要的,是需要通过沟通过程,考察你处理模糊信息的能力,即 Ability dealing with ambiguous。
这听起来可能没那么重要,但却是面试官重点考察的内容。因为我们在平时刷题时,题目十分清晰,也会给出一些范例。但是我们工作时会遇到很多少量、模糊的信息,并且要根据手头有限的信息去完成某项工作,这时这个能力就显得格外重要。
为了评估面试者处理模糊信息的能力,面试官会问我们这样的问题:
Given alist of list of files, find all duplicates
那么我们这时该怎么处理模糊信息呢?
在这个例子里,这里的"duplicates"便是所谓“模糊信息”。是文件名?还是文件内容呢?这时你需要与面试官clarify的内容。
Write a method to convert numbers into English?
Input: 100->one hundred
Input: 1001->one thousand and one
Input: 12543->twelve thousand five hundred forty three
那么这道题你该问面试官什么呢?
在这道面试题中,模糊信息更多,更不明确。比如input的数可以是负数么?可以是小数么?上限是多少?Input的是longlong还是string?再有就是一个数怎么读的问题,每种语言的读法都不一样,像是1234,是读作twelve thirty four呢还是one thousand two hundred thirty four呢?这就是你需要从面试官哪里中问清楚的问题。
那么你就可以这么问:
What's the input type?
Do we need to consider the situation where it might overflow?
Follow up: Inputis a string contains multiple numbers
这回该注意些什么了呢?
分隔符是什么?
需要什么样的输出?
作为一个软件工程师,展示给面试官你可以考虑到所有的情况,会给你的面试加分很多。不要怕啰嗦,你想如果这个题目真的这么模糊,那到底是啰嗦扣得分多,还是做错了扣得分多呢?
当然也不要为了问问题而问问题,当题目真的模糊的时候,要为了问清楚而问问题。有的人可能纠结于跟面试官沟通的频率。比如,到底要不要边 Coding 边解释。这个其实要根据你自己的实际情况来判断的。比如,你边说边code会觉得分心,那就不要一直边说话边code,而是集中精神把题解出来才是王道。也就是说,在 Coding 面试中,最重要的仍然是 Coding。是否需要 Communication,取决于 Coding 中是否有模糊信息需要向面试官澄清或者说明。要是单纯为了给面试官展示自己多具交流能力去问,就可能会弄巧成拙了。
《九章算法班》
《系统设计班》
《Big Data 项目实战班》
《Android 项目实战班》
《算法强化班》
正在报名中!
报名登陆官网www.jiuzhang.com
或点击文末“阅读原文”
版权归属九章算法,谢绝转载。