基础
Python 内存管理的方式 参考答案
机器学习
- 逻辑回归完整推导过程
- 逻辑回归属于线性分类器还是非线性分类器?(同属于广义线性模型)
- 朴素贝叶斯为什么朴素?(假设特征之间相互独立)
- 介绍一下 SVM 核函数
- MLP 和 MAP 的区别(MAP 加入了先验信息)
- svm 如何处理多分类(一对多法设计 k 个分类器,一对一法设计 k (k-1)/2 个分类器)
- svm 对缺失数据敏感吗,为什么,决策树呢。(svm 没有处理缺失数据的方法,决策树有)
- 为什么 svm 采用最大间隔(最大间隔得到决策边界是唯一的,具有鲁棒性)
- 聚类了解哪些?基于密度的聚类了解哪些?(原型聚类:KMeans, 高斯混合聚类,密度聚类:DBSCAN、Mean-Shift,层次聚类:AGNES、BIRCH,谱聚类)
深度学习基础
- L1、L2 正则(贝叶斯角度分析,加入了先验信息)
- 怎样判断过拟合?过拟合怎么解决?(1. 交叉验证的结果比单次的结果下,2. 通过学习曲线 Learning Curves 判断,3. 实际的话也可以通过观察训练误差很小,而预测误差很大的模型通常过拟合)
- 梯度消失和梯度爆炸的原因,为什么 rnn 比 cnn 和全连接层神经网络更容易发生梯度消失或爆炸(RNN 在梯度的反向传播中只有连乘,LSTM 和 GRU 加入了门机制,梯度的计算中同时还有 $h_t$ 的加法)
- 说一下 dropout 的训练和测试过程(在训练过程中以一定的概率 p 的使神经元失活,测试过程不需要 dropout,对层的输出乘以 p)
- 说一下 BN 和 LN,有什么区别,BN 为什么可以提升效果 ()
- CNN 的旋转不变性怎么理解 (CNN 具有平移不变性)
自然语言处理基础
输入补全可以用哪个数据结构来做?(字典树)
假如有 10 亿条搜索请求,怎么找出最热的前 10 条?
讲一下 LDA,讲一下隐狄利克雷分布,里面有个辛普森采样了解吗
pointwise、pairwise 、listwise 的区别
word2vec 是有监督的还是无监督的
word2vec 的损失函数形式
分层 softmax 和负采样原理
Glove 的思想以及和 word2vec 的区别
Fasttext 和 word2vec 的区别
Fasttext 哈希规则,怎么把语义相近的词哈希到一个桶里
RNN、LSTM、GRU 公式。
RNN、LSTM、GRU 参数大小
Attention 机制的原理,有哪些变种
sigmoid 用作激活函数时,分类为什么要用交叉熵损失,而不用均方损失?
文本分类
精确率,召回率,F1 值
AUC 和 ROC
1 | Precision:P=TP/(TP+FP) |
讲一下 Textcnn 的过程
Fasttext 怎么做分类的
CNN 和 LSTM 都可以用于分类,两者用于分类有什么区别?
样本不均衡的处理方法
Sequence Label
有了 BILSTM 为什么还要用 CRF?
BILSTM+CRF 的训练目标?状态转移矩阵是 joint learn 的吗?维度是多少?
维特比算法的时间复杂度
HMM 和 CRF 的区别
CRF、HMM 原理 公式、维特比算法的公式
HMM 做了哪些独立性假设
CRF 的训练目标是什么?
CRF 和深度学习的结合还知道哪些?
为什么 Transformer self-attention 可以替代 seq2seq
文本生成
生成式问答解决生成句子多样性的方法
怎么评价生成效果的好坏
讲一下 BLEU
思考题
- 一个村子里重男轻女,生了女孩就继续生,直到生出男孩为止,试想在 N 年之后该村子的男女比例。答案:1:1
- 有 A(红)B(蓝)两瓶墨水,从 A 中取一勺倒到 B 中,混匀后,再从 B 中取等量墨水,倒到 A 中。问,是 A 中蓝墨水多还是 B 中红墨水多?
- 一枚硬币,正反分布均匀,掷硬币,问至少多少次可以把这枚硬币的正面和反面都掷出来?
- 一根绳子,允许你剪两刀,试问,剪完之后的绳子能构成三角形的概率是多少
算法
- 稳定和非稳定的排序算法有哪些
- 快速排序的最好,最坏,平均以及空间复杂度
- 二分查找递归和非递归的时间和空间复杂度
- 用两个栈实现一个队列操作,实现 push、pop、len 操作
- 给定字符串 s ,求与 s 编辑距离为 2 的字符串集合。
- 一个圆被分成 M 个扇形,一共有 N 种颜色,相邻扇形不同色,一共有几种涂法?
- 有 n 枚硬币,每次从左边或右边拿一枚,一共拿 m 次,求能拿到的最高价值
- 二叉搜索树转有序双向链表,要求不能创建新的节点
- 统计一个十进制数字的二进制表示中有多少个一,用位运算写
- 滑动窗口里的最大数
- 给定一个乱序不重复数组,找到所有的三个数的集合,每个集合中 a + b + c == 0
- 排序数组中绝对值不相等的元素个数,算法复杂度(M+N)
- 搜索有序二维矩阵,复杂度
- 层次遍历二叉树
- 字符串的最长公共子串
- 写一个函数判断一个字符串是否为回文串
- 求一个字符串中的最长回文子串
归并排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29def merge(a, b):
c = []
h = j = 0
while j < len(a) and h < len(b):
if a[j] < b[h]:
c.append(a[j])
j += 1
else:
c.append(b[h])
h += 1
if j == len(a):
for i in b[h:]:
c.append(i)
else:
for i in a[j:]:
c.append(i)
return c
def merge_sort(lists):
if len(lists) <= 1:
return lists
middle = len(lists)//2
left = merge_sort(lists[:middle])
right = merge_sort(lists[middle:])
return merge(left, right)
if __name__ == '__main__':
a = [14, 2, 34, 43, 21, 19]
print (merge_sort(a))