Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >春招已近,这份GitHub万星的ML算法面试大全请收下

春招已近,这份GitHub万星的ML算法面试大全请收下

作者头像
IT派
发布于 2019-06-10 07:57:04
发布于 2019-06-10 07:57:04
53800
代码可运行
举报
文章被收录于专栏:IT派IT派
运行总次数:0
代码可运行

春季到来,春招不久也会开始。在本项目中,作者为大家准备了 ML 算法工程师面试指南,它提供了完整的面试知识点、编程题及题解、各科技公司的面试题锦等内容。目前该 GitHub 项目已经有 1 万+的收藏量,想要跳一跳的同学快来试试吧。

  • 项目地址:https://github.com/imhuay/Algorithm_Interview_Notes-Chinese

如下所示为整个项目的结构,其中从机器学习到数学主要提供的是笔记与面试知识点,读者可回顾整体的知识架构。后面从算法到笔试面经主要提供的是问题及解答方案,根据它们可以提升整体的解题水平与编程技巧。

面试知识点

面试题多种多样,但机器学习知识就那么多,那么为了春招或春季跳槽,何不过一遍 ML 核心知识点?在这个 GitHub 项目中,作者前一部分主要介绍了机器学习及各子领域的知识点。其中每一个知识点都只提供最核心的概念,如果读者遇到不熟悉的算法或者遇到知识漏洞,可以进一步阅读相关文献。

项目主要从机器学习、深度学习自然语言处理和数学等方面提供详细的知识点,因为作者比较关注 NLP,所以并没有提供详细的计算机视觉笔记。

机器学习

首先对于机器学习,项目主要从基础概念、基本实践、基本算法和集成学习专题这四个方面概括 ML 的总体情况。其中基础概念可能是最基本的面试问题,例如「偏差方差怎么权衡?」、「生成模型和判别模型的差别是什么?」、「先验和后验概率都是什么,它们能转换吗?」。

这些知识点一般是入门者都需要了解的,而对于 ML 基本实践,主要会从如何做好传统 ML 开发流程的角度提问。例如「你如何选择超参数,能介绍一些超参数的基本搜索方法吗?」、「混淆矩阵、准确率、精确率、召回率或 F1 值都是什么,如何使用它们度量模型的好坏?」、「你能介绍数据清洗数据预处理的主要流程吗,举个例子?」。

这些问题都能在前两部分的知识点中找到答案。后一部分的基本算法就非常多了,从最简单的 Logistic 回归到复杂的梯度提升树,这一部分总结了主流的机器学习算法

  • 信息论
  • 逻辑斯蒂回归
  • 支持向量机
  • 决策树
  • 集成学习
  • 梯度提升决策树 GBDT
  • 随机森林

其中每一种算法都提供了最核心的概念,例如对于决策树中的 CART 算法,笔记主要引用了李航《统计学习方法》中的描述:

最后机器学习还有一个关于集成方法的专题。除了支持向量机,集成方法相关的问题在 ML 中也比较重要,因为像 XGboost 和随机森林等方法在传统 ML 中效果应该是顶尖的,被问到的概率也大得多。

深度学习

深度学习的内容就相对比较多了,目前也有非常多的笔记或资料,但是我们可能会感觉深度学习的问题并没有机器学习难。顶多会让我们手推一个反向传播算法,不会像手推支持向量机那样让我们从表达式推一下卷积网络。如果要为深度学习打基础,其实最好的办法是学习 Ian Goodfellow 的《Deep Learning》,我们只要阅读这本书的前两部分:应用数学与机器学习基础;深度网络:现代实践。第三部分因为涉及大量前沿研究的东西,我们暂时可以不急着学。

该项目主要从以下几个方面介绍深度学习面试知识点:

  • 深度学习基础
  • 深度学习实践
  • CNN 专题
  • RNN 专题
  • 优化算法专题
  • 序列建模专题
  • 《Deep Learning》整理

前面 6 个专题都是介绍的笔记,每一个专题都有非常多的具体内容,其中序列建模专题还引用了机器之心综述的从循环到卷积,探索序列建模的奥秘。如下展示了优化算法专题所包含的内容:

在最后的《Deep Learning》整理中,项目作者给出了五十多道深度学习问题,并根据这些问题介绍《Deep Learning》中的知识点。如下为问题示例,不同的星号表示问题的难度:

自然语言处理与数学

后面的自然语言处理也是最近在重点更新的,目前介绍的方面主要有;

  • 自然语言处理基础
  • NLP 发展趋势
  • 词嵌入专题
  • 句嵌入专题
  • 多模态专题
  • 视觉问答综述
  • 深度理解查询

NLP 很多知识点其实都不算基础内容,这需要根据我们自己学习的领域收集复习内容。不过像 NLP 基础或词嵌入等知识点,项目作者介绍得很详细,它们也是 NLP 面试必备知识。

最后还有一些数学知识点,它们是算法工程师面试所需要具备的基础。例如今日头条算法工程师的实习生面试会问:「在圆环上随机选取 3 个点,这 3 个点组成锐角三角形的概率?」,或者其它算个积分之类的。项目作者主要为面试准备了以下几方面的知识点;

  • 概率论
  • 微积分本质
  • 深度学习核心

其中深度学习核心主要包含非线性激活函数、梯度下降和反向传播。

算法题和笔试题

对于编程面试,基础算法是必不可少的,它们一般体现在笔试题上,例如数据结构、动态规划或排列组合等。很多开发者可能感觉笔试解题会很难,因为题目并不会告诉你需要用什么样的基础算法来解决,全靠我们自己一步步解析题目。这就要求我们对各种基础算法都比较熟悉,项目作者提供了以下基本算法专题:

  • 字符串
  • 数据结构
  • 高级数据结构
  • 动态规划
  • 双指针
  • 区间问题
  • 排列组合
  • 数学问题
  • Shuffle、采样、随机数
  • 大数运算
  • 海量数据处理

这些算法题会介绍具体的问题、解题思路以及对应的解题代码。例如在数据结构中,我们如何判断树 B 是不是树 A 的子树。

如下所示为解题代码,注意基本上各基础算法的题解都是用 C++写的,作者会引用剑指 Offer 题解和 Leetcode 题解等的解决方案。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    bool HasSubtree(TreeNode* p1, TreeNode* p2) {
 if (p1 == nullptr || p2 == nullptr)  // 约定空树不是任意一个树的子结构
 return false;

 return isSubTree(p1, p2)    // 判断子结构是否相同
            || HasSubtree(p1->left, p2)      // 递归寻找树 A 中与树 B 根节点相同的子节点
            || HasSubtree(p1->right, p2);
    }

    bool isSubTree(TreeNode* p1, TreeNode* p2) {
 if (p2 == nullptr) return true;        // 注意这两个判断的顺序
 if (p1 == nullptr) return false;

 if (p1->val == p2->val)
 return isSubTree(p1->left, p2->left)    // 递归判断左右子树
                && isSubTree(p1->right, p2->right);
 else
 return false;
    }
};

此外,该项目还提供了 IO 模板和必备算法模板。作者表示不少笔试不像 LeetCode 那样可以自动完成 I/O,我们需要手动完成数据 I/O,而且如果我们没有 ACM 经验,很可能会在这上面浪费很多时间。因此这里总结的几种常见 IO 模板对于编程面试有很大的帮助,另外的算法模板同样也是。

例如如果我们输入不定数量个 Input,且以某个特殊输入为结束标志,那么用 C 语言实现的模板为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 示例 1
int a, b;
while (scanf("%d %d", &a, &b) != EOF && (a != 0 && b != 0)) {
 // ...
}

// 或者
while (scanf("%d %d", &a, &b) != EOF && (a || b)) {
 // ...
}

// 示例 2
int n;
while (scanf("%d", &n) != EOF && n != 0) {
 // ...
}

用 C++实现的模板为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 示例 1
int a, b;
while (cin >> a >> b) {
 if (a == 0 && b == 0)
 break;
 // ...
}

// 示例 2
int n;
while (cin >> n && n != 0) {
 // ...
}

面试真题

最后,项目作者还收集了十多家科技企业面试真题,并介绍从一面到三面的内容与经验。

例如以下是头条/字节跳动-深度学习/NLP 方向的三面概览:

具体的面试题也会提供,如下所示为字节跳动 18 年 8 月的笔试题:积分卡牌游戏。

当然给了题目,对应的解决方案也会提供:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 输入处理
n = int(input())
x, y = [], []
for i in range(n):
 _x, _y = list(map(int, input().split()))
    x.append(_x)
    y.append(_y)

xy = list(zip(x, y))
xy = sorted(xy, key=lambda t: t[1])

ret = 0
if sum(x) % 2 == 0:  # 如果所有 x 的和为偶数
    print(sum(y))    # 直接输出所有 y 的和
else:
    for i in range(len(xy)):
        if xy[i][0] % 2 == 1:  # 去掉 x 中为奇数的那一项
            ret = sum([xy[j][1] for j in range(len(xy)) if j != i])
            print(ret)
            break

来源:机器之心

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT派 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
秋招准备,这份GitHub万星的ML算法面试大全请收下
项目地址:https://github.com/imhuay/Algorithm_Interview_Notes-Chinese
Datawhale
2019/07/08
5860
GitHub上AI岗位面试笔记(机器学习算法/深度学习/ NLP/计算机视觉)
GitHub地址:https://github.com/imhuay/Algorithm_Interview_Notes-Chinese
不脱发的程序猿
2021/01/20
7540
【Github】ML-NLP:机器学习、NLP面试中常考到的知识点和代码实现
此项目是机器学习(Machine Learning)、深度学习(Deep Learning)、NLP面试中常考到的知识点和代码实现,也是作为一个算法工程师必会的理论基础知识。
代码医生工作室
2019/09/16
1.5K0
老生常谈:想做算法工程师,到底要学什么?
这个问题时常有人问我,单单是知乎里的付费咨询就很多次。最近新增了许多关注,所以今天再拿出来聊一聊,相当于给大家画一个学习路线,帮助大家更好入门。
TechFlow-承志
2022/08/26
5.2K0
老生常谈:想做算法工程师,到底要学什么?
GitHub星标数超4.2万的火爆之作!
AI领域蓬勃发展,不断有新鲜血液注入行业,行业著作也不断推陈出新~~ 最近博文菌得到一本极具群众基础的深度学习图书。 要说AI图书,博文菌推荐过非常多的优秀著作,有数十年经验沉淀的经典巨著,也有0压入门的必备秘籍…… 但这本书完全不一样! 因为它集百家所长,凝聚了众多一线科研人员及工程师的经验,可以培养读者发现问题、解决问题、扩展问题等方面的能力,真真正正地称得上一本书入门深度学习! 不卖关子了,它就是火爆全网的《深度学习500:AI工程师面试宝典》!   《深度学习500问:AI工程师面试宝典》   ▼
博文视点Broadview
2023/05/19
2910
GitHub星标数超4.2万的火爆之作!
链表算法面试问题?看我就够了!
单链表的操作算法是笔试面试中较为常见的题目。本文将着重介绍平时面试中常见的关于链表的应用题目。
五分钟学算法
2019/03/14
1.1K0
链表算法面试问题?看我就够了!
视觉算法岗秋招总结分享——教你如何准备
当初也在牛客看了许多面经,刷了不少题目,也受到许多牛友的鼓励,跌跌撞撞也算是找到了相对满意的结果。今天突然想起一直想写篇求职分享,给找工作的牛友参考,也算是一点对牛客和牛友们的回馈吧。有什么遗漏,或者牛友想了解的欢迎指出,尽量补充。 先介绍下本人基本情况,本人光学渣硕,研究方向是图像处理。硕士期间遇到一个很好的导师,有两份实习经历。不过尽管如此,还是找工作找的很坎坷,一方面是:专业和计算机差太远;另一方面是:做得方向不是机器学习,深度学习相关。从8月初到9月末,两个月都在面试,面了有20家公司左右吧,还好运
牛客网
2018/07/05
1.2K1
GitHub 40000星!收下这份宇宙最强「程序员装备指南」
GitHub有一个4万星的超强清单,里面内容从通用工具到编程比赛,从论坛到面试,还有英语学习,无所不包,堪称「程序员生存指南」。
昱良
2021/07/01
8450
GitHub 40000星!收下这份宇宙最强「程序员装备指南」
300道Python面试题,备战春招!
过年开工回来到现在,营长每天在地铁里只看到了两家公司的广告:前两周是拉勾网,最近都是 Boss直聘,求职、跳槽到现在,你是否已经成功,offer 在手了呢?
AI科技大本营
2019/03/15
1.3K0
300道Python面试题,备战春招!
这里有 300 篇 Python 与机器学习类原创笔记
主要包括计算机科学中基本的算法与数据结构,结合算法思想和Leetcode实战,总结介绍。
好好学java
2020/03/17
4.7K0
NLP中文面试学习资料:面向算法面试,理论代码俱全,登上GitHub趋势榜
这里有一份NLP面试大全,全中文教学,囊括机器学习及NLP算法面试中常考的知识点,还有算法实战代码,实乃算法工程师求职路上,必备良品。
代码医生工作室
2019/10/08
5860
NLP中文面试学习资料:面向算法面试,理论代码俱全,登上GitHub趋势榜
【Github 4K星】BAT头条滴滴小米等笔试面经+深度学习/算法/NLP资源汇总!
最近,在GitHub上有位id为imhuay的热心人带头建立了一个关于国内知名互联网企业笔试和面试经验的资源库,光从名称上就能看出其内容有多丰富:《2018/2019/校招/春招/秋招/算法/机器学习(MachineLearning)/深度学习(Deep Learning)/自然语言处理(NLP)/C/C++/Python/面试笔记》。
磐创AI
2018/10/22
1.1K0
【Github 4K星】BAT头条滴滴小米等笔试面经+深度学习/算法/NLP资源汇总!
终于不用愁了,GitHub 上的这些面试题项目我给你找好了。
又到了一年一度的金三银四,每次总能听到一些读者的反馈,问:有没有关于 xxx 的面试题,索性就把我所收集的 GitHub 上关于面试题的项目分享给大家。
杰哥的IT之旅
2021/03/30
2.6K0
终于不用愁了,GitHub 上的这些面试题项目我给你找好了。
这是一篇关于如何成为一名AI算法工程师的长文
经常有朋友私信问,如何学 python 呀,如何敲代码呀,如何进入 AI 行业呀?
机器之心
2019/07/03
6680
这是一篇关于如何成为一名AI算法工程师的长文
GitHub 标星 2.7w+!超全大厂面试笔记整理!
去年,在 GitHub 上有位 id 为 imhuay 的热心人带头建立了一个关于国内知名互联网企业笔试和面试经验的资源库,光从名称上就能看出其内容有多丰富:
GitHubDaily
2019/10/22
8880
【Github 5K星】BAT头条滴滴小米等笔试面经+深度学习/算法/NLP资源汇总!
最近,在GitHub上有位id为imhuay的热心人带头建立了一个关于国内知名互联网企业笔试和面试经验的资源库,光从名称上就能看出其内容有多丰富:《2018/2019/校招/春招/秋招/算法/机器学习(MachineLearning)/深度学习(Deep Learning)/自然语言处理(NLP)/C/C++/Python/面试笔记》。
abs_zero
2018/10/23
9100
【Github 5K星】BAT头条滴滴小米等笔试面经+深度学习/算法/NLP资源汇总!
百道Python面试题实现,搞定Python编程就靠它
对于一般的机器学习求职者而言,最基础的就是掌握 Python 编程技巧,随后才是相关算法或知识点的掌握。在这篇文章中,我们将介绍一个 Python 练习题项目,它从算法练习题到机试实战题提供了众多问题与解决代码。
磐创AI
2019/05/05
7790
百道Python面试题实现,搞定Python编程就靠它
算法工程师常见面试问题及相关资料汇总
https://github.com/lcylmhlcy/Awesome-algorithm-interview
小白学视觉
2019/10/10
3.4K1
算法工程师常见面试问题及相关资料汇总
NLP 算法工程师相关的面试题
【导读】本项目记录了面试NLP算法工程师常会遇到的问题,作者songyingxin。
代码医生工作室
2019/10/31
2.6K0
百道Python面试题实现,搞定Python编程就靠它
昨天机器之心介绍了 PHD 大牛的求职之路,很多读者感觉这位大牛太厉害了,他的经历对我们帮助不大。对于一般的机器学习求职者而言,最基础的就是掌握 Python 编程技巧,随后才是相关算法或知识点的掌握。在这篇文章中,我们将介绍一个 Python 练习题项目,它从算法练习题到机试实战题提供了众多问题与解决代码。
机器之心
2019/04/29
6360
百道Python面试题实现,搞定Python编程就靠它
推荐阅读
相关推荐
秋招准备,这份GitHub万星的ML算法面试大全请收下
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验