如何准备算法岗位面试?你需要知道的都在这了

写在前面:

众所周知,算法岗位现在可谓是神仙打架,竞争压力非常大,但这篇文章的目的并不是为了劝退,而是将要准备算法面试的知识梳理一下,让你有一个清晰的脉络,从而从容应对算法面试,找到心仪的工作。

先介绍一下我的情况,本科来自一所双非的普通院校,非计算机专业,研究生考研到南京大学计算机系,在秋招中拿到了三家大厂的offer,最后选择了字节跳动的算法岗位。感觉对于我一个非科班出身,既没有论文,也没打过ACM的人来说,算是一个非常好的归宿了。这里需要提一下,一个好的实习非常重要。实习并不需要在一个特别好的公司,但是一定要做一些有技术性的工作,而不是单纯的干苦力活。

这篇文章主要会介绍一些算法岗位面试中需要了解的知识。


一、了解面试

想要应对面试,第一步是先了解面试,现在的面试流程基本都包括:

  1. 电话面试:作为一个初筛阶段,主要考察候选人的数据结构与算法知识,可能会夹杂着一些机器学习相关的知识
  2. 视频面试或线下面试,主要会涵盖以下内容
    1. 更多的考察数据结构与算法知识,以及机器学习编程,考察编程能力
    2. 机器学习的理论问题,考察对机器学习常见算法的理解
    3. 机器学习的系统设计,考察部署一个完整的机器学习系统,需要了解的一些知识
    4. HR面试

根据面试内容,我们可以将面试涵盖的问题分为以下三个部分,然后逐个击破:

  1. 编程相关,数据结构与算法,机器学习编程
  2. 机器学习理论
  3. 机器学习系统设计

二、编程相关

数据结构与算法

首先是数据结构与算法的准备,这里主要就是利用好 LeetCode

一个小的建议:在刷题过程中,可以制作一个电子表格,记录一些比较困难的问题,以及对应的解决算法。便于之后复习,同时也能够了解到自己哪块比较薄弱,针对性练习。

英语基础比较好的同学,推荐一本比较基础的算法书(100页左右),如果有时间的话可以看看,没有时间的话还是要多做一些实际的题目,这本书有Java、Python和C++版本的:https://elementsofprogramminginterviews.com/sample/

机器学习编程

虽然在面试过程中可能不太好考察机器学习的编程能力,但是因为大家实际使用中可能都是调库,所以有时候虽然是一个非常简单的算法,但是真要构思实现起来也比较困难。之前见牛客网有人面试被出了手写KNN算法,虽然是一个非常基础的机器学习算法,但是可能没有多少人能够在面试环境中手写出来吧。

这里推荐一个非常好的资源,里面有各种常见机器学习算法的简洁实现:https://github.com/rushter/MLAlgorithms

三、机器学习理论相关

想要寻找算法工程师岗位,下面这些技术是必须知道的,算是基础中的基础:

  • 线性回归
  • 逻辑回归
  • KNN
  • 基于树的算法相关:决策树、随机森林、bagging和boosting、KL散度、熵等
  • SVM
  • 基础的聚类算法(K-Means)和EM算法
  • PCA降维算法相关:奇异值分解和特征值
  • Naive Bayes
  • 最大似然估计

下面是一些深度学习相关的技术,在这些话题中,至少需要知道经典的神经网络结构;然后其余话题,需要根据自己之前所做的项目和简历上的内容进行准备:

  • 经典神经网络结构相关:前馈网络、RNN、LSTM、CNN、Attention等
  • 生成对抗网络
  • 自然语言处理
  • 计算机视觉
  • 推荐算法
  • 信息提取
  • 强化学习

在上述话题中,有一些非常共通的技术,这些也是面试过程中经常考察的,需要重点了解:

  • 激活函数
  • 常见优化器,如SGD,Adam和RMSProp
  • 损失函数,如log-loss,hinge loss,,Huber loss,L1和L2 loss
  • 评价指标:Precision和Recall,IOU,F1值,RMSE
  • 特征选择
  • 特征工程,关于这个可以看看Kaggle上的教程:https://www.kaggle.com/learn/feature-engineering

上述技术相关的一些学习资源:

当这些知识都学习的差不多以后,可以通过以下测验看自己是否掌握良好:

四、系统设计

系统设计虽然不是面试时候一定会问到的,但是,这些知识将来工作的时候一定会用到,所以可以早做准备,而且有时候确实也会被问到。

那么如何设计完整一个机器学习系统呢?包括以下的步骤:

  1. 明确需求,这个是所有后续的基础。包括需要多少数据、硬件条件、模型复杂度和效率的tradeoff,如何评价我们的模型效果等等
  2. 网络结构,至少需要包括以下几个部分:
    1. 数据获取和处理,可能涉及到标注
    2. 特征选择和特征工程
    3. 额外的一些考量:数据是否和将来实际场景中的数据有偏差(bias),如果有,该如何解决
  3. 整体架构。这一步主要考察对各个模型的理解,需要能够知道每个模型的优缺点,什么场景下适用于哪一个模型
  4. 线上服务。部署模型上线需要考虑以下的因素:
    1. A/B 测试的效果
    2. 模型是否会带来偏差
    3. 需要多久重新训练我们的模型
    4. 在哪里执行模型的推导(inference),服务器端还是用户端,如果是用户端可能需要进行模型蒸馏

关于系统设计可以参考的一些资料:


写在后面:关于算法工程师面试需要准备的知识就介绍到这里了,如果还有什么问题,欢迎评论或者私信和我交流。祝大家都能够找到心仪的工作,最后,如果觉得这篇文章对你有帮助,欢迎点赞收藏支持我,谢谢!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容