北美求职:秋招将至,面试中的coding关,你准备好了吗?
北美求职:秋招将至,面试中的coding关,你准备好了吗?
篱笆资讯
北美求职:秋招将至,面试中的coding关,你准备好了吗?
对于面试中的coding来说,一般有三类问题,每个面试官会被分配到一类问题。在开始面试前,面试官会收到一封email,里面会大致说明需要侧重于考察面试者的哪个方面。针对不同的coding种类,我们将给出不同的应对策略。

solid coding

这类问题主要考察面试者的coding能力是否扎实,能否快速地把自己的idea转化为code,对于面试者来说属于必考种类。new grad一般会有两轮甚至三轮这一类型的题目,有较多工作经验的面试者可能只有一轮。这类题目不过关,很有可能会被直接刷掉。

solid coding一般又可以分成两个小类:

01. 考察算法理解以及条件运用

比如find the largest integer, search in rotate array, bit manipulation等等。应对策略:如果是简单和medium的类型,需要面试者又快又好,除了勤奋和熟练,毫无捷径可走。而对于像merge sort, partition这类的基础算法,如果7-8分钟还写不出bug free,那么面试很有可能面临失败。easy问题方面,面试者应多注意边界条件,如int溢出,null pointer,负数,非法输入等。

02. 考察数据结构以及复杂程度

比如binary search tree,linked list vs array,stack,tree dfs,tree bfs等等。应对策略:简单和medium的类型,需要面试者在写代码前多阐明复杂度,这类数据结构的问题往往可以在coding前用画图来表示运行状态, 图画得清楚也是个重要的加分项。

还有一种hard类型的coding题目。这种类型的题目主要考察面试者solid coding的能力,即做事的方式和思考问题的方法。

面试官会给出一个coding任务,要求面试者从白板开始,一步步做出bug free的程序。通常而言,这类问题的过程重于结果。比如valid number,面试者需要确保每实现一个模块都没有regressgion和bug, 这比一下子实现所有的feature但是有很多bug要好很多。  

一般来说面试官会看面试者是否能够一步步分隔出小的coding模块(method), 以及如何设计test case,如何确保这些test case能cover所有的scenario,面试者是否和面试官提前做了足够的沟通并限定了coding的范围。 从这个角度来说,valid number是个很不错的solid coding面试题,值得面试者好好准备。

problem resolving

这类问题对于new grad是关键,也是能帮助求职者differentiate的关键。通俗地讲,计算机并不是只有算法,我们还需要数据库、操作系统、网络、安全等方面的知识。new grad通常在这些方面要弱一些,所以面试官希望new grad能展现出思维敏捷、多思考、快速反应的能力。problem resolving就是为了考察这个能力而诞生的。

problem resolving也可以分成四个小类型。

01. API design

这类问题是为了更深入的考察面试者对数据结构的理解与运用。例如LRU cache,design twitter等等。应对策略:首先请确保你理解了题目的意思,最好能问清点条件。例如immutable array max subarray sum,那数组将来会变吗?问清这类的问题有助于你写代码前做好重构和测试的准备。其次,如果你能证明你选择的算法的复杂度,甚至证明这就是最佳复杂度,那是一个大大的加分项,如果不能,至少你也问问面试官是不是已经满意了再开始写代码。

02. Abstraction

这类问题是考察你能不能把一个相对抽象的问题规约到你熟悉的问题上面。比如skyline problem,int stream find median,cleaning robot等等。应对策略:很多时候这一部分需要靠灵光一闪,这就需要面试者具备较强的专业敏感度。

03. 计算机小程序

例如thread pool,爬虫,日志merge,random generator等。应对策略:这类问题主要看平时积累, 也是一大类不能通过leetcode练习的问题。

04. dynamic programming问题

这类问题有点像solid problem resolving,主要考察面试者是否有systemmatic的方法来降低一个brute force程序的复杂度。这类问题一般都不是很easy的问题,根据面试官心情,可能走的很深很难,也可能最后演变成bar raiser。应对策略:面试中的动态规划大致分为单向递归(首或者尾)、O(n2)或者O(n3) 距离递归、O(mn)递归、有限定条件的NP (背包),每种类型熟悉基本原理即可。至于贪心和带状态的dp(走道铺砖)一类的dp,在面试中基本不会遇到,因为很难临时造出一道这样的题目,面试官一般也没这个能力和时间来思考题目是不是严谨。

bar raiser

这类的问题只有当onsite应聘者的数量远远大于head count的时候,或者面试者前几轮的面试明显超出了电面时的定位时才会发生。其目的是帮助公司选择最优秀的人。对应聘者来说,坏消息是要度过痛苦一小时,好消息是你能充分了解这家公司的各个方面,能充分展示你的能力,甚至可能会被越级录取。

总之,面对各类coding面试题,只要反复充实、调整应对策略,相信各位面试者都能拿下面试中的coding关。

篱笆教育,助力面试!

想要知道如何进一步提升自己的coding能力吗?快来篱笆教育吧!

篱笆教育为求职者们配备了经验丰富的导师,准备了全面且高质量的材料,在这里,求职者们可以收获导师的一对一指导、参与高含金量的实战项目,从而积累更多的经验。不仅如此,篱笆教育还会不定期开展免费的模拟面试,让名企面试官带领求职者们走出误区,赢取心仪的offer!