大公司筆試面試有哪些經典演算法題目?


額~這個問題,我至少準備了半年。給題主點經驗:

首先,強烈建議採用「題海戰術」。我當然不會告訴題主,今年面了數十家公司,90%的題目是原題(沒辦法,就那幾個知識點,能有什麼新題)
題庫在哪裡呢?按照循序漸進的原則,一一介紹:
1. cc150,全名cracking the coding interview - 150 Programming Questions and Solutions。經典中的經典,曾有人別的啥都不做,刷這本書三四遍,拿了Google的offer(注意是在美國,在中國就算了……)這本書的優勢在於分章節,每章突出一塊知識,題目精鍊,答案好找;缺點呢,你寫出的代碼,需要深度檢驗,而cc150是書不是online judge,這個還是做不到。
2. leetcode。程序員刷面試題的第一網站,題多且全,少部分題目收費。刷的人很多,答案非常好找。online judge能深度檢驗代碼的正確性,刷leetcode是最能鍛煉演算法題能力的。假如說時間有限只能刷一個,那必須是leetcode,假如時間夠多……lintcode、meetqun等各大面試題OJ歡迎你,此外還有許多國內外大學的OJ。
----------------------------------------------------------------------------------------------------------------------------------------
以上是兩大主力,但是光這兩個,還不能到「題海」的水平,而且由於它們名氣太響,有些公司有時會避開裡面的題目……來,我們繼續找題目。
3. 編程之美、劍指offer:就當成兩本習題集好了,裡面有些題目和1、2重複,但是大部分題目還是很優秀很巧妙的。重點是交叉對比,你就知道哪些是經典題目了。
4. careercup、看準網等:每家公司都有自己喜歡出的題目,這些網站方便你去找面經,緊跟公司出題潮流。
5. 「結構之法」博客:July大神的博客,內容豐富,學習一年都可以。這裡只講裡面的演算法題:「微軟面試100題」(實際上已經快500題了)系列,堪稱演算法題的大寶庫,包羅萬象,而且很多題目很新,是面試官喜歡出的類型……不過這個系列的排版略微混亂,很多題也沒有答案;「程序員編程藝術」系列,講的很細緻,適合深入去學習一些演算法;「教你如何迅速秒殺掉:99%的海量數據處理面試題」,很實用的海量數據處理面試文章。
6. 經典庫函數。這塊單獨拉出來,是因為考的很多,比如atoi,strstr,memcpy等等……在「程序員編程藝術」中,雜七雜八有相關的論述,最好自己系統整理一下。
------------------------------------------------------------------------------------------------------------------------------------------

好,這些足夠我們的題海了。下面來講一下,哪些屬於題海中的重點。
1. 最高優先順序:面經。這個比什麼都重要,為了節約招聘成本,同一家公司的題目,通常不會換的太勤快。
2. 次優先順序:很經典的題目。什麼定義為經典?前面我寫了123456,假如某道題目能重複出現幾次,那絕對是不朽經典(如atoi、LCS、LPS、單鏈表逆置……),經典的題目畢竟出的最多,一定要非常熟練。
3. 再次:稍微短一點(50行之內),稍微新一點的題目。面試官通常時間有限,沒時間讓你寫個上百行,所以50行左右是最好的。
4. 最末:答案很長的題目。這種題目一般不出,要是出出來,一般就是壓軸大戲,為了最後檢測……通常長題目容易亂,分模塊慢慢寫,不著急。
------------------------------------------------------------------------------------------------------------------------------------------

光在IDE上敲是不夠的,還要練習多在紙上寫。
做多了,就會感覺這些題目都一樣……無非dp、二分、排序、遞歸……無非開數組、調函數、用stl……然後題主就會悟出演算法題只是公司招聘沒辦法的選擇,因為面fresh grad也沒啥別的方法了,這個方法最簡單粗暴高效。然而實際工作中,重要的還是項目能力。能悟出這個道理,題主就該修成正果了。


基本上就在以下兩本書里了,刷完通關概率90%以上

劍指Offer_牛客網
程序員面試金典


劍指offer裡面的題目應該說是名企面試最常考的了,發現了一個可以在線編程練習的題庫,支持js/php/java/c++/python/c#等等語言,好像一共65道題,認真刷一遍,相信會有不小的收穫。

1、二維數組中的查找
2、替換空格
3、從尾到頭列印鏈表
4、重建二叉樹
5、用兩個棧實現隊列
6、旋轉數組的最小數字
7、斐波那契數列
8、跳台階
9、變態跳台階
10、矩形覆蓋
11、二進位中1的個數
12、數值的整數次方
13、調整數組順序使奇數位於偶數前面
14、鏈表中倒數第k個結點
15、反轉鏈表
16、合併兩個排序的鏈表
17、樹的子結構
18、二叉樹的鏡像
19、順時針列印矩陣
20、包含min函數的棧
21、棧的壓入、彈出序列
22、從上往下列印二叉樹
23、二叉搜索樹的後序遍歷序列
24、二叉樹中和為某一值的路徑
25、複雜鏈表的複製
26、二叉搜索樹與雙向鏈表
27、字元串的排列
28、數組中出現次數超過一半的數字
29、最小的K個數
30、連續子數組的最大和
31、整數中1出現的次數(從1到n整數中1出現的次數)
32、把數組排成最小的數
33、丑數
34、第一個只出現一次的字元
35、數組中的逆序對
36、兩個鏈表的第一個公共結點
37、數字在排序數組中出現的次數
38、二叉樹的深度
39、平衡二叉樹
40、數組中只出現一次的數字
41、和為S的連續正數序列
42、和為S的兩個數字
43、左旋轉字元串
44、翻轉單詞順序列
45、孩子們的遊戲(圓圈中最後剩下的數)
46、撲克牌順子
47、求1+2+3+...+n
48、不用加減乘除做加法
49、把字元串轉換成整數
50、數組中重複的數字
51、構建乘積數組
52、正則表達式匹配
53、表示數值的字元串
54、字元流中第一個不重複的字元
55、鏈表中環的入口結點
56、二叉樹的下一個結點
57、對稱的二叉樹
58、按之字形順序列印二叉樹
59、把二叉樹列印成多行
60、序列化二叉樹
61、二叉搜索樹的第k個結點
62、數據流中的中位數
63、滑動窗口的最大值
64、機器人的運動範圍
65、矩陣中的路徑


提供一些互聯網名企的校園招聘筆試真題,多數為17屆校招真題,供參考:

一、阿里巴巴:

阿里巴巴2017秋招客戶端附加題

阿里巴巴2017秋招前端筆試題

阿里巴巴2017秋招研發工程師筆試題

阿里巴巴2017實習生筆試題(一)

阿里巴巴2017實習生筆試題(二)

二、騰訊

騰訊2017秋招筆試編程題

騰訊2017暑期實習生編程題

騰訊2016研發工程師編程題

三、百度

百度2017春招筆試真題編程題集合

百度2016研發工程師在線編程題

百度2016研發工程師在線模擬筆試

四、微軟

微軟研發工程師筆試卷A

微軟研發工程師筆試卷B

五、京東

京東2017校招編程題匯總

京東2016研發工程師編程題

京東2016研發工程師編程題(二)

京東2017校招Android主觀題匯總

京東2017校招前端主觀題匯總

六、網易

網易2017秋招編程題集合

網易2017內推筆試編程題合集(一)

網易2017內推筆試編程題合集(二)

網易有道2017內推編程題

2017網易遊戲雷火盤古實習生招聘筆試真題

七、美團點評

美團點評2017秋招筆試編程題

CodeM美團點評編程大賽初賽A輪

CodeM美團點評編程大賽初賽B輪

CodeM美團點評編程大賽複賽

八、滴滴出行

滴滴出行2017秋招筆試真題-編程題匯總

滴滴出行2017秋招測試崗筆試真題匯總

滴滴出行2017秋招工程崗筆試真題匯總

滴滴出行2017秋招運維崗筆試真題匯總

滴滴出行2017秋招演算法崗筆試真題匯總

滴滴出行2017秋招系統崗筆試真題匯總

九、去哪兒

去哪兒2016研發工程師編程題

去哪兒2015研發工程師筆試題

十、華為

華為研發工程師編程題

華為2016研發工程師編程題

十一、奇虎360

2016奇虎360研發工程師內推筆試編程題

奇虎360 2016研發工程師筆試題(一)

奇虎360 2016研發工程師筆試題(二)

奇虎360 2016數據挖掘筆試題

十二、蘑菇街

蘑菇街2017校園招聘筆試題

蘑菇街2016研發工程師在線編程題

蘑菇街2016研發工程師筆試題

十三、搜狗

搜狗2016研發工程師編程題

搜狗2016研發工程師筆試題

搜狗2016研發工程師筆試題(二)

更多企業真題請戳 互聯網公司真題題庫


來送一下福利。

以下是我整理的Google、Facebook、Amazon、Ebay、Uber、Microsoft 等大IT公司的演算法面試題目,大部分是這兩年的常見演算法面試題,還有一些是新題。

這些題目不僅適用于海外IT公司的演算法面試,也適用於國內IT公司的演算法面試。目前,國內的百度、阿里、騰訊、滴滴、美團這些公司的演算法面試題跟下面的演算法面試題也是差不多的。希望有所幫助。

Google 面試題:

Google 面試題 | 目標和

Google 面試題 | 建郵局

Google 面試題 | 0與1的問題

Google 面試題 | 驗證UTF-8

Google 面試題 | Data Stream Median - Python版

Google 面試題 | 二進位手錶

Google 面試題 | 硬幣排成一條線3

Google 面試題 | 除法求值

Google 面試題 | 不同的子序列 解法1

Google 面試題 | 貪吃蛇

Google 面試題 | 數字計數

Google 面試題 | Palindrome Partitioning II

Google 面試題 | 最大可分子集

Google 面試題 | 軸對稱

Google 面試題 | 俄羅斯套娃信封

Google 面試題 | Search a 2D Matrix II

Google 面試題 | 尋找中位數

Google 面試題 | 路線重現

Google 面試題 | Data Stream Median - Python版

Google 面試題 | 數組補丁

Google 面試題 | 不構造樹的情況下驗證先序遍歷

Google 面試題 | 擺動排序 II

Google 面試題 | 矩陣中的最長上升路徑

Google 面試題 | 島嶼計數2

Google 面試題 | Count of Smaller Numbers After Self(數組計數)

Google 面試題 | 翻轉遊戲(Flip Game II)

Google 面試題 | 吹氣球

Google 面試題 | 去除文件中的重複行

Google 面試題 | 最多有k個不同字元的最長子字元串

Google 面試題 | 最多有k個不同字元的最長子字元串

Google 面試題 | 外星人的字典(Alien Dictionary)


Facebook 面試題:

Facebook 面試題 | 將數字轉換為十六進位

Facebook 面試題 | 左葉子之和

Facebook 面試題 | 將數字轉換為十六進位

Facebook 面試題 | 桌上的戰艦

Facebook 面試題 | Backpack VI 背包演算法

Facebook 面試題 | 迷你解析器

Facebook 面試題 | Search a 2D Matrix II

Facebook 面試題 | The Building Outline

Facebook 面試題 | 遞增三元組子序列

Facebook 面試題 | 外星人的字典(Alien Dictionary)


Amazon 面試題:

Amazon 面試題 | 反轉母音字母

Amazon OA 真題: Most Often String


Ebay 面試題:

Ebay 面試題 | 把數組分成和大小一樣的集合

Ebay 面試題 | 分裂成兩個和相等的子集


Linkedin 面試題:

Linkedin 面試題 | 複製隨機指針

LinkedIn 面試題 | 合法平方數


Uber 面試題:

Uber 面試題 | 兩個排序數組的的中位數

Uber 面試題 | 房屋竊賊 House Robber II

Uber 面試題 | House Robber III


Microsoft 面試題:

Microsoft 面試題 | 最大二叉搜索子樹


Zenefits 面試題:

Zenefits 電面題amp;amp;解析

Zenefits 資料庫設計面試題

Zenefits 最新 OA 面試題


歡迎關注我的微信公眾號:九章演算法(ninechapter),定期發布最新的IT公司面試題和解析。


最長公共子串/各種類似DP
海量檢索詞日誌,求出現頻率最多的n個
海量網頁文本,尋找所有存在敏感詞的網頁,敏感詞有個詞表


樹下一個猴,樹上騎個猴,一共幾個猴?


有2n+1個整數,其中有n對一樣的數字,請用最快的方法找出單獨的那個數?
有2n+2的整數, 其中有n對一樣的數字,請用最快的方法找出單獨的那兩個數?
有2n+3個整數,其中有n對一樣的數字,請用最快的方法找出單獨的那三個數?


我的面試遇到的題目,都是直接寫代碼。
二分查找+旋轉數組查找,百度和阿里面試都有問過
鏈表操作:逆置鏈表,逆置後面K個節點,鏈錶快排,這三道題百度遇到過,另外網易遇到過鏈表歸併。
排序矩陣查找一個數:百度
快排||堆排:無序數組查找第K大,蘑菇街和百度問到。
二叉樹:判斷是否是平衡二叉樹,網易遇到,二叉樹層次遍歷,微軟遇到。


ls的幾位問DP的 - -
我倒是被要求用20分鐘寫一個diff的
作為面試官,參與過兩輪招聘,我幾乎是不會問DP的,除非那個人簡歷上寫的是各種nb,我才會讓他寫個diff。而且我出的題難度不會超過我被面試過的難度。
如果是社會招聘,大家都是有目的而為之,沒有必要讓別人寫個DP
如果是校園招聘,可以做個抽樣調查,能寫出quick sort的都沒幾個
我個人是不建議用很難的演算法去搞人的,比如以前我的同事,考過一道數學題,貌似只有一個人做出來了,還有一個人做了一半。
考的重點應該是思維的謹慎以及思路而不是難度。
當然如果是研究所招聘,就是搞演算法的,可以。
至於會出什麼題目,主要還是一些涉及數學和編程方面的東西,把演算法導論看懂而不是看熟就可以了。
我只出過兩道算是有點難度的題目給少於5個人
1.diff
2.平衡二叉樹的旋轉
其他基本上是看書認真的人都能做的題目。


被問過最長遞增子序列、尋找第K大數、多模式字元串匹配、2個有序集合求交、歸併排序等等


難道上知乎的全是程序員?


微策略面試遇到一道數組合併排序。
微軟五輪面試有三輪遇到鏈表合併排序及其變種!
阿里遇到海量數據處理的題,這個把演算法之道博客里那個秒殺99%海量數據處理看完就能搞定,這樣的題沒什麼難度。


我一般給校招生出的題目都直接給出思路,看他們能不能寫出代碼,進行優化。


我準備創業,這是面試題
流動停車平台(移動停車點)是否可以解決共享單車停放擁堵問題?https://www.zhihu.com/question/59509500
如題如圖。設置流動單車回收平台(就像移動公共廁所)根據單車分布熱力圖,實時調整單車回收放置點,是否可以解決共享單車停放擁堵,停放佔道問題。


leetcode


把本科學的基礎在紙上寫熟練就好。


推薦閱讀:

ACM 中常用的演算法有哪些?
如何在三角形(比如正三角形)里隨機取點?
手機的九宮格圖案解鎖總共能繪出多少種圖案?
什麼是動態規劃?動態規劃的意義是什麼?
PRML為何是機器學習的經典書籍中的經典?

TAG:演算法 | 調查類問題 | 編程 |