在过去大概四个月,我自己尝试面试了一些公司的MLE/AS role,因为我自己在准备的过程中发现其实能找到的资源非常有限,所以想着在这里分享一下我自己的心得。我大概会分两到三篇写完,这是第二篇。如果你没看过第一篇(主要讲解coding, ML Design),非常建议看完了再来看这篇:https://www.1point3acres.com/bbs/thread-901595-1-1.html。也非常感谢很多小伙伴对我的支持。
. 1point3acres
说明:. 1point 3 acres
我自己面的都是Sr role,有可能对于entry-level的面试要求会有一些不一样的。
不同公司本身面试也会不一样,请谨慎参考。. check 1point3acres for more.
. check 1point3acres for more.
在 Google/Meta/Amazon/Microsoft/Apple/Tiktok/Pintest/Airbnb/Netflix公司里面,除了我工作过的公司(~5年ML经验),剩下的公司我都面过,除了一家剩下的都拿到了offer。公司不一样可能title上会有一些小的区别,但基本上都叫做MLE/Applied Scientist/Data scientist (modeling track)。在以下的说明中,我都会统称成MLE。
3. ML knowledge
. check 1point3acres for more.
有的公司会有专门的ML knowledge轮,有的ML knowledge会在design中连带问道。我的感觉是绝大多数公司MLE面试对ML Knowledge并不深,相对来说如果你面试的title是Scientist的情况会更加注重一些。这也非常好理解,MLE本质更在乎engineering所以对hands-on的要求更高一些。当时实际上不同title做的东西不会有很大差异。
对于ML knowledge, 基本上你需要准备这几块:
. 1point 3acres
Traditional ML algorithms. 这个主要分成几个方面:i) GLM like linear regression, logistic regression。GLM其实可以问的非常深如果你碰到一个统计PhD背景的面试官建议不要深聊... ii) random forest; iii) GBM熟透。当然还有很多别的传统算法像gaussian process, SVM, graph, clustering, etc。我自己基本上只准备这三个。因为它们最常被问到,然后如果你不熟悉会是比较明显的red flag。你往往需要非常认真的知道这些算法的每一个details。比如常见的问题包括:i) Logistic regression和naive bayes的区别; ii) random forest每个node怎么做split. iii) GBM中的gradient怎么定义, etc.
Algorithms in your specialized area. 这个会因人而已,毕竟每个人过去做的方向不大一样。当然更普遍的是NLP/CV/RL。我自己做NLP比较多,准备面试都会把stanford cs224n重新看一遍。 而对于NLP/CV之类的方向你需要懂deep learning和常用的模型。你需要了解: 1) 里面的deep learning的知识像dropout/activation functions, etc. 2) 模型的具体架构。像RNN/Transformer的架构和各自的优劣势。每一层大致是什么样的。
常用的ML concepts很了解像bias-variance tradeoff/overfitting vs. underfitting/regularization, etc。我甚至被直接问到过手写loss function然后手动计算gradient(当然这个uncommon)。
Probabilities and Statistics。我见到问这些问题的并不多。一般DS的面试会更常问到。但我自己作为面试官挺喜欢问别人的,因为这些基础决定着你是一个调包侠还是一个能在算法上有innovation的人。常见的问题比如一些跌骰子的概率计算; 给你一些visitors and conversations,怎么计算significance; 什么是type I/II error; 等等。
我有个项目,刚开始的时候我通过分析方向有很好的潜力并且得到了leadership的support,并且在做的过程中跟leadership保持着持续的交通。但后来我们通过online的表现发现customer其实并不buy-in这个feature,并不能给business metrics带来很好的提升。所以跟leadership讨论之后,我们决定de-prioritize这个项目。虽然我感到很挫败,但我学到了A/B/C并运用到了后面的项目中,从而渐渐的能够更好的fail fast fail early。