1. 程式人生 > >大資料爬蟲實習面試題

大資料爬蟲實習面試題

面試問題(職位:大資料創新中心爬蟲方向實習):
一面:
1.給一個數組,裡面資料比如:2 3 4 1 1 1 1 1,值代表往後最多能跳多少次,問跳到最後一個的最少步數?(貪心)
答:這題剛開始想的dp,後面想不出方程,然後用了說dfs暴力搞時間複雜度n!,然後再想一下,我覺得是貪心,然後還沒說出他就說你想一下貪心,然後想了30秒就想到了,跟他說了下思路,然後他說對了,不用寫程式碼了。然後又問我怎麼證明對不對?這個想了好久不知道怎麼證明,因為貪心證明感覺是挺難的,然後說不會……

2.給一個樓梯,從最下面往上走,每次可以走1到n步,求總共有多少種走法?(dp或者公式)
答:這題我還給校賽出過題,所以記憶特別清晰,一看就知道是dp,而且方法特容易。
然後他說能不能更快一點的?
然後我說這好像有公式的吧,我推了一下,推的時間好像超過2分鐘了,然後他就提示了一下說用二進位制的方法試一下?
然後發現都是2^(n-1)。

3.還有什麼問題我忘了……

二面:
1.給一個字元陣列,字元包含a-z、1-9,比如:a b c 4 b 2 a c 1 1 3,求只出現一次的第一個出現的字元?(這題太坑,HashMap+queue)
答:這題我感覺太容易了,然後說就用一個數組統計一下字元出現的字數,然後再遍歷一下這個統計的陣列,第一個出現的就是了。
然後他說你能只遍歷一遍,然後O(1)輸出這個字元嗎?
然後想了好久,想過set、map、queue、list等,還是沒想出來,然後跟他說沒想出來。
然後他說你試試用你剛才的兩個資料結構組合試一下,然後我又想啊想,也沒想出來。
然後他說你看看這個LRU Cache,這個裡面就是用的HashMap和queue,你再試一下用這兩個。
然後我想,你不是說O(1)的嗎,現在這些最少也O(lgn)啊,不是坑我嘛!
然後我又想,也沒想出O(1)的方法。
然後他說queue統計次數,HashMap儲存queue的指標不就行了嘛,然後演示了一下,感覺會了,然後他讓我寫出程式碼來……
然後發現雖然思路會了,但是HashMap怎麼存指標不知道,然後還是說沒會,然後他感覺我指標不會還是啥地,就讓我寫一下單鏈表的結構和查詢一個值的函式,然後1分鐘就搞定了,他說那還行吧……
(那時我都想跟他說了,剛才用的HashMap和queue不能達到O(1)的複雜度輸出結果,而且空間複雜度還非常大,雖然能降到O(lgn),但是O(n)就只用了一個數組就行了,後面感覺不能頂撞他,所以不敢說……)

2.有一個html文字字串,讓我取出<a href="提示我這個連結地址">sflkj</a>這個a標籤裡面的href的連結地址?
答:這個剛開始我直接for遍歷的,寫了十幾二十行程式碼他看不下去了,說有如果有個find函式尋找字串首地址,重新寫一下看看。
然後我又擦了重新寫,又跟他聊了bug,說連結地址裡面可能有>什麼特殊字元的,然後我又處理,寫了幾分鐘吧,寫好了,然後他說還行吧,不過還得優化一下,讓程式碼最少。(因為我定義了4,5個int的變數讓他不爽)
然後他又給我寫了一下最優化的程式碼,只用了一個Int變數就行了,程式碼也比我的短。

3.用bfs把一個圖改成樹?二維陣列表示圖這個直接佇列模擬一遍就行了。
但是我用的也是二維陣列表示的樹,然後他說你能不能用一個結構體表示一下樹,然後我想了一下只會二叉樹的結構體,然後他提示說二叉樹不是一個左右結點嘛是吧,如果多叉樹的話,你放一個list存子結點不就有多個了嘛,然後才恍然大悟。