在和HR交流前我也查看了很多关于 Facebook 面试相关流程,正所谓知己知彼,百战百胜。HR是在新加坡的,和他交流还是用中国话,简单交流完之后就给我发了面试相关邮件,不过之后的电话面试当然得用英文了。邮件中介绍了电面相关流程,总时长45分钟左右,前5分钟自我介绍下并回答几个简单的 Android 问题,接下来的35分钟就是 coding 了,最后5分钟就是你可以问面试官几个问题。
LeetCode
面试FLAG(Facebook、Linkedin、Amazon、Google)这样的外企,数据结构和算法肯定是要过关的,并且可以脱离IDE编写代码,也就是所谓的白板编程,Facebook 是用 CoderPad (https://coderpad.io/)在线coding,题目的话着重推荐 LeetCode(https://leetcode.com/problemset/all/),所以我推荐把题目拷贝到 CoderPad 上,然后在 CoderPad 上完整地写出AC代码,如果某些APIs不熟悉的话,那就去IDE上面查一下,确保自己写出的代码等同于IDE格式化后的代码。下面附上一首诗。
明有科举八股,今有LeetCode。
八股定格式而取文采心意,LeetCode定题目且重答案背诵。
美其名曰:"practice makes perfect."
为何今不如古?
非也非也,
科举为国取士,LeetCode为Google筛码工,各取所需也。
这方面的话,幸好我大学是ACMer,数据结构和算法相关的还是有点底子的,为了方便大家,我在 GitHub 上开了
awesome-java-leetcode(https://github.com/Blankj/awesome-java-leetcode)
,其中包括了 Java 语言的 LeetCode 相关题解,觉得不错的话给个 star 吧。说句题外话,我一直都觉得数据结构和算法是作为一名程序员必须掌握和善于利用的,即便我没这个机会面试 Facebook,我也是照样会去刷 LeetCode 的,今后也会不断更新 LeetCode 题解。