程序員必須掌握哪些算法?附各大公司算法面試題+IT編程學習資料

01 算法與數據結構

算法與數據結構是面試考察的重中之重,也是同學們日後刷題時需要著重訓練的部分。簡單的總結一下,大約有這些內容:

算法 - Algorithms

  1. 排序算法:快速排序、歸併排序、計數排序
  2. 搜索算法:回溯、遞歸、剪枝技巧
  3. 圖論:最短路、最小生成樹、網絡流建模
  4. 動態規劃:揹包問題、最長子序列、計數問題
  5. 基礎技巧:分治、倍增、二分、貪心

數據結構 - Data Structures

  1. 數組與鏈表:單 / 雙向鏈表、跳舞鏈
  2. 棧與隊列
  3. 樹與圖:最近公共祖先、並查集
  4. 哈希表
  5. 堆:大 / 小根堆、可並堆
  6. 字符串:字典樹、後綴樹


02 經典面試題目

此外,我們還為大家整理了一些互聯網公司面試常見的 算法題目

首先,讓我們回顧幾個有意思的經典互聯網公司的面試題目,熱熱身。

一、給你一個長度為 n 的數組,其中只有一個數字出現了奇數次,其他均出現偶數次,問如何使用優秀的時空複雜度快速找到這個數字。

136. 只出現一次的數字

二、給你一個長度為 n 的數組,其中只有一個數字出現了大於等於 n/2 次,問如何使用優秀的時空複雜度快速找到這個數字。

169. 求眾數

三、給你一個 n*m 的二維數組,每行元素保證遞增,每列元素保證遞增,試問如何使用優秀的時間複雜度找到某個數字(或者判斷不存在)。

240. 搜索二維矩陣 II

四、給你兩顆二叉搜索樹,如何使用線性的時間複雜度,將它們合併成一顆二叉搜索樹。

88.合併兩個有序數組

五、假設有 100 層的高樓,給你兩個完全一樣的雞蛋。請你設計一種方法,能夠試出來從第幾層樓開始往下扔雞蛋,雞蛋會碎。當然,這個問題還有推廣版本,有興趣的同學可以思考一下。假設有 n 層樓,給你 k 個完全一樣的雞蛋,請問最壞情況下,至少需要試驗多少次才能知道從第幾層樓開始往下扔雞蛋,雞蛋會碎。

887. 雞蛋掉落

乾貨預警!

力扣(LeetCode) 將 Top Interview Questions 按照類別進行了整理,以供大家按模塊練習。

詳情請到力扣官網 “2018年力扣高頻算法面試題彙總” 探索卡片進行專項練習。

程序員必須掌握哪些算法?附各大公司算法面試題+IT編程學習資料


03 面試題型彙總

作為在電話 / 現場面試中短短不到一個小時時間內,提供給面試者白板編程解決的算法題目,它與筆試上機、編程競賽中的題目在難度與形式上還是有一些不同的。

這裡有一張互聯網公司面試中經常考察的問題類型總結的思維導圖,我們可以結合圖片中的信息分析一下。

程序員必須掌握哪些算法?附各大公司算法面試題+IT編程學習資料

可以明確的一點是,面試算法題目在難度上(尤其是代碼難度上)會略低一些,傾向於考察一些基礎數據結構與算法,對於高級算法和奇技淫巧一般不作考察。

代碼題主要考察編程語言的應用是否熟練,基礎是否紮實,一般來會讓面試者寫出代碼完成一些簡單的需求或者使用遞歸實現某些功能,而數學題傾向於考察概率相關的問題。以上這兩類問題,出現的頻率不會很高,即使出現了也應該是面試中的簡單部分,相信一定難不倒在座的各位同學們。

最後檸檬給大家準備了一些編程語言的視頻自學資料,希望對大家有所幫助。

程序員必須掌握哪些算法?附各大公司算法面試題+IT編程學習資料

程序員必須掌握哪些算法?附各大公司算法面試題+IT編程學習資料

程序員必須掌握哪些算法?附各大公司算法面試題+IT編程學習資料

如果你需要這些java、python等編程語言的自學視頻教程的話,可以私信小編:“資料”,就可以免費領取到啦!

可以的話請幫檸檬轉發一下,讓更多的小夥伴可以分享到這麼好的學習乾貨資料,謝謝大家!

相關推薦

推薦中...