閱讀690 返回首頁    go 阿裏雲 go 技術社區[雲棲]


一位自學生的努力與夢想

求職曆程:
隻麵了兩間,都是一輪筆試+三輪麵試,拿到心儀公司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、最後一道是開放性題目:如何鑒別垃圾詐騙信息並揪出犯罪份子(我一直以為揪出犯罪份子是公安局的事...)。
這題沒有標準答案,但你不能不回答,講講你對這題目的了解和分析。

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

最後更新:2017-04-02 15:14:52

  上一篇:go 五百城承認已被騰訊並購 公司未全部解散
  下一篇:go 李彥宏:更多互聯網創新有望在中國產生