0%

NLP 面试比较重要的知识点

ei2rqS.png

基础

Python 内存管理的方式 参考答案

机器学习

  1. 逻辑回归完整推导过程
  2. 逻辑回归属于线性分类器还是非线性分类器?(同属于广义线性模型)
  3. 朴素贝叶斯为什么朴素?(假设特征之间相互独立)
  4. 介绍一下 SVM 核函数
  5. MLP 和 MAP 的区别(MAP 加入了先验信息)
  6. svm 如何处理多分类(一对多法设计 k 个分类器,一对一法设计 k (k-1)/2 个分类器)
  7. svm 对缺失数据敏感吗,为什么,决策树呢。(svm 没有处理缺失数据的方法,决策树有)
  8. 为什么 svm 采用最大间隔(最大间隔得到决策边界是唯一的,具有鲁棒性)
  9. 聚类了解哪些?基于密度的聚类了解哪些?(原型聚类:KMeans, 高斯混合聚类,密度聚类:DBSCAN、Mean-Shift,层次聚类:AGNES、BIRCH,谱聚类

深度学习基础

  1. L1、L2 正则(贝叶斯角度分析,加入了先验信息)
  2. 怎样判断过拟合?过拟合怎么解决?(1. 交叉验证的结果比单次的结果下,2. 通过学习曲线 Learning Curves 判断,3. 实际的话也可以通过观察训练误差很小,而预测误差很大的模型通常过拟合)
  3. 梯度消失和梯度爆炸的原因,为什么 rnn 比 cnn 和全连接层神经网络更容易发生梯度消失或爆炸(RNN 在梯度的反向传播中只有连乘,LSTM 和 GRU 加入了门机制,梯度的计算中同时还有 $h_t$ 的加法)
  4. 说一下 dropout 的训练和测试过程(在训练过程中以一定的概率 p 的使神经元失活,测试过程不需要 dropout,对层的输出乘以 p)
  5. 说一下 BN 和 LN,有什么区别,BN 为什么可以提升效果 ()
  6. 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
2
3
4
Precision:P=TP/(TP+FP)
Recall:R=TP/(TP+FN)
F1-score:2/(1/P+1/R)
ROC/AUC:TPR=TP/(TP+FN), FPR=FP/(FP+TN)

讲一下 Textcnn 的过程
Fasttext 怎么做分类的
CNN 和 LSTM 都可以用于分类,两者用于分类有什么区别?
样本不均衡的处理方法

Sequence Label

有了 BILSTM 为什么还要用 CRF?
BILSTM+CRF 的训练目标?状态转移矩阵是 joint learn 的吗?维度是多少?
维特比算法的时间复杂度
HMM 和 CRF 的区别
CRF、HMM 原理 公式、维特比算法的公式
HMM 做了哪些独立性假设
CRF 的训练目标是什么?
CRF 和深度学习的结合还知道哪些?
为什么 Transformer self-attention 可以替代 seq2seq

文本生成

生成式问答解决生成句子多样性的方法
怎么评价生成效果的好坏
讲一下 BLEU

思考题

  1. 一个村子里重男轻女,生了女孩就继续生,直到生出男孩为止,试想在 N 年之后该村子的男女比例。答案:1:1
  2. 有 A(红)B(蓝)两瓶墨水,从 A 中取一勺倒到 B 中,混匀后,再从 B 中取等量墨水,倒到 A 中。问,是 A 中蓝墨水多还是 B 中红墨水多?
  3. 一枚硬币,正反分布均匀,掷硬币,问至少多少次可以把这枚硬币的正面和反面都掷出来?
  4. 一根绳子,允许你剪两刀,试问,剪完之后的绳子能构成三角形的概率是多少

算法

  1. 稳定和非稳定的排序算法有哪些
  2. 快速排序的最好,最坏,平均以及空间复杂度
  3. 二分查找递归和非递归的时间和空间复杂度
  4. 用两个栈实现一个队列操作,实现 push、pop、len 操作
  5. 给定字符串 s ,求与 s 编辑距离为 2 的字符串集合。
  6. 一个圆被分成 M 个扇形,一共有 N 种颜色,相邻扇形不同色,一共有几种涂法?
  7. 有 n 枚硬币,每次从左边或右边拿一枚,一共拿 m 次,求能拿到的最高价值
  8. 二叉搜索树转有序双向链表,要求不能创建新的节点
  9. 统计一个十进制数字的二进制表示中有多少个一,用位运算写
  10. 滑动窗口里的最大数
  11. 给定一个乱序不重复数组,找到所有的三个数的集合,每个集合中 a + b + c == 0
  12. 排序数组中绝对值不相等的元素个数,算法复杂度(M+N)
  13. 搜索有序二维矩阵,复杂度
  14. 层次遍历二叉树
  15. 字符串的最长公共子串
  16. 写一个函数判断一个字符串是否为回文串
  17. 求一个字符串中的最长回文子串

    归并排序

    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
    29
    def 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))
支持一根棒棒糖!