GitHub | 面试官的DL/NLP/推荐系统/ML/算法基础面试必看知识点总结

点击上方,选择星标置顶,每天给你送干货

阅读大概需要17分钟

跟随小博主,每天进步一丢丢

每日英文

All lay loads on a willing horse.

好马重负。

Recommender:云不见

作者:SladeSal、tcandzq

链接:https://github.com/sladesha/Reflection_Summary

编辑:深度学习自然语言处理公众号

这个仓库的作者是滴滴出行的员工SladeSal,同时也是互联网一线资深的面试官,他结合自己作为面试管的提问和自己的实习生tcandzq(拿到腾讯UGC,阿里算法中台,头条广告推荐offer)在参加2020届校招面试中遇到的各类算法问题,为大家写出了这份算法岗的面试知识点及个人理解的汇总。每个问题下面都有作者对这个问题的精炼总结,不罗嗦,简单易懂。非常感谢作者细致整理和无私分享。

本资源整理了300多道算法岗位相关的面试题目并给出了详细的答案,包含统计学基础概念、数学基础、数据预处理、机器学习、深度学习、自然语言处理(NLP)、推荐系统、风控、评价指标等相关问题,非常值得深入学习,温故而知新。

作者(SladeSal)有话说

部分内容为手记pdf内容,因为公式实在太多,手写比较快,笔记潦草,见谅,内容部分会引用第三方的观点,但是一定会结合自己的感受和体会,一定有存疑和不完善的地方,欢迎大家补充和质疑打脸。现在算法工程师的面试以下内容都不会直接提问,而是以项目交流的方式去挖掘在一个问题上的理论理解的深度,建议大家结合实际工作中的case去思考。

目录

  • 基础概念

  • 数学

  • 数据预处理

  • 机器学习

  • 深度学习

  • 自然语言处理

  • 推荐

  • 风控

  • 评价指标

一.基础概念

  • 方差和偏差

    • 解释方差

    • 解释偏差

    • 模型训练为什么要引入偏差和方差?请理论论证

    • 什么情况下引发高方差

    • 如何解决高方差问题

    • 以上方法是否一定有效

    • 如何解决高偏差问题

    • 以上方法是否一定有效

    • 遇到过的机器学习中的偏差与方差问题

    • 就理论角度论证Bagging、Boosting的方差偏差问题

    • 遇到过的深度学习中的偏差与方差问题

    • 方差、偏差与模型的复杂度之间的关系

  • 生成与判别模型

    • 什么叫生成模型

    • 什么叫判别模型

    • 什么时候会选择生成/判别模型

    • CRF/朴素贝叶斯/EM/最大熵模型/马尔科夫随机场/混合高斯模型

    • 我的理解

  • 先验概率和后验概率

    • 写出全概率公式&贝叶斯公式

    • 说说你怎么理解为什么有全概率公式&贝叶斯公式

    • 什么是先验概率

    • 什么是后验概率

    • 经典概率题

  • 频率概率

    • 极大似然估计 - MLE

    • 最大后验估计 - MAP

    • 极大似然估计与最大后验概率的区别

    • 到底什么是似然什么是概率估计

  • AutoML

    • AutoML问题构成

    • 特征工程选择思路

    • 模型相关的选择思路

    • 常见梯度处理思路

    • AutoML参数选择所使用的方法

    • 讲讲贝叶斯优化如何在automl上应用

    • 以高斯过程为例,超参搜索的f的最优解求解acquisition function有哪些

    • 高斯过程回归手记

    • AutoSklearn详解手记

    • AutoML常规思路手记

示例:

二.数学

  • 数据质量

    • 期望

    • 方差

    • 标准差

    • 协方差

    • 相关系数

  • 最大公约数问题

    • 辗转相除法

    • 其他方法

  • 牛顿法

    • 迭代公式推导

    • 实现它

  • 拟牛顿法

  • 概率密度分布

    • 均匀分布

    • 伯努利分布

    • 二项分布

    • 高斯分布

    • 拉普拉斯分布

    • 泊松分布

  • 平面曲线的切线和法线

    • 平面曲线的切线

    • 平面曲线的法线

  • 导数

    • 四则运算

    • 常见导数

    • 复合函数的运算法则

    • 莱布尼兹公式

  • 微分中值定理

    • 费马定理

    • 拉格朗日中值定理

    • 柯西中值定理

  • 泰勒公式

    • 泰勒公式

  • 欧拉公式

    • 欧拉公式

  • 矩阵

    • 范数

    • 特征值分解,特征向量

    • 正定性

  • 概率论

    • 条件概率

    • 独立

    • 概率基础公式

    • 全概率

    • 贝叶斯

    • 切比雪夫不等式

    • 抽球

    • 纸牌问题

    • 棍子/绳子问题

    • 贝叶斯题

    • 选择时间问题

    • 0~1均匀分布的随机器如何变化成均值为0,方差为1的随机器

    • 抽红蓝球球

示例:

三.数据预处理

  • 数据平衡

    • 为什么要对数据进行采样

    • 是否一定需要对原始数据进行采样平衡

    • 有哪些常见的采样方法

    • 能否避免采样

    • 你平时怎么用采样方法

  • 异常点处理

    • 统计方法

    • 矩阵分解方法

    • 特征值和特征向量的本质是什么

    • 矩阵乘法的实际意义

    • 密度的离群点检测

    • 聚类的离群点检测

    • 如何处理异常点

  • 缺失值处理

    • 是不是一定需要对缺失值处理

    • 直接填充方法有哪些

    • 模型插值方法有哪些?及方法的问题

    • 如何直接离散化

    • hold位填充方法有哪些

    • 怎么理解分布补全

    • random方法使用前提

    • 总结

  • 特征选择

    • 为什么要做特征选择

    • 从哪些方面可以做特征选择

    • 既然说了两个方向,分别介绍一些吧

  • 特征提取

    • 为什么需要对数据进行变换

    • 归一化和标准化之间的关系

    • 连续特征常用方法

    • 离散特征常用方法

    • 文本特征

    • 画一个最简单的最快速能实现的框架

示例:

四.机器学习

  • 聚类

    • 请问从EM角度理解kmeans

    • 为什么kmeans一定会收敛

    • kmeans初始点除了随机选取之外的方法

  • 线性回归

    • 损失函数是啥

    • 最小二乘/梯度下降手推

    • 介绍一下岭回归

    • 什么时候使用岭回归

    • 什么时候用Lasso回归

  • 逻辑回归

    • logistic分布函数和密度函数,手绘大概的图像

    • LR推导,基础5连问

    • 梯度下降如何并行化

    • LR明明是分类模型为什么叫回归

    • 为什么LR可以用来做CTR预估

    • 满足什么样条件的数据用LR最好

    • LR为什么使用sigmoid函数作为激活函数?其他函数不行吗

    • 利用几率odds的意义在哪

    • Sigmoid函数到底起了什么作用

    • LR为什么要使用极大似然函数,交互熵作为损失函数?那为什么不选平方损失函数的呢

    • LR中若标签为+1和-1,损失函数如何推导?

    • 如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响

    • 为什么要避免共线性

    • LR可以用核么?可以怎么用

    • LR中的L1/L2正则项是啥

    • lr加l1还是l2好

    • 正则化是依据什么理论实现模型优化

    • LR可以用来处理非线性问题么

    • 为什么LR需要归一化或者取对数

    • 为什么LR把特征离散化后效果更好?离散化的好处有哪些

    • 逻辑回归估计参数时的目标函数逻辑回归的值表示概率吗

    • LR对比万物

    • LR梯度下降方法

    • LR的优缺点

    • 除了做分类,你还会用LR做什么

    • 你有用过sklearn中的lr么?你用的是哪个包

    • 看过源码么?为什么去看

    • 谈一下sklearn.linear_model.LogisticRegression中的penalty和solver的选择

    • 谈一下sklearn.linear_model.LogisticRegression中对多分类是怎么处理的

    • 我的总结

  • 决策树

    • 常见决策树

    • 简述决策树构建过程

    • 详述信息熵计算方法及存在问题

    • 详述信息增益计算方法

    • 详述信息增益率计算方法

    • 解释Gini系数

    • ID3存在的问题

    • C4.5相对于ID3的改进点

    • CART的连续特征改进点

    • CART分类树建立算法的具体流程

    • CART回归树建立算法的具体流程

    • CART输出结果的逻辑

    • CART树算法的剪枝过程是怎么样的

    • 树形结构为何不需要归一化

    • 决策树的优缺点

  • 贝叶斯

    • 解释一下朴素贝叶斯中考虑到的条件独立假设

    • 讲一讲你眼中的贝叶斯公式和朴素贝叶斯分类差别

    • 朴素贝叶斯中出现的常见模型有哪些

    • 出现估计概率值为 0 怎么处理

    • 朴素贝叶斯的优缺点

    • 朴素贝叶斯与 LR 区别

  • 随机森林

    • 解释下随机森林

    • 随机森林用的是什么树

    • 随机森林的生成过程

    • 解释下随机森林节点的分裂策略

    • 随机森林的损失函数是什么

    • 为了防止随机森林过拟合可以怎么做

    • 随机森林特征选择的过程

    • 是否用过随机森林,有什么技巧

    • RF的参数有哪些,如何调参

    • RF的优缺点

  • 集成学习

    • 介绍一下Boosting的思想

    • 最小二乘回归树的切分过程是怎么样的

    • 有哪些直接利用了Boosting思想的树模型

    • gbdt和boostingtree的boosting分别体现在哪里

    • gbdt的中的tree是什么tree?有什么特征

    • 常用回归问题的损失函数

    • 常用分类问题的损失函数

    • 什么是gbdt中的残差的负梯度

    • 如何用损失函数的负梯度实现gbdt

    • 拟合损失函数的负梯度为什么是可行的

    • 即便拟合负梯度是可行的,为什么不直接拟合残差?拟合负梯度好在哪里

    • Shrinkage收缩的作用

    • feature属性会被重复多次使用么

    • gbdt如何进行正则化的

    • 为什么集成算法大多使用树类模型作为基学习器?或者说,为什么集成学习可以在树类模型上取得成功

    • gbdt的优缺点

    • gbdt和randomforest区别

    • GBDT和LR的差异

    • xgboost对比gbdt/boosting Tree有了哪些方向上的优化

    • xgboost和gbdt的区别

    • xgboost优化目标/损失函数改变成什么样

    • xgboost如何使用MAE或MAPE作为目标函数

    • xgboost如何寻找分裂节点的候选集

    • xgboost如何处理缺失值

    • xgboost在计算速度上有了哪些点上提升

    • xgboost特征重要性是如何得到的

    • xGBoost中如何对树进行剪枝

    • xGBoost模型如果过拟合了怎么解决

    • xgboost如何调参数

    • XGboost缺点

    • LightGBM对Xgboost的优化

    • LightGBM亮点

  • FM/FFM

  • SVM

    • 简单介绍SVM

    • 什么叫最优超平面

    • 什么是支持向量

    • SVM 和全部数据有关还是和局部数据有关

    • 加大训练数据量一定能提高SVM准确率吗

    • 如何解决多分类问题

    • 可以做回归吗,怎么做

    • SVM 能解决哪些问题

    • 介绍一下你知道的不同的SVM分类器

    • 什么叫软间隔

    • SVM 软间隔与硬间隔表达式

    • SVM原问题和对偶问题的关系/解释原问题和对偶问题

    • 为什么要把原问题转换为对偶问题

    • 为什么求解对偶问题更加高效

    • alpha系数有多少个

    • KKT限制条件,KKT条件有哪些,完整描述

    • 引入拉格朗日的优化方法后的损失函数解释

    • 核函数的作用是啥

    • 核函数的种类和应用场景

    • 如何选择核函数

    • 常用核函数的定义

    • 核函数需要满足什么条件

    • 为什么在数据量大的情况下常常用lr代替核SVM

    • 高斯核可以升到多少维?为什么

    • SVM和逻辑斯特回归对同一样本A进行训练,如果某类中增加一些数据点,那么原来的决策边界分别会怎么变化

    • 各种机器学习的应用场景分别是什么?例如,k近邻,贝叶斯,决策树,svm,逻辑斯蒂回归

    • Linear SVM 和 LR 有什么异同

示例:

五.深度学习

  • 框架

    • 为什么要用深度召回

  • dropout

    • dropout如何作用的

    • L1为什么在深度学习中不常用

    • 用贝叶斯机率说明Dropout的原理

    • 为什么有效

  • batch_normalization

    • 你觉得bn过程是什么样的

    • 手写一下bn过程

    • 知道LN么?讲讲原理

  • bp过程

  • embedding

  • softmax

  • 梯度消失/爆炸

  • 残差网络

    • 介绍残差网络

    • 残差网络为什么能解决梯度消失的问题

    • 残差网络残差作用

    • 你平时有用过么?或者你在哪些地方遇到了

  • Attention

    • Attention对比RNN和CNN,分别有哪点你觉得的优势

    • 写出Attention的公式

    • 解释你怎么理解Attention的公式的

    • Attention模型怎么避免词袋模型的顺序问题的困境的

    • Attention机制,里面的q,k,v分别代表什么

    • 为什么self-attention可以替代seq2seq

    • 维度与点积大小的关系是怎么样的,为什么使用维度的根号来放缩

示例:

六.自然语言处理

  • GloVe

    • GolVe的损失函数

    • 解释GolVe的损失函数

    • 为什么GolVe会用的相对比W2V少

  • Word2Vec

    • 从隐藏层到输出的Softmax层的计算有哪些方法

    • 层次softmax流程

    • 负采样流程

    • word2vec两种方法各自的优势

    • 怎么衡量学到的embedding的好坏

    • word2vec和glove区别

    • 你觉得word2vec有哪些问题

  • CRF

    • 阐述CRF原理

    • 线性链条件随机场的公式是

    • CRF与HMM区别

    • Bert+crf中的各部分作用详解

  • LDA

    • 详述LDA原理

    • LDA中的主题矩阵如何计算

    • LDA的共轭分布解释下

    • PLSA和LDA的区别

    • 怎么确定LDA的topic个数

    • LDA和Word2Vec区别?LDA和Doc2Vec区别

    • LDA算法里面Dirichlet分布的两个参数alpha和beta怎样确定?trick?

    • 使用过LDA,你有什么问题?

    • 你用真实用过吗?对比过效果吗?

    • 超参数\alpha \beta对训练的影响?

    • LDA你会有哪些常规的预处理步骤

    • LDA的最大似然不好求的原因?为什么不直接用EM?为什么LDA引入了一堆数学理论?

  • LSTM

  • GRU

  • Bert:实现/使用的代码

    • Bert的双向体现在什么地方

    • Bert的是怎样预训练的

    • 在数据中随机选择 15% 的标记,其中80%被换位[mask],10%不变、10%随机替换其他单词,原因是什么

    • 为什么BERT有3个嵌入层,它们都是如何实现的

    • bert的损失函数

    • 手写一个multi-head attention

    • 长文本预测如何构造Tokens

    • 你用过什么模块?bert流程是怎么样的

    • 知道分词模块:FullTokenizer做了哪些事情么

    • Bert中如何获得词意和句意

    • 源码中Attention后实际的流程是如何的

    • 为什么要在Attention后使用残差结构

    • 平时用官方Bert包么?耗时怎么样

    • 你觉得BERT比普通LM的新颖点

    • elmo、GPT、bert三者之间有什么区别

  • 文本相似度计算

    • 有哪些常用的方法

  • TextCNN

    • 讲一下textcnn

    • textCNN中核的作用

    • max-pooling选择的目的

    • textcnn和fasttext区别

    • 如果你知道上面说的核心问题,那么有什么解决方案吗?

    • 为什么卷积核都不大?且常见都都是奇数?

    • 为什么不建议用句长作为核大小

    • padding是不是对最后结果没有影响

示例:

七.推荐

  • DIN:实现/使用的代码

    • 主要使用了什么机制

    • activation unit的作用

    • DICE怎么设计的

    • DICE使用的过程中,有什么需要注意的地方

  • DeepFM:实现/使用的代码

    • DNN与DeepFM之间的区别

    • Wide&Deep与DeepFM之间的区别

    • 你在使用deepFM的时候是如何处理欠拟合和过拟合问题的

    • DeepFM怎么优化的

    • 不定长文本数据如何输入deepFM

    • deepfm的embedding初始化有什么值得注意的地方吗

      • Xavier初始化

      • He初始化

  • YoutubeNet:实现/使用的代码

    • 变长数据如何处理的

    • input是怎么构造的

    • 最后一次点击实际如何处理的

    • output的是时候train和predict如何处理的

    • 如何进行负采样的

    • item向量在softmax的时候你们怎么选择的

    • Example Age的理解

    • 什么叫做不对称的共同浏览(asymmetric co-watch)问题

    • 为什么不采取类似RNN的Sequence model

    • YouTube如何避免百万量级的softmax问题的

    • serving过程中,YouTube为什么不直接采用训练时的model进行预测,而是采用了一种最近邻搜索的方法

    • Youtube的用户对新视频有偏好,那么在模型构建的过程中如何引入这个feature

    • 在处理测试集的时候,YouTube为什么不采用经典的随机留一法(random holdout),而是一定要把用户最近的一次观看行为作为测试集

    • 整个过程中有什么亮点?有哪些决定性的提升

  • Wide&Deep

  • MLR

  • Neural Network全家桶

  • XDeepFM:实现/使用的代码

    • 选用的原因,考虑使用的场景是什么

    • 什么叫显示隐式?什么叫元素级/向量级?什么叫做高阶/低阶特征交互

    • 简单介绍一下XDeepFm的思想

    • 和DCN比,有哪些核心的变化

    • 时间复杂度多少

  • Recall

    • 召回层构造loss和精排层的差异?

    • 离线评估有什么办法

    • 负样本为什么不能用点击未展示

    • 解释一下hard negative

    • 什么样本是hard和easy的

    • 如何处理hard部分

示例:

八.风控

  • 孤立森林

  • 评分卡

九.评价指标

  • 二分类

  • 多分类

  • 回归指标

  • 聚类指标

  • 排序指标

下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!

后台回复【五件套】
下载二:南大模式识别PPT

后台回复【南大模式识别】

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

推荐两个专辑给大家:

专辑 | 李宏毅人类语言处理2020笔记

专辑 | NLP论文解读

专辑 | 情感分析


整理不易,还望给个在看!
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值