校招回憶錄

原文鏈接:http://www.cnblogs.com/xindufresne/p/4823742.html

按照我找工作的順序來講吧,找工作是一件非常辛苦的事情,除了少數的大牛外,沒有誰可以毫不費力的找到工作,這期間在精神上以及身體上的摧殘都是巨大的。我儘量回憶,希望可以給後面的人一些簡單的啓發。

華爲

一面:華爲我走的是提前批,一面面試官很和藹,問的比較廣泛,但是主要是自己簡歷上的,問了我的數模,項目,專利,實驗室的工作情況。感覺因爲是IT產品線的提前批,並且面向的是我們這邊的幾個實驗室,所以相對還是很寬鬆的,整個過程比較融洽。

二面:華爲二面,面試官應該是個總監或者項目經理吧,他問到了一個問題,你是做分佈式文件系統,你瞭解hadoop嗎?然後講項目的時候,又問,現在好像都是元數據和數據放在一起了,爲什麼你們做這個還要把元數據和數據分離,然後我就給他講了,元數據和數據合久必分,分久必合的前世今生。並且對於不同的應用場合,不同的方式都可以表現出更高的性能,應用場合不一樣。最後提到工作地點,我直接就說,我只考慮深圳,其他地方不考慮,他說沒問題。然後都是扯淡。

HR面:這個蠻奇怪,很多人都沒有,當時嚇了我一跳,坐下之後他才說,不用擔心,你的offer沒有問題,我就是像你瞭解一下情況,然後就是各種標記大牛,標記某些導師的研究方向以及麾下的學生情況。

總結:華爲提前批是IT產品線,是一個華爲着力發力的部門。並且非常用心,標記到我們實驗室的每一個人,然後告訴我,去年有幾個大神沒有到他們那去,因爲工資是固定的,所以只能給安家費3-10W不等,今年他們政策調整,薪水調整爲13K-17K,變成13-17K*15。並且上不封頂,就是爲了把各大神們收到麾下。個人覺得,時候一個很好的去處,設想,去小公司錢多但是沒有安全感,去大公司有安全感但是錢少,現在有個部門,可以給你創業公司的錢同時給你大公司的安全感;已收到口頭offer目前正在等HR過來談工資。

騰訊

一面:

感覺自己的一面是壓力面,首先讓我講項目,但是中間打斷了10次都不止,畢竟是行家,面騰訊開始感受到巨大的壓力感。面試官直接戳,你做的東西這裏有問題,這裏也有問題,很多點,項目的鄙視的很厲害。但是實際上,他並不是說因爲你做的東西渣,就會拒掉你,他提到的地方,你要給出合理的解釋。比如,你證書爲什麼緩存在本地?答:因爲,首先我要快速的去讀取他,其次,雖然行話有密匙不落地的說法,但是實際上你本地一定會有,即使再加密一次,密匙還是需要存起來,他不像windows下有專用的證書管理區域,linux沒有,我又不能自己實現一個,最後,我當時考慮過再設置一個密鑰管理管理中心,但是這樣會增加了額外的延遲,我們構建的是一個高速的雲存儲平臺,所以,認證方式都採用了儘量精簡的模式,意在得到更高的聚合帶寬,所以,後來就打消了這種做法。項目聊了很多,很深,感覺就是,不是自己的東西儘量不要寫,如果寫了,一定要搞的很清楚,從原理上搞清楚。。。然後問完項目,他說,看的出來,你還是確實做了很多東西的。bingo!   面試時間:大概50分鐘

然後問了我幾個常規的問題

1.linux下如何查看內存使用情況。答案是free,我回答的是top,使用top可以看到內存,cpu的使用情況,內存的話,按m就可以切換。

2.100億個浮點數,求最大的10000個,內存只有幾百兆。經典topk問題,直接hash+堆。

3.epoll的ET模式和LT模式的區別,也是經典問題,複用I/O都會用到的東西。 我回答的時候是結合自己的項目來作答的,答案不一,網上一大把。

4.select的跟epoll比,有什麼優勢或者缺點。我的回答是,select除了好用,不容易出錯,就相當於epoll的LT模式外,沒有其他優點了。關於select以及epoll的最大支持的描述符數,我說的是,可以直接查看  /proc/sys/fs/file-nr 可以看到第一個數據就是機器支持的select數目我的是2500多,第三個就是支持的最大epoll數目,基本上1G==10W個。

4.網絡編程這塊,能不能簡單講一下你的瞭解。我直接說,估計你面了好多,很多都寫的是socket通信,我就講一些其他的吧,我給你講一下netlink通信,netlink可以再本機,路由,以及用戶態和核態之間通信,我講一下用戶態和核態之間的通信,下面就是bulabula一大堆,然後我引申到內核部分,告訴他,在netlink.c裏面的定義,他問我,你還直接看了內核啊。我說是啊,我喜歡直接讀源碼得到解決方法,晚上很多東西都很亂,版本什麼都可能會出現問題,唯一不出問題的就是查看本機的接口,直接讀源碼。。。我覺得,這個答案,他很滿意。

基本上面試到這就算完了,意外的是,面完之後,他直接跟我說,明天或者今天下午,我會安排你給我們總監面。。。真是意外驚喜。。。big surprise。

一面面試官是個非常溫暖的人。後面我會說。

二面:時間大概60分鐘,大部分時間都在扯犢子。

二面面試官也是,很犀利,我講項目的時候,同時指出來我的幾個問題,然後問我有沒有考慮過如何修改。我一邊答應着說,這地方確實有問題,剛開始不清楚怎麼下手,都是邊學邊做,學的話都是從最基礎最簡單的開始做,這裏確實每次用戶認證都單開一個進程,頻繁的分配和釋放內存,浪費很大,對於不使用slab/slob/slub管理的機器來說,會導致內存極大浪費,可以寫一個守護進程,然後當有請求過來的時候,再開一個線程去處理。然後他接着說,最好是直接維護一個線程池。我表示認同。我覺得可能是一面面試官對我評價比較高,聊完項目,基本上沒有問什麼問題。都是在聊我以後的工作方向,以及整個部門的大致方向。然後聊到數據挖掘,說每天他們要處理鵝腸產生的200T-300T的數據。亂七八糟一大堆。

一面之後等了一天,還沒有消息,我很急,當時一面面試官給我留了電話和QQ,我就給他發qq,他說沒問題的,然後說,咱們部門今天上午才轉給hr,剛纔他在跟總監一起篩選,說你的簡歷已經被轉過去了。然後告訴我,HR面一般問題不大,現在看來你的offer應該沒問題。。。。真是溫暖啊,大哥哥!點個贊。

HR面:

跨BU的,他是TEG的HR,這個HR竟然讓我講技術,並且,他懂得技術還蠻多,最後他說他們是搞整個存儲的,擁有騰訊三分之一的服務器,20w臺,聚合帶寬達到10TB/s我表示非常你們真是牛逼,,,然後問他,SAN內部是不是都用光模塊通信的,然後他說他不知道,他是搞HR的,我去,戳中了。。。然後我接着說,我覺得你懂好多,以爲你之前是搞技術的呢,懂得好多,其他公司的hr基本上都不懂技術,你能知道這麼多,說明跟搞技術的關係走的都很近,那你們部門的同事們關係肯定非常融洽。然後他數,畢竟做了十幾年的HR了嘛,還是聊了一些。整個過程很快,20分鐘。

總結:騰訊是個很好的公司,很喜歡,文化氛圍非常好,希望自己可以拿到offer,老天保佑。

百度:

百度14號開始在武漢面試,我是16號才收到通知17號去面試,基本上每天一面的速度。(排的靠後是因爲筆試成績低,,,61分,你懂得)

一面:60分鐘

一面我在531,面試官看起來跟我差不多大,不修邊幅,一看就是技術大牛,整個過程很嚴肅,沒有笑過。

首先是自我介紹,沒有問項目,然後就開始考知識點。我儘量回憶。

1.手寫代碼;問題描述:有一個文本文件,裏面記錄了用戶的登入登出時間,注意,時間可能有重疊。比如用戶A在10:30登入,然後11點登出,然後又在10:40登入,在1:00登出,就是因爲網絡的原因,可能有重疊,需要去掉重疊部分。最後,讓你求某一個用戶的總的在線時間。我首先問了,時間是標準時間,還是time_value類型的,他說,有什麼區別嗎?我說也沒有大的區別,就是我想先排個序,所以具體的比較函數需要用到,他說就去無符號長整形。然後我就寫了代碼,在一個函數裏面處理了,給他講了思路。。。然後被他一頓鄙視啊,說你這明明可以分成兩部分,一部分對重疊處理,一部分對普通情況處理。還有,你寫了這麼多判斷語句,看起來很亂(聽說了百度的面試官對代碼質量要求高,所以寫了很多保證健壯性的判斷)。。。。(⊙﹏⊙)b

2.線程和進程的區別。我是結合自己的理解說的。

3.linux內核同步通信機制。我說我自己常用的就是倆,mmap,spin_lock,rw_lock_bh,然後第一個是做一個內存映射,第二個自旋鎖,第三個是讀寫鎖並且禁止掉軟中斷。然後他問了我mmap的具體使用,我講了。malloc的實際上就是mmap映射到一段匿名的存儲區(對於大於128KB),小於128kb的直接brk()系統調用。。。。然後扯淡了很多,這個問題複習過,所以胸有成竹啊,各種扯。

4.還倆問題,忘記了。

二面:70分鐘

二面給我的印象非常深刻,非常和藹,一直在笑,很隨和,最重要的,他像一個導師一樣,一直在指點我,挖掘我。705房間。

問題非常多,從很多方面全面的問,怪不得說百度的二面是最難過的的。。。。太全了問的。

1.語言基礎問題,我說了我C++不太懂,還是讓讀了兩段代碼。第一段大致是.在一個類裏面定義了一個指向該類的指針類型,然後再析構函數中釋放掉該指針指向的內存,問會不會有問題。。。。我考慮了很久,不知道啊,然後我說,可能會出問題,如果這個地址指向了一個對象,但是你調用自己的析構函數,把人家釋放了,會調用人家的析構函數,這樣會出現問題(胡扯的),然後他說,假設他對指向的類有完全的擁有權。然後他給我提示,你想一下有沒有特殊的情況,比如重載賦值運算符的時候,你第一步考慮什麼?我一下明白了,自身問題,就是該指針可能指向的是自己。

2.還是語言問題,內容忘記了,大致意思是一個類,他傳遞的 fun(C * ptr),就是,然後問這樣使用會不會有問題,然後我直接說,我一般不這樣用,我都是直接傳引用,objective C++上建議能用引用的地方用引用,這樣就節省了很多複製的開銷,他點頭表示默認。然後讓我直接分析,這樣做是否可行。我想了一會看,告訴他,應該也是可行的,看不出來到底有什麼問題,也不會導致構造函數中不能傳指針或者類的非引用變量,會導致循環的調用構造函數的情況。但是這裏只是個一般的成員函數,應該是不會出問題了。。。他表示了贊同。

3.寫代碼,定時器,定時器是一個這樣的東西,首先,可能設置了很多個定時器,每個定時器都有一個觸發的時間戳,以及一個callback函數,然後讓我去實現這樣一個定時器,時間爲1970年開始的標準時間(就是  Unsigned long int);  然後我思考了一下,我說,這裏面要做兩件事情,第一件事情,排序,按照時間戳由小到大排序,然後依次喚醒,有心得定時器請求的時候,插入序列中。第二件事就是寫回調函數,根據你的id做不同的事情,調用不同的回調函數。用select可以實現這個。

然後他立馬問,用什麼來進行排序,臥槽,原來梗在這裏,我腦袋裏飛快的想,這個定時器的數量不會很大,好像用什麼算法性能都相差不大,都會很快。但是他居然問,肯定是不僅考我對是不是會寫算法,而是是否可以再適當的地方用合適的算法。問題出在,在已經排序的數組中,插入一個數據,使數據重新有序?我開始想,插入排序,冒泡麥序,簡單選擇排序,這些都差不多,因爲最後都會平均移動2/n個元素,應該不是最優的,快速排序,直接失效,基本有序的情況複雜度最高(其他算法做了優化還可以達到0(n),單指插入一個元素後排序)。。。後來我想,爲什麼要排序,或者對於計時器來說,根本就不需要排序,只需要維持一個小頂堆,因爲我這個定時器,只需要關心最小的那個時間戳,最小的輸出之後,我再重新調整成一個小頂堆,如果有需要插入的元素,那麼我也只需要做一次調整,也就是只需要比較和移動logn和元素,因此非常適合。。。然後我就說了,用堆排序,講了我的思路,他表示贊同,然後跟我說,chrome實現的定時器就是一個小頂堆。。。。百度重視的是你對算法的瞭解,以及如何運用,而不是簡單機械的會背個快排堆排的代碼。。。。點個贊。

4.如何判斷一個二叉樹是不是滿二叉樹?我說了從定義出發,就是一個一個編號,如果一個節點有做孩子,做孩子應該是2n+1,右孩子是2n+2;然後就判斷,如果一個節點的的左孩子是2n+1,而2n+1這個節點如果不是該節點的左孩子,這就說明順序不對了,一直檢查到最後一個節點。。。然後我說完這個幾乎同時想到另一個,,,層次遍歷,剛纔做的幾乎就是層次遍歷了,只需要依次層次遍歷,找到第一個葉子節點,或者第一個沒有左孩子或右孩子的節點,(沒有左孩子,只有右孩子的,已經不是了),然後後面的節點,都只能是頁節點。

5.linux基礎,如果一個進程想讓他後臺執行,怎麼做?我說加個&,然後又問我,如果一個進程創建了一個子進程,然後父進程先與子進程退出,會發生什麼?我說子進程會成爲孤兒進程,然後其父進程會變爲init進程,然後他說,如果我想讓他獨立運行呢?就是在後臺獨立執行。我說你說的是守護進程吧,主要用setsid實現,服務啓動後加上nohub就可以了吧。。。

6.linux基礎,top命令,直接讓我看,我說我主要用這個就是看cpu看內存的,然後其他很少看,然後他說,你看這個內存使用情況,最後一個是cached的大小,這個是什麼意思?這個我之前瞭解過,直接說:linxu內存管理者認爲,內存浪費是一種不可取的行爲,因此,會將沒用的那部分內存作爲一個cache,根據局部性原理將某些內容讀入內存中去,作爲cache,這樣可以提高訪問速度。。。。他表示贊同。

7.應該還有倆問題實在想不起來了。

三面:

慘烈的一面,面試官估計是個總監。612房間。

1.介紹項目,直接戳中項目中的不足。我介紹了師兄之前在這個項目上做的東西。時間大概是50分鐘。

2.逼着我介紹師兄的工作,主要有:熱點遷移,負載均衡,條帶化,元數據集羣及副本。其中關於熱點遷移,問我怎麼實現的,我說主要是基於讀寫的塊以及訪問文件的頻度,然後進行遷移。然後他問我,爲什麼不直接監控網卡,我解釋了一下他的想法以及實現方法及可能性,然後贊同這個方式。但是提出了自己的質疑,表示這樣可能會存在一個問題,就是可能一塊盤只有幾個文件讀寫頻度很高,那麼如果我監控網卡,會發現這臺機器數據量很大,那麼我可能需要直接dd這個盤,這個開銷很大,所以最終的性能如何,可能還是需要代碼實現然後測一次的。。。。(其實我當時想的是,你他媽扯淡啊,扯淡啊。。。)。

3.問我對搜索引擎的瞭解,從前往後,如何處理這種高併發的東西。。。各種扯犢子,首先做個CDN啊,然後做冷熱數據區分,搞個topk啊,然後把topk的東西全部搞到內存啊。。。都是胡扯。

4.問問題,介紹他們的工作,感覺面試官懶得鳥我。

 

網易遊戲CC語音研發工程師。

只面了一次,就跪了,感覺並不缺人,很快,剛坐下就告訴我,不來虛的了,直接寫代碼吧。然後就是連着三道題,一道題你還沒考慮兩分鐘,他就一直催你,很煩,感覺就像說:會不會,不會就滾。。。。問了我三道算法,第一道手寫,後面都是描述算法。

1.朋友還是敵人關係,比如  

A  B    1

B    C    1

C     D   0

D      F    1.

那麼問你,A和F是什麼關係,要輸出0敵人關係。要快速實現。

2.變異的樹,樹的內容是隨機的。樹的形態就像下面這樣。

       1

   2     3

4      5    6

其中1連接2,3,2連接4,5,3連接5,6,往下依次類推,長的跟楊輝三角似的,但是數字內容是隨機的。要求找到從根開始到最後一行葉子的最大路徑(走過的路徑對應的數字求和最大)。

 

3.給你一個數組A,讓你求B,滿足B[i]=sum(A)-A[i],i=0,len-1.要求不能出現減號。

第三題沒搞定,第二天接到短信,跪了。

 

中興的,這個非常簡單,有興趣的可以去虐面試官,,,明天HR面,不想去了。

 

最後:我覺得百度的面試時最累人,也最考驗一個人的基本功底,沒法突擊,只能平時積累。想比較而言,騰訊要簡答一些,注重你做的東西。所以百度確實是網絡了國內非常優秀的一批人,從面試過程就可以看到,氣勢逼人,一個程序員該有的素養,一個搞技術的該有的態度,都表現的淋漓盡致。然後,我這種技術渣渣,還是想,搞技術我不行,所以,我希望以後萬一技術搞不下去,公司可以給我開啓另一條通道,走一些管理路線,所以我還是更傾向於騰訊。。。。華爲這個IT產品線,級別很高,好想去,,,,只要米多,我就去!中興不考慮了,覺得裏面人太渣,,,居然說我女朋友,你搞後臺爲什麼用C/c++,你這麼多年就不會學習android,java嗎????還說他們的後臺都是java和C#做的,,,我去,java我還算可以接受,一般的小公司都是租服務器,中型公司會用java做一些後臺工作,比如唯品會,聚美優品等。。。但是你用C#是幾個意思???

我面過攜程的直接內推總監面,面到最後問我有啥問題,我直接問,你們開發環境是什麼?他說C#,語言不太好,但是是歷史遺留問題,我們也沒辦法,我表示理解。。。最起碼人家知道,C#不太好,,,而不是像中興,覺得我們這搞後臺的用C#,你們都要用C#,,,懶得說,二面不去了,中興太沒意思,去了也憋屈。

轉載於:https://www.cnblogs.com/xindufresne/p/4823742.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章