2014找工作總結-機會往往留給有準備的人

江南煙雨發表於2013-10-17

轉發請註明出處:http://blog.csdn.net/xiajun07061225/article/details/12844801

 

其實我的求職過程在十一之前就已經結束了,總體講比較順利。參加面試的幾家公司基本都拿到了offer,分別是阿里巴巴、美團網、創新工場塗鴉移動以及華為當時也參加了其他公司的面試,比如人人,一面過後收到了二面通知,拒了。創新工場豌豆莢一面結束後等訊息。十一過後的公司基本都是醬油而過。去哪兒面試拒了。騰訊一面後收到了二面的通知,也拒了。主要是因為自己已經拿到了理想公司的offer。看來人還是需要一點壓力,這樣才能發揮出自己的潛能。也本著攢RP的原則吧,感覺沒必要刷那麼多offer,而且我也知道自己的水平,對阿里的offer已經很滿意了。剩下的時間還不如先預習一下入職要用到的東西。其實好早就想著寫總結的,一直拖到現在,我想要是我再不寫總結,估計很多東西就記不起來了。

 

一、自我介紹-往事不堪回首

 

首先自我介紹,某985院校計算機學院普通碩士。無ACM、挑戰杯或者是各種程式設計大賽獲獎經歷,無牛逼哄哄的專案經歷,無名企實習經歷。總之一句話,一個再普通不過的CS碩士。本科期間成績平平,課外也沒有學太多東西,基礎很一般。常常後悔白白浪費了本科期間閱讀那些經典書籍的大好時機。對於碩士期間自己的實驗室,不好意思吐槽太多。專案很扯,沒有感覺學到了什麼東西。方向是什麼圖形影象,面試到現在沒一個面試官感興趣。程式碼也沒有寫多少行。所以起初一直很擔心自己在面試中怎麼來介紹自己的專案。因此,為了準備秋季校園招聘,我提前做了很多準備,在現在看來,我當初的選擇是完全正確的。下面詳細介紹自己所做的準備吧。

 

二、實習生應聘-備受打擊

 

我正式開始準備找工作是從4月份開始。在此之前,除了在實驗室做所謂的專案,然後就是學習一些基礎的東西,主要包括C++、STL、Linux、演算法。這幾項其實都學的比較淺。看過的書有:《C++Primer》、《C++標準程式庫》、《STL原始碼剖析》、《深度探索C++物件模型》、《EffectiveC++》、《鳥哥的Linux私房菜》。到了4月份,參加了騰訊是實習生招聘,結果是掛了。我報的是後臺開發。由於沒有Linux專案經驗,面試官狂問資料結構和演算法。一面還好,頂住了。問到的題目有:非遞迴二叉樹遍歷-紙上寫程式碼、shell排序、基數排序、找出一堆數中出現次數大於總數一半的數,還有一道演算法題是:給出一天內的很多條QQ號的登入及登出記錄,每條包括時間、QQ號、標記是登入還是登出的標記符。要求求出一天中最大線上人數。(精確到秒)。基本都答出來了,順利進入二面。二面面試官瞅了一下我的簡歷,就開始問演算法。四道演算法題,具體題目可以看這裡http://blog.csdn.net/xiajun07061225/article/details/8882981。四道題答出來兩道,一回宿舍,用微信查了下,就進入人才庫了。好吧,被鄙視了。其他的一些公司也投了,比如阿里、大摩、百度等等,不是簡歷篩選沒通過,就是筆試沒通過。反正木有獲得面試機會。不過,我很慶幸自己參加了實習招聘,知道了自己的短板,知道了自己以後想做後臺開發需要準備些什麼,也瞭解了面試中面試官的常用套路,這對我接下來著手開始準備看書準備找工作有很大作用。

 

在這裡需要說明的一點是,根據我的瞭解,實習是一把雙刃劍。如果能去好的公司實習,能夠獲得正式offer,這樣能夠給自己的簡歷錦上添花,再去面試別的公司也是一個籌碼。但是如果不能獲得正式的offer,也因為實習的原因失去了複習打牢基礎的時間,在筆試面試中會很吃虧。所以,大家一定要考慮清楚。

 

三、為找工作做準備-養兵千日

 

在此之後,我便開始了我的讀書計劃,目標是後臺開發職位。重點放在C++、資料結構和演算法、Linux、網路、Nginx我之所以要學習Nginx,主要原因有,一,這是一個優秀的開源web伺服器,研究開原始碼,非常有意義。這也是騰訊面試官給我以及另外同學的建議。二,擴充下我的視野,彌補自己專案經歷不足的問題。下面展開介紹這幾個方面的準備。

 

下圖是我的部分書籍。其中一些也沒有去細看。

 

1、資料結構和演算法

在之前已經閱讀了一遍《演算法導論》,感覺學的不夠深入,很多都忘記得差不多了。因此重新閱讀了重點部分,而且用C++程式設計實現。比如:連結串列、二叉樹、AVL樹、紅黑樹等等。圖的演算法就看了搜尋演算法:BFS以及DFS。然後另外在網上找了A*搜尋演算法的資料看了下。一提到搜尋,A*演算法肯定是少不了的。之後又看了《程式設計之美》、《劍指Offer》。不僅僅要看書,還要總結。尤其是筆試面試中出現頻率很高的連結串列以及二叉樹的操作,我將各種操作進行了總結,並且練習白紙寫程式碼。白紙寫程式碼是一項重要的基本功,包括邊界條件考慮、書寫風格等等,會直接決定面試官對你的印象,因此我著重進行了系統訓練。《STL原始碼剖析》看完之後,我已自己動手實現了一些容器:stack、quene、priority_quene、heap等。另外,我也閱讀了網上一些大牛強力推薦的部落格資料,比如July的程式設計藝術等。將前面幾本書中不曾出現的一些資料結構和演算法看了一下,比如:並查集、K-d樹、R樹、約瑟夫環問題、資料庫儲存的倒排索引等等。整體講,這部分準備的還是很充分的,面試中出現的大部分資料接結構和演算法題都解決出來了。

 

2Linux和網路

linux和網路是我最薄弱的部分,也是最擔心的部分。因為木有這方面的專案經歷,一直擔心如果在簡歷上寫上這一項,會不會被問倒。在這裡要特別感謝我的基友LM,給了我很大的指導,在這段時間裡,一起學習,一起進步。linux首推經典書籍《Unix環境高階程式設計》和《Unix網路程式設計》,網路基礎知識首推《TCP/IP協議詳解-卷一》。APUE讀了兩遍,UNP挑了部分看了。感覺只看書根本不夠,於是在LM同學的提議下動手寫一些demo程式,比如聊天程式、基於執行緒池的生產者消費者程式等,加深了對基礎知識的理解。

 

3C++STL

重溫物件導向經典書籍《深度探索C++物件模型》。這本書介紹物件導向機制講的非常不錯,這也是筆試面試中經常出現的考點。重溫《Effective C++》。關於STL,我想學的更深一點,作為自己的一項可以在面試中發揮的亮點,因此又重新看了STL記憶體管理、迭代器、traits程式設計技法、典型容器的原理。這也在後面的面試中多次被問到。

 

4Nginx

其實Nginx只學習了兩個月。我購買了兩本書籍:陶輝的《深入理解Nginx-模組開發與架構解析》以及《深入剖析Nginx》。首先閱讀陶輝的書,從總體上對Nginx有個初步的瞭解,瞭解了Nginx模組開發流程以及整體架構。並嘗試搭建了Nginx環境,實現了書本上的幾個模組例子。接下來開始著重看重要的模組:程式模型、負載均衡、epoll模組。閱讀了重要的原始碼,並嘗試用gdb跟蹤(其實做的比較少了,沒太多時間!)。在面試中經常被問到我覺得Nginx的優越性在哪?我就提提程式模型、epoll了,再和Apache簡單做了下比較,基本可以矇混過關。

 

筆試題面試題

 

至於筆試題面試題,也看了不少。大多數在網上搜尋的。在這裡給大家推薦一些比較好的學習資源吧:

Coolshell:http://coolshell.cn/

Matrix67大牛的部落格:http://www.matrix67.com/blog/

July的CSDN部落格:http://blog.csdn.net/v_JULY_v

何海濤部落格:http://zhedahht.blog.163.com/

筆試面試的經典:Cracking the coding interview--問題與解答http://hawstein.com/posts/ctci-solutions-contents.html

LeetCode:http://leetcode.com/

這裡有不少筆試題集錦:http://blog.csdn.net/hackbuteer1

 

 

 

專案經歷

除了上面的基礎知識,也系統梳理了一下自己的專案。雖然專案經歷很扯,但是,也需要仔細梳理下思路,不能讓面試官感覺讀研期間沒有做什麼事情。把專案流程、關鍵點、難點、解決方案等等重新回想了下。以便面試官問到這些問題能夠很流利地答出來。

 

四、校園招聘-用兵一日

接下來介紹我參加的幾個公司的面試情況:阿里巴巴、美團、人人、華為、創新工場塗鴉移動、創新工場豌豆莢。

 

1、阿里巴巴-拿到offer

阿里巴巴筆試比較難,題目屬於網際網路公司中比較難的了。筆試題中有較多的概率題之類的數學題。而且選擇題選錯了會扣分,想得高分真是有難度啊。22日晚上筆試完之後就感覺很差,當時感覺可能就沒戲了。沒想到第二天中午午睡的時候就收到阿里巴巴的面試通知,居然是當天下午四點。起初還以為是第二天。不得不說阿里巴巴的效率真高,傳說三天全部搞完。猛然間想起來已經和創新工場塗鴉移動HR約好了二面,也是最後一面了,恰好也是在下午四點。這可怎麼辦?連忙打了一個電話給HR,結果發現是個總機,需要撥分機號,無奈只能作罷,先去阿里吧。

 

三點從學校出發,坐公交來到君宜王朝大酒店。發現等待的場地很小,等待的人也不是很多。等到4點,阿里面試還沒開始,結果塗鴉移動那邊打電話來了。情急之下說現在有點事情,能不能十分鐘之後打過來。然後我去和阿里的工作人員說能不能推遲四十分鐘,我想四十分鐘應該能夠結束塗鴉移動的面試。工作人員說沒問題,然後連忙去找安靜的地方、光線充足的地方準備電面。結果發現酒店裡面到處都很暗,比較亮的地方只有走廊了。算了,蹲在走廊上面吧。整個面試過程大概四十分鐘,感覺面的還可以。結束後馬上去找阿里的工作人員,等候阿里的面試。

 

等了沒一會就通知去一面。進去後,發現很大的一個屋子裡面擺著很多桌子,一個桌子是一個面試官和一個面試者單面。我的面試官很年輕,也很和藹。一開始就和我聊一些輕鬆的話題。他首先是看我簡歷,看到我的興趣愛好的時候,還問我:“你還會交誼舞?”我笑了一下,回答:“是啊”。他又笑哈哈的說:“就是為了把妹唄。。。”囧。。。我忍不住笑了(PS:居然這也被你看穿了)。然後問我家是哪裡的,等等。之後就是開始一個自我介紹,然後是對著簡歷問技術。C++、演算法與資料結構、Linux、GDB、網路、作業系統等等只要我寫了的都問了一個遍。因為我在簡歷上寫了部落格地址,於是在電腦上敲進去開啟看了下。我部落格寫的文章還挺多的,不過都是些基礎的總結的東西。沒想到面試官很仔細的看了,覺得還不錯。又對著部落格問了很多東西。他看我課外研究了Nginx,還寫了一些博文,也問了nginx上的一些東西。還好前兩天看了一下前面的筆記,答的還湊合。後來居然從我博文裡面抽一些東西來問我,我回答之後才告訴我說:“我是在用你的部落格來當面試問題哈”囧…總共面試了一個半小時左右,比一般人的四十分鐘多好多。總體感覺一面面試官人很好,很和藹,健談,這樣的面試很開心。

 

由於一面面完之後就七點多了,工作人員告訴我,由於今天太晚了,就讓我明天早晨9:30再去參加二面。第二天一大早,天下著大雨,早起吃個早飯便匆忙趕到酒店。等了會就參加二面了。二面是一個技術面試官和一個HR同時面。首先依然是自我介紹,和一面的自我介紹差不多。專案也許是不感興趣吧,便開始出演算法題,都要求寫程式碼。總共問了兩道演算法題,不算難。第一道題是兩個字串A、B。從A中剔除存在於B中的字元。比如A=“hello world”,B="er",那麼剔除之後A變為"hllowold"。空間複雜度要求是O(1),時間複雜度越優越好。我又問了下字串中字元是不是僅限於小寫字母,它說可以這麼認為。那麼判斷A中字元是不是在B中的話就可以用hash了。這道題不難,直接設定一個count變數,記錄A中存在於B中的字元數量。然後設定一個指標遍歷字串A,遇到不是B中的字元往前移動到正確的位置即可。第二道題是求打靶十次,獲得80環的概率。我是用類似於八皇后來做的,遍歷加回溯。只不過程式碼沒寫太全。先想寫一個非遞迴的回溯的,但是楞是憋不出來,於是想著用遞迴吧,要簡單一點。反正寫的不全,還是TM程式碼寫少了啊。水啊~~技術方面其他的就是問的課餘時間都學些什麼。我課餘也就學習了Nginx和Linux。首先就聊了下Nginx,什麼程式模型,優點等等。然後問了select、poll和epoll的區別。這個很熟悉,很快答上來。之後又問了Linux是如何減少記憶體碎片的問題的。我就說了下slab,貌似主要應該是夥伴演算法。這個問題回答的不好。然後HR問了一些問題,什麼家鄉啊,職業規劃啊,最感興趣的三家網際網路公司什麼的。結束了我問什麼時候可以出通知,說一週之後。囧!這是不是掛的節奏啊!!!

 

話說等通知真是糾結的很。終於在25日晚10點左右收到了阿里的HR電話,說通過了面試,第二天去參加意向會議。阿里是目前為止我最滿意的網際網路公司了,這段時間的努力總算沒有白費。

 

2、創新工場-塗鴉移動(拿到offer)以及豌豆莢(仍在面試中)

筆試題答的不錯,總分25分,得了22分。錯了一個選擇題,程式設計題求根號2的我採用的是二分法,實際上更好的方法是牛頓迭代法。還有錯了一道資料庫的選擇題,資料庫真的是不會啊,o(╯□╰)o。

 

大約9點多筆試完,當天晚上十一點就收到了面試通知,開始說是早晨八點多,但是因為上午有華為面試,就重新約在了下午一點。上午從華為面試完急匆匆趕回學校吃了午飯,回寢室坐了一會就和同學一起出發去啟明學院參加創新工場的面試。到達地點的時候大概還有二十多分鐘,於是我和同學掏出手機,又溫習了Onenote上的筆記,把堆排序、歸併排序等等基本演算法又琢磨了一遍。話說onenote真心很好用,比有道筆記要好用很多。啊哈哈~算是給微軟免費打一個廣告吧~

 

很快就一點了,一位面試官把我叫了進去。猛然間發現這位面試官怎麼這麼眼熟,後來知道了他的名字後才發現是我在人人網上的一個好友,ACM大牛。面試官人很隨和,讓我做了一個自我介紹,僅限於技術上的,一看就是技術宅,哈哈~然後對著簡歷看了下,開始問問題。因為我的實驗室專案都是圖形影象方面的,面試官一點都不感興趣,於是都是對著我的技能那一欄寫的進行提問。先是問了Vim我平時都使用過哪些外掛。GDB除錯命令:檢視棧幀backtrace等等。fork函式的返回值,以及執行過程。linux方面的東西問完之後就開始演算法。總共寫了三個演算法題,都要求白紙寫程式碼。因為我平時這方面練習比較多,因此都不是問題,很快就寫出來了。第一道題是有一個int型陣列,每兩個相鄰的數之間的差值不是1就是-1.現在給定一個數,要求查詢這個數在陣列中的位置。我先說了下最基礎的方法,那就是順序遍歷,還沒說完面試官就打斷問有沒有更好的方法。我就說可以在遍歷的時候進行一些跳躍,提高查詢效率。然後他說,嗯,寫程式碼吧。第二道題記不得了。第三道題是一個字元陣列,裡面的字元可能是a-z、A-Z、0-9.現在要求對陣列進行排序,要求所有小寫字元放在最前面,所有大寫字元放在中間,所有數字放在最後。而且各部分內部分別有序。我一開始沒想到這個陣列可能會很大,於是用比較笨的方法來寫程式碼,他過了一會就問我是不是要先分別排序再合併,我說是的。他就問如果陣列很大呢?我立馬回答出了桶排序。因此大家在開始答題的之前一定要和麵試官多溝通,把題目意思搞明白。

 

然後面試官就說沒啥問題了,問我又沒啥問題。我就隨便問了下總共有幾面就出來了。出來才發現總時長才二十分鐘。囧!這是不是掛的節奏啊!還好很快就收到了雙選會的通知。

 

雙選會

雙選會在中秋前一天下午舉行。主要是到場的6家創新工場旗下的公司做介紹,然後大家填了一個意向表。每個人可以選擇三家意向公司,而且三家公司都有面試機會。我填的是豌豆莢、塗鴉移動和墨跡天氣。會上還說塗鴉移動的面試會在當天晚上就開始,因此中秋期間也要準備隨時面試。

 

二面-塗鴉移動

果然當天下午5點就收到了塗鴉移動的二面通知,還是晚上十點的。我去,這是第一次這麼晚去面試。本來是十點,結果開始得比較晚,十一點半才面試完,回宿舍都關門了。感覺面試官特別注重考查思維能力。他問我會哪些資料結構和演算法,我先說可連結串列、陣列、棧、AVL樹等等還沒說完就被打斷了,他補充說,偏重演算法。我挑了我熟悉的幾個說了下:BFS、DFS、KMP、A*演算法。然後就出了四個演算法題。下面說說兩個較難的演算法題

(1)一個矩陣,指定其中兩個元素,將這兩個元素用折線連線起來,折線只能朝右或者朝下,要求:折線組成的路徑上的數的乘積末尾的0最多。

 

(2)連連看遊戲。判斷兩個點能否連線起來消去,而且要求出最短路徑。可以用哪些搜尋演算法?BFS,DFS,A*?A*如何剪枝?

HDOJ 1175

典型解法:BFS。

 

其他同學的面試題:

由‘0’-‘9’組成的字串,求一個最大子串。該子串不能滿足條件:該子串的任意兩個子串對應數字的乘積字串對應的數字不能是這個子串的子串。

 

本來以為塗鴉二面面的很差,結果還是收到了Offer。今年好像招的人不少。

 

二面:豌豆莢:

豌豆莢的程式碼超級好,氛圍也很不錯。我們學院一個大牛在4月份就拿到了正式offer,聽他說,裡面全部是大牛,給力的工資以及各種福利等等,讓人豔羨不已。豌豆莢招人非常嚴格,一般有6-7輪技術面試,難度可想而知。我本著打醬油的心情參加了面試。

 

面試時間:2013-09-21,5:00

總時間大概1小時。

先是一個女工程師面試,主要是問簡歷,聊了Linux shell命令,統計出一個資料夾下大小大於7MB的資料夾,這個沒答上來。還有的記不得了。接下來又安排了一個面試官專門問我C++的,主要是問STL,記憶體管理、Vector容器等等。之後就是線上程式設計環節。那邊可以看見我的一舉一動,第一次這樣面試,壓力還是有點大的。題目就是將一個四位整數比如4298轉化為大寫:四千二百九十八。我漏掉了一個情況:就是十的時候,前面不需要一!PS:不得不說,中文博大精深啊!然後就結束了,我問了下之後還有幾面,HR說還有至少兩到三面。好吧。不得不說豌豆莢的招聘真心嚴格。

 

本來以為豌豆莢掛了,結果時隔十多天於10月16日收到了HR電話,說要進行二面。面就面吧,就當長點見識,這高富帥公司也從沒想過進去。

 

3、美團-拿到offer

筆試是六道大題,有幾道是寫程式碼,有幾道是計算題。第二天收到面試通知。美團是三面連續著面,通過一輪面試馬上進入下一輪面試。面試地點在大學生活動中心。一面,面試官讓我介紹了一下專案,我就blabla介紹一通,目測他也沒聽懂。隨便聊了下就開始問C和演算法題。演算法題不難,紙上寫程式碼。大約35分鐘面試結束,在門外等候了一會,緊接著進去二面。二面就是幾道演算法題,有的寫程式碼,有的講思想。基本都答得差不多了。又出來等訊息。由於已經5點了,hr告訴我先去吃個飯,然後回來參加三面。我特意問了一下三面是技術面還是HR面,她說是技術面,技術副總裁面。汗!壓力大啊,副總裁面試!果不其然,副總裁面試就是不同,問題一個接著一個,也很有深度。比如專案中遇到了哪些問題,是怎麼解決的,軟體設計,Linux、Nginx等等。反正很多沒答上來。面完之後就感覺要掛的樣子。因為聽宣講會的時候說道美團今年全國只招200人。沒想到一會就收到了HR電話,算是HR面吧。

 

十月初便收到了美團網的offer,薪資也還蠻給力的,氛圍也很不錯,只不過在北京額。

 

4、華為-拿到offer

華為先是機試,三道程式設計題,題不難,但是隻做出來兩道,第三道題題目理解錯了,尼瑪。面試分為兩輪,一輪技術一輪HR。感覺華為技術面試是我面的最差的。幾道題一個都沒答上來。什麼資料庫儲存原理、linux核心的東東….囧。幹嘛總是問我不會的呢!

 

本感覺沒戲了,不過後來也收到了簽約池的資訊。再後來就收到了HR聊意向的電話。雖然說華為今年漲薪了,但是對華為的氛圍一直沒有什麼好的印象,沒有去的慾望,不久就拒了。

 

5、人人-二面就沒去了

人人就面了一面,因為有阿里offer二面就沒去了。一面感覺還不錯。面試在我們學校的一個咖啡廳。面試官主要問C++和STL。C++主要問物件導向的一些東西,基本答出來。STL我比較熟悉,也沒啥問題。最後他介紹了一下自己所在部門的情況,說是做廣告推薦、資料探勘的。問我對以後職業發展有什麼意向沒。我說對後臺開發、廣告推薦很感興趣,他就記錄下來了。一面大概35分鐘,這樣就結束了。

 

後來不久就收到了二面通知,不過沒有去了。

 

五、總結-一點小感悟

其實我從來沒有料到自己的求職過程會這麼順利,因為實現沒有發現自己身上有哪些過人的優點。

 

自我感覺我在面試中的亮點主要有三部分:

1)基礎紮實。很多公司都非常注重基礎:語言、資料結構與演算法、Linux、作業系統等等。手寫程式碼能力很重要,有必要重點強化訓練。

2)課外知識。我課外花時間學習了web伺服器Nginx,雖然研究得不是很深入,但是瞭解基本的架構和重點模組。對於伺服器模型有了基本理解。

3)技術部落格。我的技術部落格原創博文已經很多了,雖然沒有太多高深的東西,都是一些基礎知識,但是大多是自己加以總結了的。大多數面試官都開啟我的部落格看了,評價還不錯。

 

其實,關於怎麼樣去學習,並沒有固定的套路。有的同學,在研究生期間做過比較出色的專案,能夠贏得面試官的青睞,比如發過論文,或者是和麵試官的方向一致,或者是當下網際網路比較熱的方向等等,這樣,可能一次面試,專案聊完就沒有多少時間了,面試官也不會去問其他的東西。好的專案經驗能夠讓面試官覺得你實踐經驗豐富,可以直接拿來幹活,通過面試的概率也是非常之大的。如果沒有好的專案經驗,最好努力去打牢自己的基礎,多關注網際網路的前沿,充實自己,一樣可以贏得面試官的讚許。總之,大家都要有自己的亮點,能讓面試官眼前一亮,那麼,通過面試也是不難的事情了。

 

不得不說,面試也看眼緣和運氣,有時候問的東西剛好是自己都會的,有的時候容易遇到挫折。大家要善於把面試朝自己擅長的方向引,展現自己的優勢。多數面試官都不會以問倒求職者作為目的,而是往往嘗試去發現求職者身上的有優點及潛力。應聘者應儘量將面試看成一個相互交流的過程。

 

最後,希望我的總結能夠給各位學弟學妹一點借鑑的意義,希望大家都能找到好的工作!

 

------------------------------------------------------------------------------------------------------------------------

江南煙雨

20131017日星期四

於武漢 我的小窩

相關文章