1.3 Programming Language 编程语言
楼主:那面试是用哪种编程语言呢?面试官有对编程语言的偏好么?
小麥:被面试者可以选择自己擅长的编程语言,C++,Java,或者Python都可以。因为,面试看重的是你解决问题的思路,所以用什么语言并不重要。只要不滥用语言内置的函数就可以啦。比如,让你求一个数组里的第k大的元素,你不能直接调用一个返回第k大元素的内置函数。
2. OA 在线测试
楼主:可以简单介绍下OA的形式么?
小麥:OA顾名思义就是online assessment,国语是在线测试。通常情况下,你会通过电子邮件收到一个网页链接,网页链接上会有题目。在打开链接看到题目后,你需要在规定的时间(取决于题目数量,时间限制通常从半小时到两小时)内完成题目。
2.1 Due Date 截止日期
楼主:那么你在收到OA之后的什么时间做都可以么?比如一周或者一个月都可以么?
小麥:有的OA会有deadline,比如要求你在三天内的任意两个小时内完成。有的OA只是告诉你越早完成越好,就像申请学校时的rolling admission。
2.2 Question Format 题目形式
楼主:那么OA的题目是什么类型的呢?是像Leetcode上一样的算法题吗?
小麥:Leetcode形式的算法题是最普遍的一种OA形式。除此之外,另一种是多项选择(Multiple Choice),这适合用来考察基础知识与算法的时间与空间复杂度。
.google и
楼主:在做Leetcode的时候,我通常会提交很多次才能AC,我甚至还会看没有通过的test case来debug。那么OA中的算法题,我可以提交很多次直到通过么?如果没有通过,我会看到没有通过的test case么?
小麥: OA中的算法题,通常允许你提交很多次。但是,OA不会告诉你没有通过的test case具体是什么;有的甚至不会告诉你是否通过所有test case,你只能自己尽可能的完善自己的算法。所以,在平时做Leetcode的过程中,最好能自己想到各种edge case,而不是依靠Online Judge来debug。下面是一个常见的OA界面。
.google и
小麥:以上介绍的是码农的OA。有些Data Scientist的岗位也会发OA。Data Scientist的OA和码农的OA非常不同,Data Scientist的OA比较开放,会给你数据集,让你自己研制出合适的算法来做预测。通过预测的准确度来评价(evaluate)你的solution。
. 2.3 How many OAs have you done?
楼主:那么面试一个岗位会有OA呢?
小麥:一个岗位通常只有一个OA。如果你申请同一个公司的不同岗位,不同岗位可能会有不同的OA。
楼主:我相信大部分人在平时都是在电脑上写code的,而不是在白板上写码。对于需要white-boarding的被面试者,你有什么建议么?
小麥:的确,白板写码和在电脑上写还是非常不一样。
在白板上,你当然不能compile & run test cases来debug。 .--此外,白板写码在物理上也会让人不适应。比如,在白板上写字的速度慢于在电脑上打字的速度。你不能把一段code剪切一下,然后粘贴到另外一个地方。你也不能直接在两行之间直接插入一行。
我强烈建议被面试者进行白板编程的实战演练:找几道不是那么复杂的题,自己在白板上写一写,体验下是什么感觉。即使没有白板,也墙裂建议面试者在白纸上写代码来训练white-boarding的能力。
小麥:最后补充一点,我面的Bloomberg的on-site是,Bloomberg在现场提供了电脑,我直接在电脑上进行编程的。就和Bloomberg之前的phone interview一样,在一个网页上写代码,还能compile & run test cases。但Bloomberg不是大型科技公司[手动滑稽]。