1. 程式人生 > >最全BAT演算法面試130題:阿里、百度、騰訊、京東、美團、今日頭條

最全BAT演算法面試130題:阿里、百度、騰訊、京東、美團、今日頭條

【百度、阿里、騰訊、京東、美團、今日頭條】等公司都會必考關於演算法的面試題目,今天總結演算法和題目如下:

演算法基礎:

第一:複雜度估算和排序演算法(上)

1) 時間複雜度和空間複雜度

2)認識對數器

3)氣泡排序

4)選擇排序

5)插入排序

6)如何分析遞迴過程的時間複雜度

7)歸併排序

8)小和問題

第二:複雜度估算和排序演算法(下)

1)荷蘭國旗問題

2)隨機快速排序

3)堆結構與堆排序

4)認識排序演算法的穩定性

5)認識比較器

6)桶排序

7)計數排序

8)基數排序

9)陣列排序後的最大差值問題

10)排序演算法在工程中的應用

第三:章棧、佇列、連結串列、陣列和矩陣結構

1)棧結構

2)佇列結構

3)連結串列結構

4)陣列結構

5)矩陣結構

6)二分搜尋的擴充套件

第四:二叉樹結構

1)二叉樹結構

2)二叉樹的遞迴與非遞迴遍歷

3)列印二叉樹

4)判斷搜尋二叉樹

5)判斷完全二叉樹

6)判斷平衡二叉樹

7)摺紙問題

8)二叉樹節點的前驅節點與後繼節點

9)二叉樹的序列化和反序列化

第五:和雜湊函式有關的三個結構與並查集

1)雜湊函式與雜湊表

2)布隆過濾器詳解

3)一致性雜湊結構

4)並查集結構與應用(島問題)

第六:章圖演算法

1)圖結構的表示方法

2)圖的深度優先遍歷與寬度優先遍歷

3)拓撲排序問題

4)最小生成樹問題

5)單源最短路徑問題

第七:字首樹、堆結構和貪心演算法

1)字首樹

2)堆結構的擴充套件與應用

3)介紹貪心演算法及其相關題目

4)在面試中如何快速的嘗試出貪心策略

第八:暴力遞迴到動態規劃

1)遞迴

2)動態規劃

3)如何把暴力遞迴套路的變成動態規劃

演算法高階:

第一:KMP演算法和Manacher演算法

1)KMP演算法及其擴充套件面試題目

2)Manacher演算法及其擴充套件面試題目

第二:視窗內最大值的更新結構和單調棧結構

1)視窗內最大值的更新結構

2)單調棧結構

第三:Morris遍歷和sortedMap

1)二叉樹的Morris遍歷

2)跳錶結構

3)AVL樹和紅黑樹結構

【今日頭條、拼多多題目】

分類演算法的理解

  • 決策樹的原理
  • 支援向量機
  • 邏輯斯蒂迴歸

聚類演算法的理解

  • 均值聚類,可選的引數,如果確定聚類個數
  • 聚類和分類的異同,舉例說明

特徵選擇演算法的理解

整合提升的理解

  • xgboost
  • gbdt

【面試題目】

  1. 二叉樹前序遞迴遍歷演算法(手寫程式碼)
  2. 二叉樹的前中後遍歷
  3. 二叉樹的檔案儲存,也就是序列化。
  4. 二叉樹遍歷,描述下層序遍歷。
  5. 二維陣列,每行遞增,每列遞增,任意交換其中的兩數,發現並恢復。
  6. 二維陣列,每行遞增,每列遞增,實現查詢。
  7. 二維陣列,每行遞增,每列遞增,求第k大的數。
  8. 什麼樣的資料結構可以滿足多次插入刪除,取最小數,給出時間複雜度。
  9. 介紹二叉樹前序遍歷非遞迴遍歷演算法(手寫程式碼)
  10. 介紹大頂堆和小頂堆
  11. 從一組數中找出和為sum的三個數(leetcode)
  12. 氣泡排序(手寫程式碼)
  13. 寫 find 函式,在目標串中匹配模式串(要考慮中文字元的情況)
  14. 寫一個二叉樹的非遞迴的後續遍歷
  15. 寫一個簡單的正則匹配表示式(將文字中的123.4匹配出來)
  16. 寫個動態規劃,最長公共子序列
  17. 判斷一個字串是否為另外一個字串旋轉之後的字串
  18. 前k大的數
  19. 單鏈表的翻轉
  20. 去掉連續的重複數字,輸出新陣列,例如:1,2,2,2,1,3,5——> 3,5。
  21. 去除字串S1中的字元使得最終的字串S2不包含’ab’和’c’。(Code)
  22. 合法括號匹配
  23. 在一個字串中,找出最長的無重複字元的字串
  24. 在二叉樹結點結構中加一個指標域,使其指向層次遍歷的下一個結點,特別地,每一層的最後一個結點為空。(Code)
  25. 堆排序(手寫程式碼)
  26. 堆是怎麼調整的。
  27. 複雜連結串列的複製

大資料題目

  1. 100億數字,怎麼統計前100大的?
  2. 10億個url,每個url大小小於56B,要求去重,記憶體4G。
  3. 1KW句子算相似度(還是那套分塊+hash/建索引,但是因為本人不是做這個的,文字處理根本說一片空白,所以就不誤導大家了),之後就是一直圍繞大資料的題目不斷深化。
  4. Q1:給定一個1T的單詞檔案,檔案中每一行為一個單詞,單詞無序且有重複,當前有5臺計算機。請問如何統計詞頻?
  5. Q2:每臺計算機需要計算200G左右的檔案,記憶體無法存放200G內容,那麼如何統計這些檔案的詞頻?
  6. Q3:如何將1T的檔案均勻地分配給5臺機器,且每臺機器統計完詞頻生成的檔案只需要拼接起來即可(即每臺機器統計的單詞不出現在其他機器中)
  7. 一個大檔案A和一個小檔案B,裡面存的是單詞,要求出在檔案B中但不在檔案A中的單詞。然後大檔案A是無法直接存到記憶體中的。
  8. 一道題目是如果有一個人註冊一個qq,如何保證這個qq號碼和之前已存在的qq號碼不重複呢?
  9. 扔硬幣,連續出現兩次正面即結束,問扔的次數期望
  10. 有100W個集合,每個集合中的word是同義詞,同義詞具有傳遞性, 比如集合1中有word a, 集合2中也有word a, 則集合1,2中所有詞都是同義詞,對這100W個集合進行歸併,同義詞都在一個集合當中。
  11. 有幾個 G 的文字,每行記錄了訪問 ip 的 log ,如何快速統計 ip 出現次數最高的 10 個 ip,如果只用 linux 指令又該怎麼解決;
  12. 海量資料的topk問題。
  13. 最後這篇文章看到這裡小編要告訴大家應該JAVA前端千人(qun):722168979,歡迎大家一起來交流學習,咱們不看技術怎麼樣,小編都歡迎,不定期分享乾貨,包括我自己整理的一份2018最新JAVA資料。