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各項元素的絕對值平方和開方

機器學習基礎

自然語言處理

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