个人经验教你如何准备MLE/AS的面试 -- Part 1
来自其他站点
在过去大概四个月,我自己尝试面试了一些公司的MLE/AS role,因为我自己在准备的过程中发现其实能找到的资源非常有限,所以想着在这里分享一下我自己的心得。我大概会分两到三篇写完,这是第一篇。
说明:
在 Google/Meta/Amazon/Microsoft/Apple/Tiktok/Pintest/Airbnb/Netflix公司里面,除了我工作过的公司(~5年ML经验),剩下的公司我都面过,除了一家剩下的都拿到了offer。公司不一样可能title上会有一些小的区别,但基本上都叫做MLE/Applied Scientist/Data scientist (modeling track)。在以下的说明中,我都会统称成MLE。
在面试MLE的时候,大致你会需要准备这些方面:
1. coding
这个跟SDE的coding准备没有本质的区别,你需要去刷leetcode的题,有的公司会需要compile代码然后either你自己写tests or 它有准备好的tests需要你通过。所以应该很多帖子都会告诉你基本的注意事项像:
可能唯一比较特别的是,有的公司会有专门的ML coding或者出的coding题会更数学一点,比如怎么设计一个sparse matrix (包括加减乘等运算)。这需要你懂得这些矩阵的运算大概是怎么work的。有的公司甚至可能会要求你implement一个具体的算法像kNN/k-means之类的 或者用DL framework简单写一些model implementation像transformer的矩阵运算(这种面试一般不是非常common)。所以建议的准备是对于最常用的算法你需要至少能达到写伪代码的程度。
2. ML design
这个是MLE面试和SDE面试最不一样的地方,基本上所有公司都会有一两轮考察这个。大概的面试题都是要求你按照一个实际的use case设计一个solution。比如最常见的怎么设计Youtube recommendation/doordash search box/auto suggestion/etc. 这种问题由于high ambiguity/很依赖经验,使得并不容易回答好。
我个人建议的准备方法:
而在回答这个问题的时候,我自己的prefer的框架是:
剩下的就是面试官对于某些具体的方面有什么问题了。那这个就完全取决于你的积累了。。。比如搜索中对于一个restanrant chains的搜索怎么处理;对于探索式的搜索怎么处理 (eg. movie for family); 数据量少的时候怎么办。那基本上你就会往knowledge graph/active learning/reinforcement learning/GAN等等方向扯淡了。
除了这些之外,如果对怎么准备ML knowledge,behavior question, 如果argu offer, 不同公司ML track的区别感兴趣的话。请多多加米,将会在后面几期中聊到。
补充内容 (2022-06-12 03:57 +8:00):
Part 2: instant.1point3acres.cn
说明:
- 我自己面的都是Sr role,有可能对于entry-level的面试要求会有一些不一样的。
- 不同公司本身面试也会不一样,请谨慎参考。
在 Google/Meta/Amazon/Microsoft/Apple/Tiktok/Pintest/Airbnb/Netflix公司里面,除了我工作过的公司(~5年ML经验),剩下的公司我都面过,除了一家剩下的都拿到了offer。公司不一样可能title上会有一些小的区别,但基本上都叫做MLE/Applied Scientist/Data scientist (modeling track)。在以下的说明中,我都会统称成MLE。
在面试MLE的时候,大致你会需要准备这些方面:
1. coding
这个跟SDE的coding准备没有本质的区别,你需要去刷leetcode的题,有的公司会需要compile代码然后either你自己写tests or 它有准备好的tests需要你通过。所以应该很多帖子都会告诉你基本的注意事项像:
- 像clarification questions比如有没有内存限制;input的range/format之类的
- 先跟面试官交流你大致的想法/data structure再开始coding。
- 写代码时有比较清晰的轮廓知道每个部分在做什么。
- 如果想不到最优的方法也可以start wtih一个可以跑的solution再优化。
可能唯一比较特别的是,有的公司会有专门的ML coding或者出的coding题会更数学一点,比如怎么设计一个sparse matrix (包括加减乘等运算)。这需要你懂得这些矩阵的运算大概是怎么work的。有的公司甚至可能会要求你implement一个具体的算法像kNN/k-means之类的 或者用DL framework简单写一些model implementation像transformer的矩阵运算(这种面试一般不是非常common)。所以建议的准备是对于最常用的算法你需要至少能达到写伪代码的程度。
2. ML design
这个是MLE面试和SDE面试最不一样的地方,基本上所有公司都会有一两轮考察这个。大概的面试题都是要求你按照一个实际的use case设计一个solution。比如最常见的怎么设计Youtube recommendation/doordash search box/auto suggestion/etc. 这种问题由于high ambiguity/很依赖经验,使得并不容易回答好。
我个人建议的准备方法:
- 平时的积累。如果你有自己hands-on做过end to end ML项目像define problem, find related features, modeling, offline evaluation, online deployment, monitoring, iteration, etc. 那其实就成功一半了。其实不论面试的问题是ML的哪个方向,大致的框架都是类似的。只是往框架里面填的东西不一样。所以如果你没有做ML product的经验,至少应该有offline build模型的经验,然后再通过像medium里面的一些公司的blog来积攒经验。比如像Pinterest/airbnb的blog就有很多好的use cases。平时的积累也会反应在一些追加的问题上。比如对于NLP的应用可能会问你如果文本非常长怎么处理;推荐的应用上可能会问你怎么做counterfactual evaluation。而这些问题,你如果平时就多follow state of the art多看paper参加conference听talk就会有好的多的sense。而这些不容易通过短时间的准备速成。
- 看相关的准备材料。 如果你实在经验很少,可以看看educative的ML system design/Grokking the Machine Learning Interview入门至少知道一个大致框架。比如search的问题需要分成information retrival和ranking两个步骤。如果你没有search的经验可能会一脸懵逼。。。如果你自己有不少CV/NLP/search/recommendation的经验这些课程意义不大。 然后还是跟第一点一样,可以看看相应公司的blog来了解他们主要解决的是什么样子的问题以及解决的方法。
可以去youtube里面搜索一些相关的视频。我个人发现好的比较少,但也可以找到一些好的。比如我觉得这个talk就挺不错的:youtube.com
- 看相关的paper,对于一个平时有看paper习惯的人来说,没有什么比看paper更快的准备方法了。往往一篇好的应用paper都是从问题到features到methodology到evaluation和online results来讲story的。其实跟ML design的面试非常相似。其实常见的问题的经典paper非常有限。比如 对于推荐 Deep Neural Networks for YouTube Recommendations (如果你只有时间看一篇paper,建议把这篇吃透,因为search/recommendation是最常问题的问题); 对于auto completion:Gmail smart compose: Real-time assisted writing;
对于option generation: Smart Reply: Automated Response Suggestion for Email; 对于ranking/personalization: airbnb有几篇paper写的不错等等。
而在回答这个问题的时候,我自己的prefer的框架是:
- ask clarification questions: 1) 比如像 what's the stage of the project。如果是早期可能需要考虑cold start的问题。2)traffic。这个会影响你engineering wise的robustness和latency的考虑之类的。3)assume常用的数据都log了。一般这个assumption都是成立的。不过依然建议double confirm。
- 整一个大的八股文的结构。roughly的描述主要的几个component:对于online的部分包括像 数据 (有online user data的 和 直接database fetch的),ML service, ML model artifact, logging and monitoring 对于offline的部分包括feature processing, modeling, evaluation。你应该很容易找到这个标准的design图像前面提到的那些课程里面。建议直接跟面试官画图。比如我自己很喜欢remote面试的时候准备ipad在上面直接画。这个一方面面试官会觉得你很有条理;另一方面当你讲details的时候会知道你在讲哪个方面。
- 具体的实现。这个包括: features。你会需要什么样的数据,这个需要自己多开脑洞。比如recommendation大致分成三块 document related features (like # of watches, text, video embedding), user related features (gender, geographic info
- * super important for location related search
- *, previous watches, previous searches), interaction features (distance, watched/clicked before or not, matched words), etc. 而往往你会需要了解最常用的text embedding/image embedding/id embedding的方法从而能够知道怎么处理这些非numerical的数据。 模型。这个就是整个design的meat了。你首先需要把问题建模成regression/classification/ranking/etc中的哪个问题。你对于input是怎么encode,你模型的框架什么样子(对于ranking bi-encoder vs cross-encoder vs poly-encoder,对于recommendation最常见的two-tower),然后模型的主体是一个什么模型 (往往会考察不同模型选择的优劣势logistic regression vs. random forest; LSTM vs. Transformer),然后模型的loss function怎么选择。
evaluation。你需要知道最常用的evaluation metrics像 accuracy/AUC/F1/precision/recall/MSE, 对于NLP像 perplexity/BLEU/ROGUE/BertScore, etc. 其它的部分基本不大可能聊出花来。简单的延伸像是对于不同的数据用什么方式存储,data pipeline怎么设计之类的。
剩下的就是面试官对于某些具体的方面有什么问题了。那这个就完全取决于你的积累了。。。比如搜索中对于一个restanrant chains的搜索怎么处理;对于探索式的搜索怎么处理 (eg. movie for family); 数据量少的时候怎么办。那基本上你就会往knowledge graph/active learning/reinforcement learning/GAN等等方向扯淡了。
除了这些之外,如果对怎么准备ML knowledge,behavior question, 如果argu offer, 不同公司ML track的区别感兴趣的话。请多多加米,将会在后面几期中聊到。
补充内容 (2022-06-12 03:57 +8:00):
Part 2: instant.1point3acres.cn