我自从2015年担任算法组leader,作为面试官面试了不少同学。前前后后面试了超过200名同学,其中有不少入职的同学后来发展都不错,也坚定了自己对于选人标准的自信心。
今年2020年找工作尤其艰难,我把这些年作为面试官一些重要的面试题整理出来,一共80道,希望能够帮助到大家。
为了方便大家,我做了一个归类,一共分成了6大类,分别是:机器学习,特征工程,深度学习,NLP,CV,推荐系统。这些知识既是面试中的常见问题,也可以作为大家整理自己思路的参考资料。(需要的同学文末免费领取)
机器学习理论类:
- 写出全概率公式&贝叶斯公式
- 模型训练为什么要引入偏差(bias)和方差(variance)? 证
- CRF/朴素贝叶斯/EM/最大熵模型/马尔科夫随机场/混合高斯模型
- 如何解决过拟合问题?
- One-hot的作用是什么?为什么不直接使用数字作为表示
- 决策树和随机森林的区别是什么?
- 朴素贝叶斯为什么“朴素naive”?
- kmeans初始点除了随机选取之外的方法
- LR明明是分类模型为什么叫回归
- 梯度下降如何并行化
- LR中的L1/L2正则项是啥
- 简述决策树构建过程
- 解释Gini系数
- 决策树的优缺点
- 出现估计概率值为 0 怎么处理
- 随机森林的生成过程
- 介绍一下Boosting的思想
- gbdt的中的tree是什么tree?有什么特征
- xgboost对比gbdt/boosting Tree有了哪些方向上的优化
- 什么叫最优超平面
- 什么是支持向量
- SVM如何解决多分类问题
- 核函数的作用是啥
特征工程类:
- 怎么去除DataFrame里的缺失值?
- 特征无量纲化的常见操作方法
- 如何对类别变量进行独热编码?
- 如何把“年龄”字段按照我们的阈值分段?
- 如何根据变量相关性画出热力图?
- 如何把分布修正为类正态分布?
- 怎么简单使用PCA来划分数据且可视化呢?
- 怎么简单使用LDA来划分数据且可视化呢?
深度学习类:
- 你觉得batch-normalization过程是什么样的
- 激活函数有什么用?常见的激活函数的区别是什么?
- Softmax的原理是什么?有什么作用?CNN的平移不变性是什么?如何实现的?
- VGG,GoogleNet,ResNet等网络之间的区别是什么?
- 残差网络为什么能解决梯度消失的问题
- LSTM为什么能解决梯度消失/爆炸的问题
- Attention对比RNN和CNN,分别有哪点你觉得的优势
- 写出Attention的公式
- Attention机制,里面的q,k,v分别代表什么
- 为什么self-attention可以替代seq2seq
自然语言处理(NLP)类:
- GolVe的损失函数
- 为什么GolVe会用的相对比W2V少
- 层次softmax流程
- 负采样流程
- 怎么衡量学到的embedding的好坏
- 阐述CRF原理
- 详述LDA原理
- LDA中的主题矩阵如何计算
- LDA和Word2Vec区别?LDA和Doc2Vec区别
- Bert的双向体现在什么地方
- Bert的是怎样预训练的
- 在数据中随机选择 15% 的标记,其中80%被换位[mask],10%不变、10%随机替换其他单词,原因是什么
- 为什么BERT有3个嵌入层,它们都是如何实现的
- 手写一个multi-head attention
推荐系统类:
- DNN与DeepFM之间的区别
- 你在使用deepFM的时候是如何处理欠拟合和过拟合问题的
- deepfm的embedding初始化有什么值得注意的地方吗
- YoutubeNet 变长数据如何处理的
- YouTubeNet如何避免百万量级的softmax问题的
- 推荐系统有哪些常见的评测指标?
- MLR的原理是什么?做了哪些优化?
计算机视觉(CV)类:
- 常见的模型加速方法
- 目标检测里如何有效解决常见的前景少背景多的问题
- 目标检测里有什么情况是SSD、YOLOv3、Faster R-CNN等所不能解决的,假设网络拟合能力无限强
- ROIPool和ROIAlign的区别
- 介绍常见的梯度下降优化方法
- Detection你觉得还有哪些可做的点
- mini-Batch SGD相对于GD有什么优点
- 人体姿态估计主流的两个做法是啥?简单介绍下
- 卷积的实现原理以及如何快速高效实现局部weight sharing的卷积操作方式
- CycleGAN的生成效果为啥一般都是位置不变纹理变化,为啥不能产生不同位置的生成效果
由此看来算法真的很重要,所以小编在这里给大家分享一份算法大牛的书籍
法工程师的具体分支:

其次,算法工程师的必备技能:
▲ 至少熟悉一门编程语言 C/C++/java/python/R;
▲ 功底;熟练运用各种常用算法和数据结构,有独立的实现能力;
▲ 熟悉数据挖掘算法;
▲ 熟悉机器学习相关知识理论。
▲ 加分项:具有较为丰富的项目实践经验。
好奇的你看到这里,肯定带着大大的疑问:是不是要直接学习这些算法呢?
万丈高楼平地起,任何高深的算法都要从基础算法学起,不可能一口吃个胖子。
所以,初入门的你学习算法还是要从基础开始:
▲ 首先学习一门语言。
例如 C/C++/Java/python,初学者学 C++比较普遍。
▲ 学数据结构。
数据结构书有很多,但是有些教材晦涩难懂,建议看图解多,通俗易懂的书,推荐《趣学数据结构》。
▲ 学算法。
不要直接看《算法导论》,大量证明会让你崩溃。推荐《数据结构与算法经典问题解析》,有问题分析,完美图解,维码详解,实战演练,适合初学者快速掌握经典算法。
接下来,让我们跟随《数据结构与算法经典问题解析》作者的视角,找到学习算法与数据结构的窍门!
话不多说直接上图
如果还在上大学的同学可以先以排序和各种的基本数据结构开始入门。我花了一个星期将八大基础排序和链表/二叉树/栈/队列制作成一份精美的PDF。
这份PDF阅读体验肯定是要比公众号和各大的博客平台的文章要好的。PDF内容为纯手打!
下面简单介绍一下八大基础排序和基础的数据结构,每种排序的思想和基础的讲解和源码在PDF里边有。
需要完整版笔记可以点击文章开头链接获取
下面给大家展示这本(数据结构与算法经典问题解析)的部分内容
第一章绪论
第2章递归和回溯
第3章链表
需要获取这份资料的小伙伴可以点击文章开头链接获取
第4章栈
第5章队列
第6章树
第7章优先队列和队
需要获取这份资料的小伙伴可以点击文章开头链接获取
第8章并查集ADT
第9章图算法
上
需要获取这份资料的小伙伴可以点击文章开头链接获取
第10章排序
第11章查找
第12章选择算法(中位数)
请在这里输入引用内容
需要获取这份资料的小伙伴可以点击文章开头链接获取
第13章符号表
第14章散列
第15章字符串算法
第16章算法设计技术
第17章贪梦算法
第18章分治算法
第19章动态规划算法
第20章 复杂度类型
第21章杂谈