2014年計算機求職總結--面試篇

WalkingInTheWind發表於2014-03-30

又一年實習招聘陸續開始了,這裡分享一下我在2013年實習招聘和秋季招聘中的一些面試經歷,希望能對找工作的同學有所幫助。

2013年面試過的公司有蘑菇街、網易遊戲、阿里巴巴、騰訊、百度、大眾點評、人人網、雅虎(北研)、WAP。

一、蘑菇街

一面(實習)

現場面試。先問了一下實習經歷以及研究生期間做的專案,面試前一定要好好回顧一下這些。因為我申請的是搜尋引擎和儲存方向,就問了我對大資料的理解。還問了一下為什麼讀研,千萬別說人家都讀我就跟著讀,要從深層次上分析讀研的優勢,讓面試官覺得你是經過深思熟慮選擇讀研的。然後出了個小演算法題,漢諾塔遞迴,演算法雖然簡單,但是實現的漂亮很難,程式碼風格、可讀性、可擴充套件性、測試用例等等都要好好考慮。然後又問了些平時關注什麼技術,雖然不是直接技術問題,但是這類問題也不能忽視,這些問題可以反映出你的知識面、對技術的熱情等等,這也是公司很看重的。後來又回過頭來問了一點專案,問如果你現在再架構一次,你會怎麼做等等,所以,做過的專案不僅要知道專案的難點在哪,也要知道當時做專案時的不足等等。整個過程差不多也就半小時,總體表現很差。

二面(實習)

現場面試。面試內容印象不深了,不是純技術面試,問一些性格了、團隊合作、實習時間、以後是否留在蘑菇街等等。

二面後就沒訊息了,可能總體面試結果不好,也可能面試官覺得我以後不是很想在蘑菇街工作,所以,想要拿到offer一定要表現出自己的誠意,比如為什麼選擇該公司,能夠分析出公司的優勢、競爭力等等。

二、網易遊戲

一面(實習)

電話面試,HR面,這個有點沒想到。

二面(實習)

現場面試,技術面。

三面(實習)

現場面試,技術面。

現場技術面試都是40分鐘左右。這裡我就不方便透漏具體的面試題了。考察知識涉及到c++、作業系統、演算法、圖形學、數學等等,考察得很全面。

最後拿到實習offer,線上遊戲部門,並通過實習拿到秋招offer。

三、阿里巴巴

一面(實習)

電話面試。首先問了一下之前在淘寶實習的情況。實習有什麼感想,實習接觸的東西和學校接觸的有什麼區別,等等。專案中你遇到的最難的事情是什麼。選擇開源實現時,如何評估。後面就是基礎技術。c++中虛擬函式是怎樣實現的。為什麼要有虛擬函式機制。什麼情況會使用多型機制。string的記憶體怎麼實現的,長度的動態變化怎麼處理,為什麼兩倍擴充套件。string a; string b = a;這時會不會有記憶體拷貝相關的東西。如果你自己設計一個類,管理可變長度的字串,你怎樣考慮優化。引用計數的實現,效率。STL庫瞭解的多嗎。map是怎麼實現的。iterator++和++iterator區別,哪種效率高。喜歡研究還是工程。實習時間問題。程式的編譯時間和什麼相關。怎麼樣減少編譯檔案依賴。.h和.cpp有什麼區別。inline問題。

二面(實習)

現場面試。技術總監面的。聊了些專案,問了些c++底層實現,垃圾收集,搜尋引擎等,寫了個簡單的程式碼。然後另一個技術總監,問了下GFS,外部排序問題,記憶體管理等。

三面(實習)

現場面試。前兩面是所應聘部門的面試,這一面是阿里巴巴集團統一的面試。應該也是個總監。記得也不多了,問的比較抽象比較底層的東西,資料庫各種索引優缺點,紅黑樹,STL的設計是面向函式還是物件導向以及為什麼這樣設計,函數語言程式設計等等。

拿到實習offer,阿里雲部門。

終面(秋招)

雖然沒有去阿里實習,但是當時拿到實習offer的同學秋招可以直接進入終面,還是可以省很多精力的。

終面基本都是一個技術術總監,同時旁邊還有一名HR。先是技術面試,同時HR也會在旁邊觀察你的表現吧,最後HR也會問幾個問題。先是介紹一下自己的優勢,以及今後的職業規劃,這樣的問題也應該好好準備,要讓面試官覺得你是個有目標有追求的人;介紹一下簡歷上提到的浙大的PAT考試認證;談一下在網易實習的專案中的難點,專案一定要好好回顧,自己負責的東西,專案難點什麼的;介紹一下常用的垃圾收集演算法;

一個演算法題,一個農夫,一隻狼,一隻羊,一棵白菜過河的問題。。。大家一般都見過這個,如何用寫程式解這個問題;講一下堆排序的思想;講一下動態規劃的思想,並舉例子解釋;闡述一下c++記憶體物件模型中涉及到的一些關鍵問題;介紹一下MapReduce的思想;介紹一下搜尋引擎的實現;給你兩三個月的時間,如何去學習一門技術。HR問題:說一下自己的優點,以及你與周圍的人相比的優點、不足。選擇一個公司你會考慮哪些因素。

拿到秋招offer,阿里雲部門。

四、騰訊

一面(實習)

現場面試。時間比較緊張,每人只有半個小時,連自我介紹都沒有。第一個問題解釋一下大小端模式,並寫出判斷系統是大端還是小端的程式碼。接下來是一段程式碼判斷有沒有問題,一個函式返回了區域性變數的地址,並在外面訪問了。然後是virtual函式底層實現機制。然後是sizeof問題,有虛擬函式的類的大小,64位情況下的大小等等。然後問了一點點網路的,使用UDP傳輸檔案,這個主要是要保證可靠性,在軟體層使用類似TCP的機制,如在UDP包中新增唯一編號,需要接收端確認等,接收端要對資料包排序等。解釋一下頁式記憶體管理。然後問取一個變數的地址是虛擬地址還是實體地址,顯然是虛擬地址,不多解釋。最後是一個程式碼實現,用一個陣列來實現一個連結串列插入刪除查詢等功能。最後問了一下筆試卷子中的題目。總之,時間太緊。

二面(實習)

現場面試。筆試和一面表現還可以,二面面試官就沒怎麼問,隨便聊了一下,騰訊招聘基本上是哪個部門要人,就由哪個部門的人面試。我的面試官是騰訊遊戲的。

三面(實習)

現場面試,HR面試。印象不深了。為什麼選擇騰訊,有沒有其他offer,期望薪水多少等等。

拿到實習offer,騰訊遊戲部門。

一面(秋招)

現場面試。記不清了。好像主要談了些專案。

二面(秋招)

現場面試。記不清了。面的時間不是很長,聊了些專案。

三面(秋招)

現場面試。HR面。記不清了。討論期望薪水什麼的。

拿到秋招offer,騰訊遊戲部門。

五、百度

一面(提前批)

電話面試。

先是自我介紹。如何返回連結串列的第四分之一個結點。網路協議模型幾層?鏈路層是做什麼的?如何判斷兩個機器屬於同一個子網路?什麼場景下需要判斷兩個機器是否屬於同一個子網路?一個陣列,給出一個數,找出陣列中哪兩個元素的和等於該數。給出一個詞典,找出詞典裡所有的變位詞(anagram),分析時間複雜度。堆和棧的區別。大量的new會導致什麼問題?堆記憶體如何管理記憶體?給出兩個檔案,每個檔案50億URL,每個URL64個位元組。找出兩個檔案中共同的URL。磁碟上的檔案不小心刪除了,如何找回來?能恢復檔名嗎?最後就是問還有什麼問題需要問面試官。

二面(提前批)

電話面試。自我介紹。看了哪些書?

class A

    {

    public:

        int a;

        staticint b;

        voidf1();

        staticvoid f2();

        virtualvoid f3();

    };

這個類的大小是多大?static成員變數如何儲存的?static成員函式和普通函式有什麼區別?百度搜尋提示功能如何實現?一個整數陣列,長度為n,每個數的範圍都是1~n+2,每個數字不重複,亂序的,求缺失的兩個陣列。TCP的擁塞視窗功能。TCP的三次握手過程,為什麼需要三次握手,TCP如何實現可靠通訊。資料庫的索引,各種索引的特點。B+樹的插入過程。一個包含很多單詞的檔案,每行一個單詞,查詢一個單詞是否在這個檔案中。有什麼問題需要問面試官。

三面(提前批)

電話面試。自我介紹。看哪些書。auto_ptr功能,為什麼要使用它。介紹c++的型別轉換,為什麼要使用。

講一下垃圾收集,Java的垃圾收集是怎樣的。介紹一下Map-Reduce,中間會有哪些問題,一般怎樣解決MFC的CButton如何根據自己的需要的樣式重繪。資料庫索引,為什麼需要索引,常用的索引有哪些,聚簇索引是怎樣的。如何判斷一個連結串列是否有環。介紹一下實習經歷。為什麼選擇百度。你的職業規劃是怎樣的,對哪些技術感興趣。你用過的百度產品有哪些,哪個產品感興趣。你覺得自己有什麼優勢能夠進入到百度。你覺得你哪些地方需要去提升。

到9月初收到秋招正式offer,第一個秋招offer。

六、雅虎(北研)

一面(秋招)

先問了一下筆試題中的一個演算法題,題目是這樣的,兩個長度相等的字串,每個字串中刪掉一個字元,剩下的字元順序不變,如果這樣操作後得到的兩個結果相同,就說是原來的兩個字串是相似的,實現函式bool isSimilar(char A[], char B[], int length);筆試時直接用的LCS,複雜度是O(n^2)。後來跟同學討論得知了一個O(n)的演算法,給面試官說了一下。筆試題回去之後一定要好好討論總結一下,如果是演算法題,基本上面試都會再問到的。看我簡歷上寫的c++很好,下面就問了一些c++的問題。static有哪些作用、虛擬函式相關的一些東西、建構函式是否可以為虛擬函式、解構函式是否可以為虛擬函式、靜態成員函式是否可以為虛擬函式等等,以及虛擬函式帶來的sizeof問題等等。問了一下程式與執行緒的比較、以及多程式與多執行緒的比較、多程式與多執行緒比較。然後問了一個演算法題,已知一個randM函式,可以隨機返回1~M中的一個數實現函式int randN(int n)。寫程式碼一定要注意各種細節。

二面(秋招)

也是先問了一下筆試的演算法題,最後兩個都問了。最後一題是給出一個字串求所有與該字串similar的個數,面試官覺得我的程式碼有點問題,我就解釋了一下。又問了一下那個isSimilar,我說有O(n)的演算法,然後讓我寫程式碼實現O(N)的isSimilar函式,這個沒什麼問題。面試官又看了我之前LCS的程式碼,裡面有小錯誤,居然還有兩處,慚愧。然後問了一下c++,畫圖說明c++虛擬函式的實現機制、虛表的編譯器實現、虛擬函式的開銷等等。問了一下垃圾收集、搜尋引擎、B+樹。簡單問了一下MapReduce。問了一點點專案,以及與GPU繪製相關的一些東西,如CPU與GPU功能的區別等等。

三面(秋招)

印象不是很深刻了,一開始好像也問c++了,具體記不太清了,記得問了一個字串雜湊函式有哪幾種方式,然後舉例說明一下MapReduce工作原理。後面主要是一個負載均衡的系統設計問題。比如有伺服器S1,S2,S3,S4有客戶端c1,c2,c3。每個客戶端和伺服器的通訊只有一個介面,int send(event),向伺服器傳送一個請求,伺服器處理請求返回處理結果。問題:1)當有伺服器down掉的時候,要保證客戶端的請求仍能夠被處理2)當有伺服器由down恢復正常工作的時候,客戶端要能知道3)伺服器的負載要滿足一定的比例,比如1:2:3:4。這個題討論了比較多的時間。

四面(秋招)

先是英文自我介紹,我英語爛的讓面試官很無語。後面就是中文聊天了。問了一下專案,專案如何改進等等。問了一下MapReduce原理。問了一個海量資料處理問題,假設雅虎網站上一天中有1000萬個不同的廣告共投放了100億次,找出投放次數最多的100個廣告,這個應該大家都見過的。問了一下與周圍同學相比你的優點和缺點是什麼,以後的職業規劃。然後就是聊一些雅虎的東西了,面試官說了很多,我就一直在聽。結束了,讓回來等通知。

開始收到電話通知面試通過,等待美國總部稽核。後來一直沒訊息了。應該是面試表現很普通,當備胎了。

七、大眾點評

一面(秋招)

現場面試。先讓寫了一個c++引用計數的類。然後問了些c++問題,專案。具體的記得不多了。

二面(秋招)

現場面試。大部分時間面試官就是跟我閒談,聊一些我已經收到的offer的情況。

結果被刷,不知道是不是因為自己說的期望薪水太高。

八、人人網

印象不深了,主要是考察演算法,感覺面試官都是搞過acm似的。拿到offer。

九、WAP

英語面試,我英語很爛,好像日本面試官英語也不是很好,面試過程中很少有交談,就是現場寫程式碼,面試官旁邊有很多列印好的演算法題目,寫得正確、越多越好。只拿到實習offer。

相關文章