筆試面試中的算法題小議

Pascal的老爹,N.Wirth老爺爺曾經說過:

呆塔撕抓個扯+阿哥累死母=菩露古拉母
翻譯一下就是: Data Structure + Algorithm = Program

老爹不愧爲老爹,說的話到現在都那麼至理名言.

首先聲明一下

1 俺沒搞過ACM/ICPC(不知道這個名詞的去搜一下,偶對搞這個的大牛總是很蔥白的)
,因爲當年俺在可以搞這個的最佳時機(二下三上)沉迷魔獸了,最後換來個軟院魔獸單
挑冠軍,覺得很不划算,所以,勸你們能不玩遊戲的還是儘量別玩遊戲

2 俺也沒搞過算法上面的研究,最多會用用master定理猜猜複雜度,能看懂一些算法復
雜性的概率證明,甚至連NPC,圖靈機這樣的鼕鼕我到現在也不明白。所以說,俺在傳統
意義的算法學習上面只是一個門外漢,不過沒啥,能混過筆試面試就夠鳥,俺很沒追求的
,別學我。

3 俺所有的算法知識只來源於:百合算法版,算法導論,其他一些筆經。

所以,我小議的數據結構算法都是根據我的筆試面試及看人筆經面經中所得出的一點
經驗,個人認爲比較實用。

先說說IT 求職中算法題的特點:
除非是什麼MSRA ,IBM CRL專門的研究組要招一個算法方面術業有專攻的人才,
一般的小本小碩出來,面你的算法題都是短小精悍,沒有很強的實際背景,比較
容易抽象成接近經典問題的題目 (有點繞口,對吧,自己慢慢讀一下)

下面算法導論簡稱CLRS,動態規劃簡稱dp ,二分查找binary search簡稱bs

這裏給出我自己親身經歷過的幾個題目,你們看看:

microstrategy筆試:圖裏找回路(經典問題,書上的)

2006 google秋季筆試:
費波納妾(這個比較好聽,呵呵)的一個選擇題,很簡單
兩個排好序的數組求中位數(CLRS Exercises 9.3-8 原題,沒做出來)
 
2007 google春季筆試:
 一個類似費波納妾問題的複雜度分析,選擇題,也可以算是dp的一個小問題(pass )

 一個字符串的處理問題,沒啥算法,就是呆呆地處理(pass )
 一個樹形dp問題(CLRS dp那章後面有個樹形dp的問題,看過了就會做了,pass )

  這套筆試題我在算法版貼過,你們可以搜一下,答案基本後面回貼也有

2007 google春季面試:(雖然簽了保密協議,不過那幾個題太弱了,寫出來)
 多項式合併(pass )
 統計一個文章裏出現次數最多的5個單詞(考hash,pass )

2007 emc 筆試:
 一個翻硬幣的概率題(自己算了一下,推了一下,pass )
  一個給圓填充的問題,沒啥算法,考慮邊界情況就行了 ( pass )
  最後那個一行寫遞歸的題目(院版討論過,很好的題目,不過我沒做出來)

2007 emc 面試:
  只有指向當前節點的指針,無鏈表頭節點,刪除這個結點
  (解法有點tricky,就是把他下一個節點的內容考過來,刪掉下一個,pass )
  一個英文句子,把裏面的單詞都轉置(面試寶典裏的原題,想都no想,pass )

恩,看過一遍了吧,呵呵,沒有很難的東西。
我至今見過實現起來很難的好像是Audodesk考的一個,鏈表找環問題也算是微軟出的一個
比較經典的題目。google 有一個從樓上扔雞蛋的題目算是個難題
(見Adapter的blog )。

上面都是些實戰經歷,有的來自課本,有的來自積累,有的來自靈機一動。

所以,先把你的數據結構書翻熟。
quick sort,heap sort ,binary search, hash, AVL., B tree等等,這些基本的出現的
概率最大,如果這些你都不能保證做對,那麼其他的你就更不能保證了。

這個搞熟了可以看看算法導論(英文版),一來是學怎麼英語表達(我前面說過)
二來是算法導論寫的通俗易懂,老少皆宜,三是很多題目直接來自其中
(特別是google 的題目,googler 真懶,我在水木看過不下6道被人討論的一b的題直接來
自後面的problem,我曾經很騷包地把我看過的一題的答案貼在其中,被人仰慕了好久,
哈哈,我虛僞地笑)


算法導論可看章節1~16,22,23,24,32

重點章節(後面的exercise ,problem要好好思考,好好理解,好好消化!!!!)

4 Recurrences,裏面n題被考過,我都背的出來了。
  master 定理,證明你就別看了,怎麼用還是多看看。

5 Probabilistic Analysis and Randomized Algorithms
  結合appendix c的概率知識看,這幾年概率題考的越來越多

6,7 heapsort,quick sort,兩個最經典的sort algorithm,被考過無數遍

8 Sorting in Linear Time
counting sort ,這個在大規模數據的sort &&search 中很常用,
你要是面什麼搜索部門,一定要多看看這個

9 Medians and Order Statistics
最經典的那個線性時間求數組中位數問題,問過無數次的
後面習題裏有個紅藍水壺配對問題,經典變種,google 考過。

15 Dynamic Programming
最爲帥氣的算法設計策略,經典的LCS,第一次看到咱被她美得想哭,
作爲字符串處理方面的經典問題,被考過無數遍;
後面有個edit distance,beautiful print的題目也很贊
這章看透,題目做透,筆試面試中的dp你基本都可以搞定。
Dijiskara也是dp在圖算法中一個非常經典的應用

16 greedy algorithms
經典揹包問題,看清楚裏面討論0/1揹包和非0/1揹包
再看後面那個23章最小生成樹的Kruskal's algorithm ,典型的貪心應用

32 string match
我還沒看,不過現在百渡啥的就考字符串,如果你想去他家
我覺得應該多看看。

考,我寫了這麼多,mit press 是不是要給我點宣傳費了:)

百合算法版主頁置定有個Instructor's mannual,裏面給出了很多題的標準答案.
不過數學證明或者正確性的證明往往篇幅很長,我們出於一點功利的態度,可以
略去部分不看.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

晚上喝了三兩百年口子窖,寫了這麼多現在有點小暈了.
暫且就這點吧.

把英語和算法寫完,我也算完成了一個不小的任務,姑且算個mile  stone。

各位小筒子們就先湊或看看吧,如果對你們能有幫助,我是再高興不過了。
比被100個美女稱我蟀蟈還高興,哈哈。

咱也無慾無求了,以後想到啥,根據形勢的變化再來 continue 吧。

Wish all you guys do a  cool ,beautiful ,fascinating ,incredible,unbelievable,
brilliant,splendid, terrific, magnificant, fabulous, marvelous (我理不屈,但是
詞窮了,更重要是我自己快喘不上氣了)job in your 2007 job hunting battle.

再套用月之女祭祀(princess of moon)那句話:

Warriors of SE, assemble!

 

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