1. 程式人生 > >騰訊後臺面試過程

騰訊後臺面試過程

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

一位自學生的努力與夢想
求職歷程:
只面了兩間,都是一輪筆試+三輪面試,拿到心儀公司offer後就木有參加其他面試了。
1、淘寶(研發工程師)終面後被BS,那RP…。
2、騰訊(後臺開發工程師)成功拿到offer。

學習經歷:
作為一個非計科專業的學生,三年自學血淚史歷歷在目。沒人指導,靠自己摸搜,走過很多歪路,不被同學朋友理解,被老師當問題學生,被早學幾年的前輩嘲笑。一度懷疑自己,長年處於堅持和疑慮之間。

兩年前下誓言至今還一直保留在QQ個人介紹裡:從今以後不再表示什麼決心,用結果用事實用作品去證明自己一直在努力。為未來家人及愛人幸福的生活,為自己這一生沒有白活而努力。甘願今天活在一個人封閉的世界裡。——2009/10/7
從 一開是學delphi,什麼都不懂東拼西籌做爛軟體;到開始正式學C語言,遇到如鵬網,從《C語言也能幹大事》找到啟蒙方向;記得大二那一個寒假天天抱著 《windows程式設計》來學,做了無數的小軟體;後來學過很多東西,看過《C++primer》《資料結構》《組合語言》《windows核心編 程》。瞭解過反彙編,學GDI、opengl做過2D、3D小遊戲,當然很多都是稍微嘗試,淺嘗輒止。

大二結束後的暑假北漂去北京跟楊中 科老師學.net,這段北漂的生活很難忘,學習很充實,早上8點到5點,回去宿舍繼續敲程式碼,經常敲到深夜1~2點,在400元租來9平米只容一張床一張 凳的地下室裡除了敲程式碼還是敲程式碼,在北漂學.net的日子裡學到很多東西,楊老師很盡職,教的知識很深入,很貼切實際開發,課上最常聽到楊老師苦口婆心 地勸基礎差又稍微懶惰童鞋:“上課要認真,回去還得好好敲程式碼。”北漂的學習日子開闊了我的視野,也讓我漸漸明確自己的學習路線,為後來的自學打下良好的 基礎。

後來由於很多原因,最終沒有繼續學.net,甚至連圖形介面也不喜歡了,在徘徊糾結之中開始漸漸轉型到linux,C/C++黑窗 白字的世界。回來後奔三了,我開始寫簡歷,去各大公司看招聘資訊,找準崗位,公司需要什麼我就學什麼。開始看《演算法導論》參加學校的ACM比賽,由於大三 了,拿了一等獎也進不去學校的訓練隊,自己去網站做OJ題,學《計算機網路》《TCP/IP協議》《Linux鳥哥私房菜》《UNIX高階環境程式設計》 《UNIX網路程式設計》學習nginx開源伺服器,自己學寫JxWeb伺服器(大三第二學期唯一寫過這個專案,其他都是做演算法題,更沒有寫有視窗的東西 了)…

然後就是求職生涯,拿到騰訊offer,新的開始!上述書籍都是大牛們的神書,而我很多隻看了一半,騰訊是我人生的轉折點,我在奮鬥的路上!與朋友們共勉!

求職日記:
2011.9.16——修改簡歷
這 裡很感謝boXer師兄,百忙的工作中還抽時間給我簡歷意見,簡歷最後被修改了兩次(本人大三就開始寫簡歷,這份簡歷已經是第n個版本了。提前寫簡歷的好 處非常明顯,就像一面旗幟,提前明確自己的路線,簡歷缺什麼就去學什麼。到大四的時候,別人還在苦惱怎麼寫簡歷,我的簡歷已是第N版)。師兄滿意後叫我用 功準備筆試,騰訊對筆試成績很看重。但我還是決定先用兩天搞好我的JxWeb伺服器專案。

2011.9.17——淘寶內推失敗
中午醒來,突然收到淘寶的簡訊,嗚嗚,原來淘寶內推不成功。提示我自己去淘寶網校園招聘投簡歷。淘寶網的校園招聘要填的資料很怪,好像必須有懂java,然後我覺得自己淘寶算沒筆試就悲劇了。繼續做專案。

2011.9.18
開掛開掛!!!早上剛解決了弱智的記憶體釋放bug,自己太久沒寫程式碼,真差勁,唉。繼續。

2011.9.19——騰訊宣講會,夢想的開始
今 晚去了中大的騰訊宣講會,剛好隔壁是網易的。中大+騰訊,兩個都是我的夢想,一個在四年前已經徹底破滅了,希望我能騰訊這個夢想上成真。聽了騰訊的宣講 會,我更加給它吸引了,我當時對它的感覺是:很有活力的團隊,很有魅力的公司,很豪華的環境,很高階的待遇福利,很有發展前途。啊,心癢癢!偏偏騰訊的招 聘流程非常匆忙,24號筆試,25~30號面試,國慶後就能確定offer了。我要加油,開OT,開掛!

2011.9.20
華工百度宣講會,但我沒有去,繼續複習做專案!

2011.9.24——失利的騰訊筆試
騰 訊筆試,總結來講考的知識很廣泛很基礎,涉及到資料結構、資料庫、網路原理、C++類特性、作業系統、linux系統、伺服器等等,最後兩大題都是經典的 演算法題:連結串列兩路歸併演算法和圖。第一題完全沒問題,第二題看到有關圖的,太久沒用過圖,腦袋完全空白答案自然也空白了,悲劇!之後當晚收到一面通知。事後 才知道自己筆試成績很爛,只是剛好過線沒被刷,承蒙天神保佑,但失利的筆試成績對以後的面試影響巨大。

2011.9.25——滿意的騰訊一面
3點30分,華工大酒店40X房,一面運氣比較好,問的問題都比較基礎,自我感覺答得比較滿意。但最後的開放題還是不會答,其實開放題根本沒有標準答案,只要你給出自己和技術沾點邊的想法就OK了。

2011.9.27——騰訊二面
2:00 二面。早上已經等得不耐煩了,沒到1點就騎車過去。1:11去到華工酒店705室,但門是關上的,所以不敢打擾,等到1:51分才開始面試。隔壁房間一個 是遊戲策劃的,另一個房間是銷售的。那銷售的童鞋,聽遊戲策劃的MM說已經面了一個多小時,吹到天花龍鳳,最後還談工資了!羨慕妒忌恨啊!迴歸主題,這次 面試的是騰訊安全中心的總監,還是問基礎。問題如下:雜湊和B樹各自特點;linux中各種I/O模型原理——select和epoll、阻塞和非阻塞I /O區別;linux系統檔案機制;多程序同步方式;C++多型原理(虛擬函式機制,能說出哪些是編譯時確定、哪些是執行時確定、類物件記憶體形式就OK); 都是基礎不多說了。

兩題海量資料處理:
1、請統計100W個不等長字串中各字串的出現次數(時間、空間複雜度都要低)我的答 案:建立雜湊表,遍歷一遍讓等長的字串(我認為題目“各字串出現次數”是要求字串相同,而不只是相等,既長度也要一樣)對映到同一位置,裡面可以再 雜湊連結串列(連結串列元素是對應長度的字串buf和計數器),有兩種情況:一種雜湊連結串列中沒出現過就儲存該字串並將對應的計數器設為0,有出現過的就+1。 遍歷一遍就完成統計。然後遍歷雜湊連結串列的計數器輸出就行了。時間複雜度是O(n)。但面試官問我還能再快嗎?O(n)遍歷一遍肯定是必須的,可能是中間某 些細節問題。或者面試官在壓力測試。

2、設計資料結構可以快速返回0~10億中哪些數出現了or沒出現。這題和一面的一樣,而且更簡單,125M的bitmap就夠了。最後也是問我專案問題,對專案裡各種技術點熟悉就OK。晚上6點,突然接到淘寶面試通知。但心繫騰訊,夜點也收到了騰訊HR面,HR面加油!

2011.9.28——淘寶一二三面,騰訊HR面。
早 上還是去試試淘寶,淘寶初試是在10點,我9點50分去到,簽到後在侯聽室等候,結果10點25分才開始面試。問題還是離不開:演算法、專案、資料結構、 linuxI/O模型。演算法題很水——給出兩個字串,設計一個演算法將兩個字串合併按字母排序。我一開始就說不就是排序後歸併嘛,O(nlogn)。然 後面試官說有更好的方法嗎?又想想,哦,類似荷蘭國旗問題,遍歷一次統計各字元出現次數,直接按字母順序輸出,O(n)。這下他滿意了。所以遇到簡單的題 目,還是先想清楚再回答。

淘寶的面試很給力,一面完,行得話馬上二面,二面行得話馬上三面!不過一面後,還得先去騰訊HR面,要求另約時間。然後回去宿舍休息,12點45分就過去華工大酒店了。在那裡看到暨大面產品的漂亮MM,我居然木有問拿電話!後悔!!!

騰 訊HR面試居然問我實習經歷,木有實習過的表示鬱悶。然後更悲劇的是,人家問我專業學得如何,我口賤自爆掛科!我勒了去!那HR說“哦,你掛過科,掛哪一 科?”然後記錄下來了。嗚嗚嗚!!!我算誠實吧。之後聽HR介紹了公司的某些流程制度。然後我很不安地離開了華工大酒店,直奔去中大面淘寶。二面又是問數 據結構、演算法、各種查詢的優缺點、專案、linux系統的東西等,還問了一道智力題:有條村,N個人,發生了命案,N個人中有5個是凶手,每個村民都會講 一句真話一句假話,問至少調查多少個人才找出凶手。我勒了去,不懂。事後才知道,類似小白鼠試毒藥問題,答案是:2^5,但明顯他這題問題很多漏洞,小白 鼠試到毒藥會死,真話和假話怎麼分辨出來。演算法問了連結串列歸併排序,要我寫程式碼,原理是簡單的,但寫得很糊塗,他也看得很糊塗,我乾脆講一遍,他也就懶得看 我程式碼了。

之後叫我直接去三面,聽帶路的說很少人能去三面,我也威風一次了。三面是兩個面試官,一個技術,一個HR,但都很年輕,聊得很 開心,先問技術後聊天,我又重複提那血淚的三年自學史,我感覺他們都比較認可我。然後HR就送我到門口,就結束了。後來才知道淘寶面試當晚發 offer… 然後自己很自然被BS了。中途他問我有沒問題的時候,我知道不問問題又不太好,所以我隨便問了一個問題:“我資料庫不太會,你那裡要求資料庫高的麼?” 現在想起,自己真腦殘…自爆弱項…總結:知識這麼多,肯定有所專長,有所不擅長的,要善於引導面試官到自己擅長的地方,更不能腦殘自爆弱項…

2011.10.13——騰訊offer
在中午飯的時間中收到騰訊電話口頭offer,那激動的心情,真不容易。馬上丟下飯碗給電話家人報喜。

再 次鳴謝boXer師兄,他在我求職階段不斷給我意見和指導幫助我。如果沒有師兄的幫助,可能我還在漫長的求職之路上。感謝求職路上的所有面試官認同我,給 予我機會。感謝如鵬楊中科老師給我自學計算機的啟蒙。如鵬的口號:“在校不迷惘,畢業既輝煌!”感謝父母家人兄弟朋友的支援和理解。還感謝自己能在他人不 理解、嘲笑、詆譭下還堅持自己的夢想和努力。謀事在人,成事在天。感謝上天。

一面遇到所有問題如下:1、執行下面的函式會有什麼結果?為什麼?[cpp]
void foo(void)
{
char string[10],str1[10];
int j;
for(j=0;j<10;j++)
{
str1[j]=’a';
}
strcpy(string,str1);
printf(“%s”,string);
}[/cpp]

答:
(1)字串賦值錯誤:str1[10]只能容納9個字元和1個空字元。而題中for語法賦值了0~9共10個。
(2)strcpy裡由於str1沒有空字元結尾,導致越界不可以預料的結果。

2、寫strcpy函式;解釋:strcpy的原理大家都懂,但要注意程式的正確性、健壯性、可靠性。
答:

char*strcpy(char *strDest,const char*strSrc)//第二個引數的const要寫上 { if((NULL==strDest)||(NULL==strSrc))//健壯性——先判斷引數是否為空   return NULL;//當然這裡可以丟擲異常或者直接用斷言,以便在眾多應聘者中突出自己。 char* strTemp=strDest;  while((*strTemp++=*strSrc++)!=’\0′);  return strDest; }

面試技巧:在實際面試中,我還故意判斷了一下 strDest和 strSrc記憶體段有沒有重疊,雖然不是必要的,但還是為了突出自己有這方面的考慮。
3、40億個整型(32位)資料中怎麼找出沒有出現過的整型數字?為什麼?
這題是典型的海量資料處理,面試中很常見。
答:32 位整型總有42億個,而題目總數只有40億,肯定有未出現過的數字。可以開一個容量42億的為bitmap——位的陣列,每一位代表一個整型,一共需要內 存是525M左右(若記憶體有限,則開到檔案裡去,但會明顯增加硬碟I/O),遍歷海量資料一遍,並在bitmap對應的位上至1標記。最後遍歷 bitmap,將標記位為0對應的數字輸出即可。時間複雜度是O(n)。
4、STL各種容器的特點和實現方式;
熟悉各種STL容器,簡單介紹一下就行了。
5、最後讓我描述一下做過的專案,我選的是JxWeb伺服器,涉及到知識點:master-worker多程序模型、epoll網路I/O模型、多程序同步、RTO超時重傳機制、HTTP協議、怎麼支援CGI、怎麼支援HTTP1.1新特性等。
技巧:專案描述過程中,面試官會留意專案出現的技術名詞,然後一一會深入提問,你一定要對自己的專案熟悉,不單要知道“怎樣做”,還要知道“為什麼要這樣做”。
6、最後一道是開放性題目:如何鑑別垃圾詐騙資訊並揪出犯罪份子(我一直以為揪出犯罪份子是公安局的事…)。
這題沒有標準答案,但你不能不回答,講講你對這題目的瞭解和分析。

總結:如果面試中能較完整地回答八成以上問題,那就充滿信心等待下一面。

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述