NLP面试题目总结

数据结构与算法相关

1. 快速排序算法

请实现快速排序算法,自行设计测试用例来说明算法的准确性,算法的时间和空间复杂度是多少?最坏的时间复杂度是多少?

快排是每次从当前考虑的数组中选择一个元素,以这个元素为基点,之后把这个元素放在它排好序后应该处的位置上。

比如对数组:[4,6,2,3,1,5,7,8]排序,首先先要把4这个元素放在已经排序好的位置上,此时该元素就都具有了一个性质:即4之前的所有元素都是小于4的,4之后的所有元素都是大于4的。

接下来所做的事情,就是对当前排好序的元 素4之前和之后的部分,继续递归的进行上述过程,直至每个元素都排好序。

那么问题就是两个方面:
1. 如何将遍历的元素放在已经排序好的位置上;
2. 如何定义元素已经排好序;

通常选择第一个元素v作为基准点,索引记作i,之后遍历未访问的元素,在遍历的过程中,逐渐的移动位置,把当前访问的元素记为i, 小于v和大于v的分界点的索引位置叫做j。

当i指的元素比v还要大时,让i++,将其放在大于v的区间中;
当i指的元素比v小时,则将j所指的后一个元素与i指的元素进行交换,再让j++,i ++,进而考察下一个;

2. 归并排序算法

请实现归并排序,自行设计测试用例来说明算法的准确性,算法的时间和空间复杂度是多少?最坏的时间复杂度是多少?

3. 面对一个具体的问题,倾向于使用归并还是快排,为什么?

数学基础

1. 给定两个矩阵,怎么计算它们之间的相乘?怎么计算一个矩阵的inverse?


A=[[1,3],[2,5]],B[[4,1],[2,4]]AB=?A1=?A = [[1,3],[2,5]], B[[4,1],[2,4]],A*B=? A^{-1}=?

两个矩阵的相乘,就是各个位置元素的相乘。
AB=[[14,31],[22,54]]A*B = [[1*4,3*1],[2*2,5*4]]
2*2的矩阵求逆,假设A=[[a,b],[c,d]]:

  1. 调换a和d的位置;
  2. 把负号放在b和c前面;
  3. 用各个元素除以A矩阵的行列式 (ad-bc);
    A1=1[[5,3],[2,1]]=[[5,3],[2,1]]A^{-1}=-1*[[5,-3],[-2,1]]=[[-5,3],[2,-1]]

2. 怎么计算一个向量的 norm? a = (3,1,5,1), |a| = ?

一范式是向量的绝对值之和:3+1+5+1 = 10;
二范式是向量元素的绝对值的平方和再开方:sqrt(9+1+25+1)=6

3. 什么是 Frobenius norm? 给定 A = [[1,3],[2,5]], 请计算;

F-范数:矩阵A各项元素的绝对值平方和开方

机器学习基础

自然语言处理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章