果真不愧是百度,算法崗位的題目在廣度和深度方面都超過了我以前作的幾家,在這裏放出部分我記得的筆試題,若有侵權,請聯繫做者刪除html
題目類型:30選擇+1道問答+1道系統設計+2道編程,題量很大python
1、選擇題ios
選擇題面很是寬,不建議花費太多時間,涉及到的知識點有C++、python、數據庫、分頁式存儲管理、機器學習、天然語言處理、數據結構、操做系統,基本是應有盡有,估計這麼設計就是爲了讓你們快點蒙完,而後作後面的題目算法
2、問答題數據庫
問答題問了天然語言處理的相關知識編程
答案能夠參考 http://www.javashuo.com/article/p-fhttruly-hn.html數據結構
https://blog.csdn.net/ed_new/article/details/51924535機器學習
3、系統設計題學習
要求設計一個推薦系統,我我的認爲推薦系統還算是一個比較常考的問題,建議筆試以前認真準備一下,不然很難回答上來。測試
4、編程題
(1)連分數比大小
連分數能夠表示爲(a0;a1,a2,……,an),這樣直觀的數學表示爲:
輸入
n,以後是n+1個數字,分別表示a0,a1,……,an
m,以後是m+1個數字,分別表示b0,b1,……,bn
要求比較以上兩個連分數(分別記爲x和y)的大小,n和m不超過100000
輸出
若x>y,輸出「>」,若x<y,輸出「<」,不然輸出「=」
分析:這盜圖並非很難,可是因爲我最後時間不夠,致使寫的代碼沒時間上傳編譯,我本身測試了幾組數據,問題不大。個人思路是先比較兩個數字是否相等,以後把連分數化爲小數進行比較。使用的數據結構爲vector,代碼以下:
1 #include<iostream> 2 #include <vector> 3 #include <algorithm> 4 using namespace std; 5 int main() 6 { 7 vector<int> x(100100); 8 vector<int> y(100100); 9 int numX, numY; 10 //double resX = 0.0,resY = 0.0; 11 cin >> numX; 12 for (int i = 0; i < numX + 1; i++) 13 cin >> x[i]; 14 cin >> numY; 15 for (int i = 0; i < numY + 1; i++) 16 cin >> y[i]; 17 if (x == y) 18 cout << '=' << endl; 19 else 20 { 21 double tempX = x[numX]; 22 for (int i = numX-1; i >= 0; i--) 23 { 24 tempX = x[i] + 1.0 / tempX; 25 //resX += 1.0 / x[i] + x[i - 1]; 26 } 27 double tempY = y[numY]; 28 for (int i = numY - 1; i >= 0; i--) 29 tempY = y[i] + 1.0 / tempY; 30 31 //cout << tempX << endl;// << " " << tempY << endl; 32 if (tempX > tempY) 33 cout << '>'; 34 else 35 cout << '<'; 36 // cout << temp << endl; 37 } 38 return 0; 39 }
(2)區域劃分