按照我找工作的順序來講吧,找工作是一件非常辛苦的事情,除了少數的大牛外,沒有誰可以毫不費力的找到工作,這期間在精神上以及身體上的摧殘都是巨大的。我盡量回憶,希望可以給後面的人一些簡單的啟發。
華為
一面:華為我走的是提前批,一面面試官很和藹,問的比較廣泛,但是主要是自己履歷上的,問了我的數模,項目,專利,實驗室的工作情況。感覺因為是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