电影家园,免费 ML 算法面试大全,GitHub 上破万星,肾虚

(给程序员的那些事加星标


转自:机器之心


春季到来,春招不久也会开端。在本项目中,作者 imhuay 为咱们预备了 ML 算法工程师面试攻略,它供给了完好的面试常识点、编程题及题解、各科技公司的面试题锦等内容。现在该 GitHub 项目已经有 1 万+的收藏量,想要跳一跳的同学快来试试吧。


  • 项目地址:https://github.com/imhu献组词ay/Algorithm_Interview_Notes-Chinese


如下所示为整个项目的结陪产假多少天构,其间从机器学习到数学首要供给的是笔记与面试常识点,读者可回忆全体的常识架构。后边从算品德的火焰法到书面考试面经首要供给的是问题及回答计划,依据它们能够提高全体的解题水平与编程技巧。



面试常识点


面试题多种多样,但机器学习常识就那么多,那么为了春招或春季换岗,何不过一遍 ML 中心常识点?在这个 GitHub 项目中,作者前一部分首要介绍了机器学习及各子范畴的常识点。其间每一个常识点都只供给最中心的概念,假如读者遇到不了解的算法或许遇到常识缝隙,能够进一步阅览相关文献。


项目首要从机器学习、深度学习、自然言语处理和数学等方面供给详细的常识点,由于作者比较重视 NLP,所以并没有供给详细的计算机视觉笔记。


机器学习


首要关于机器学习,项目首要从根底概念、根本实jj相片践、根本算法和集成学习专题这四个方面归纳 ML 的整体状况。其间根底概念或许是最根本的面试问题,例如「误差方差怎样权衡?」、「生成模型和判别模型的不同是什么?」、「先验和后验概率都是什么,它们能转化吗?」。


这些常识点一般是入门者都需求了解的,而关于 ML 根本实践,首要会从怎么做好传统 ML 开发流程的视点发问。例如「你怎么挑选超参数,能介绍一些超参数的根本查找方法吗?」、「混杂矩阵、准确率、准确率、召回率或 F1 值都是什么,怎么运用它们衡量模型的好坏?」、「你能介绍数据清洗和数据预处理的首要流程吗,举个比如?」。


这些问题都能在前两部分的常识点中找到答案。后一部分的根本算法就十分多了,从最简略的 Logistic 回归到杂乱的梯度提高树,这一部分总结了干流的机器学习算法:


  • 信息论

  • 逻辑斯蒂回归

  • 支撑向量机

  • 决策树

  • 集成学习

  • 梯度提高决策树 GBDT

  • 随机森林


其间每一种算法都供给了最中心的概念,例如关于决策树中的 CART 算法,笔记首要引证了李航《计算学习方法》中的描绘:



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



深度学习


深度学习的内容就相对比较多了,现在也有十分多的笔记或材料,可是咱们或许会感觉深度学习的问题并没有机器学习难。顶多会让咱们手推一个反向传达算法,不会像手推支撑向量机那样让咱们从表达式推一下卷积网络。假如要为深度学习打根底,其实最好的方法是学习 Ian Goodfellow 的《Deep Learning》,咱们只需阅览这本书的前两部分:使用数学与机器学习根底;深度网络:现代实践。第三部分由于触及许多前沿研讨的东西,咱们暂时能够不急着学。


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


  • 深度学习根底

  • 深度学习实践

  • CNN 专题

  • RNN 专题

  • 优化算法专题

  • 序列建模专题

  • 《Deep Learning》收拾


前面 6 个专题都是介绍的笔记,每一个专题都有十分多的详细内容,其间序列建模专题还引证了机器之心总述的从循环到卷积,探究序列建模的奥妙。如下展现了优化算法专题所包括的内容:



在最终的《Deep Learning》收拾中,项目作者给出了五十多道深度学习问题,并依据这些问题介绍《Dee有道词典在线翻译p Learning》中的常识点。如下为问题示例,不同的星infinite号表明问题的难度:



自然言语处理与数学


后边的自然言语处理也是最近在要点更新的,现在介绍的方面首要有;


  • 自然言语处理根底

  • NLP 发展趋势

  • 词嵌入专题

  • 句嵌入专题

  • 多模态专题

  • 视觉问答总述

  • 深度了解查询


NLP 许多常识点其实都不算根底内容,这需求依据咱们自己学习的范畴搜集复习内容。不过像 NLP 根底或词嵌入等常识点,项目作者介绍得很详细,它们也是 母子网NLP 面试必备常识。


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


  • 概率论

  • 微积分实质

  • 深度学习中心


其间深度学习中心首要包括非线性激活函数、梯度下降和反向传达。


算法题和书面考试题


关于编程面试,根底算法是必不可少的,它们一般体电影家乡,免费 ML 算法面试大全,GitHub 上破万星,肾虚现在书面考试题上,例如数据结构、动态规划或排列组合等。许多开发者或许感觉书面考试解题会很难,由于标题并不会通知你需求用什么样的根底算法来处理,全赖咱们自己一步步解析标题。这就要求咱们对各种根底算法都比较了解,项目作者供给了以下根本算法专题:


  • 字符串

  • 数据结构

  • 高档数据结构

  • 动态规划

  • 双指针

  • 区间问题

  • 排列组合

  • 数学问题

  • Shuffle、采样、随机数

  • 大数运算

  • 海量数据处理


这些算法题会介绍详细的问题、解题思路以及对应的解题代码。例如在数据结构中,咱们怎么判别树 B 是不是树 A 的子树。



如下所示为解题代码,留意根本上各根底算法的题解都是用 C++写的,作者会引证剑指 Offer 题解和 Leetcode 题解等的处理方践组词案。


class S眼霜排行榜olution {
public:
    bool HasSubtree(TreeNode* p1, TreeNode* p2) {
       &电影家乡,免费 ML 算法面试大全,GitHub 上破万星,肾虚nbsp;if (p1 == nullptr || p2 == nullptr)  // 约好空树不是恣意一个树的子结构
       &nbs彦崽儿p;    return false;

        return isSubTree(p1, p2)    // 判别子结构是否相同
           &nbs等额本金p;|| 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-&电影家乡,免费 ML 算法面试大全,GitHub 上破万星,肾虚gt;val == p2->val)
            return isSubTree(p1->left, p2->left)    // 递归判别左右子树
                && isSubTree(p1-&g电影家乡,免费 ML 算法面试大全,GitHub 上破万星,肾虚t;right, p2->right);
        else
            return false;
    }
};


此外,该项目还供给了 IO 模板和必备算法模板。作者表明不少书面考试不像 LeetCode 那样能够主动完结 I/O,咱们需求手动完结数据 I/O,并且假如咱们没有 ACM 经历,很或许会在这上面糟蹋许多时刻。因而这儿总结的几种常见 IO 模板关于编程面试有很大的协助,别的的算法模板相同也是。


例如假如咱们输入不定数量个 Input,且以某个特别输入为完毕标志,那么用 C 言语完成的模板为:


/电影家乡,免费 ML 算法面试大全,GitHub 上破万星,肾虚/ 示例 1
int a, b;
while (scanf("%d %d", &a,&nb新中国建立sp;&b) != EOF && (a != 0 && b != 0)) {
    // ...
}

//&n施组词bsp;或许
while (scanf("%d %d", &a, &b) != EOF && (a || b)) {
    // ...
}

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


用 C++完成的模板为:


// 示例 1
int a, b;
while (cin >> a &锅盖头gt;> b) {
    if (a == 0 && b == 0)世界第一初恋漫画
 &n电影家乡,免费 ML 算法面试大全,GitHub 上破万星,肾虚bsp;      break;
    // ...
}

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


面试真题


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



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



详细的面试题也会供给安全教育渠道登录,如下所示为字节跳动 18 年 8 月的书面考试题:积分卡牌游戏。



当然给了标题,对应的处理计划也会供给:


# 输入处理
n = int(input())
x, y = [], []
for i in range(n):
    _x, _y = list(map(int, input().split()))
    x.append(_x)
  &nb宏碁sp; y.append荣耀v8(_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 中为奇数的那一项
      电影家乡,免费 ML 算法面试大全,GitHub 上破万星,肾虚      ret = sum([xy[j][1] for j in range(len(xy)) if j != i])
         &nbs当爱已成往事p;  print(ret)
            break



引荐阅览

(点击标题可跳转阅览)

免费编程资源第一波,含 GitHub 九万 Star 的电子书
阅览优异开源代码,提高编程技术(GitHub 资源帖引荐)

GitHub 一万多 Star,一个学算法的可视化东西



重视「程序员的那些事」加星标,不错失圈内事

喜爱就点一下「美观」呗~