阿里、騰訊、網易、頭條、微策略、CVTE、百詞斬面試經驗總結

春招基本上已經告一段落,一個多月來大大小小也面試過幾家公司,從一開始的接到面試電話就惶恐不安,說話都不利索,到後來的還算能和面試官侃侃而談,能夠就面試中的一些開放性問題提出自己的解法。竊以爲自己在不斷的面試中還是有進步的,不論是技術上的還是自我表達和與人溝通上的。回想起自已過去的一個月面過的公司其實應該是挺多的了,大大小小應該參加過十幾場面試,電話面試也有,視頻面試也有,這裏總結一點:自我表達很重要!因爲有的時候很多知識點並不是自己不知道,而是自己表達不好,比如項目中的一些細節,一些算法思路的口述,一些基礎知識的描述,這些東西都是需要一個很好的語言組織能力去表達給面試官的,如果表達不清,面試官可能會覺得你基礎知識不紮實,或者覺得你很難溝通,所以通過不斷地面試,總結每場面試,回憶在面試中知識點欠缺的地方或者是表述不到位的地方,有針對性地去補充欠缺的知識點,思考下次面試的時候應該怎樣去更好地表述,這一點是很重要的。所以面過幾次之後,吃過了表達上的虧,後面我開始對收到的每一個面試電話錄音,面試完後再反覆聽自己的錄音,從一個旁觀者的角度去看待整場面試,對每一個面試官提到的問題,思考他爲什麼會這麼問,他想知道什麼,我應該怎樣去更好地表述自己的觀點。這樣不斷地糾正自己的表達,之後的幾場面試,不管是頭條的還是騰訊的,都變得遊刃有餘了,至少沒有犯表達上的錯誤。下面我也總結一下面試過程中面試官常問的一些問題:

阿里

一面(3月1日):阿里一面是處女面(偷笑),接到阿里一面電話的時候真的很方,我是年後投的簡歷,沒想到還沒投一個星期就收到了一面電話,我還想先面幾家小公司攢攢面試經驗然後再去打阿里這個大boss呢,然而阿里完全不給我機會。當時投簡歷的時候看見牛客網上有內推不管三七二十一就投了,而且投的還是JAVA崗,我一個只會C++的連JAVA語法都沒看過的人去投了阿里的JAVA崗(哈哈哈現在想想那個時候簡歷投得真是草率)。接到面試電話的時候我在爬山,當時以爲不會這麼早收到面試電話,就和表弟去三清山玩了,晚上剛回到酒店就收到了面試電話,一看是浙江杭州打過來的就知道大事不妙,然後心裏開始方,幾乎是顫抖的手拿起電話接通(其實當時內心是拒絕接這個面試電話的,因爲真的沒有一點點防備,但是沒有辦法只能硬上了)。

對方的第一個問題是:我看你簡歷上寫的都是C++的項目啊,JAVA你會嗎?

我:不會。

面試官:要不這樣,我給你一晚上的時間看JAVA,明天上午我再打電話過來面你JAVA?

我:不行,其實你可以問我C++和Linux的一些東西啊,這些東西我還是比較熟悉的。(其實我的內心獨白是:這是什麼操作,一晚上學JAVA,怎麼可能嘛,再說我現在還在外面,周圍連臺電腦都沒有,三清山上也沒有網吧啊,怎麼學,當時只想把話題繞開)

面試官:但是我們公司目前招的是JAVA的啊,嗯,C++,讓我想想啊。。。

(面試官開始陷入沉思,我感覺一面還沒開始就要掛了orz,都是當時投簡歷的時候腦子進的水)

面試官:堆排序你瞭解嗎,說說堆排序的過程吧。

我:balabala。。。

面試官:B樹和B+樹瞭解嗎?

我:balabala。。。

面試官:現在假設有很多的數據,怎樣用B樹或B+樹來提高查詢的效率?

(其實一開始聽到這個題目我是很懵逼的,這是個什麼題,條件這麼模糊,自己平常琢磨出來的題嗎,喵喵喵。但是沒辦法,只能硬答了)

我:用B+樹建索引,balabala。。。有的沒的說了一大堆。

面試官:假設現在內存太小,但是數據量太大,內存裝不下索引怎麼辦?

(我現在更懵逼了,完全不知道該怎麼辦,但還是硬着頭皮答了)

然後我們就內存裝不下索引這個問題深入地探討了20多分鐘,好吧其實全程感覺我都在說一些有的沒的,也不知道答沒答到點子上,我後來才知道這一類海量數據的問題其實都有一類通用的解法:https://github.com/linw7/Skill-Tree。然而我當時並不知道,然後面試官看我可能實在也答不出來什麼了,這個問題就先放過我了。

面試官:我看你項目上有用TF-IDF算法,這個算法解釋一下?

我:balabala。。。(我對我用到的算法還是很瞭解的)

面試官:你還用到了simhash算法,解釋一下?

我:balabala。。。(項目中的算法問題從來不怵)

面試官:Linux中都有哪些鎖,你舉例說一下?

我:balabala。。。(Linux系統編程還是不虛的)

當時還問了一些別的記不太清了,比如問了一些當時爲什麼做這個項目,項目中遇到的問題是怎麼解決的,還問了多線程併發編程注意事項等等。

面試官:好了,今天的面試就到這裏了,你還有什麼想問我的嗎?

我:請問您平常做的工作是什麼呢?

面試官:我主要是負責螞蟻金服金融業務這一塊,balabala。。。

(好吧,我現在才知道自己面的是阿里的螞蟻金服,因爲官網上完全看不出來自己的簡歷被推給哪個部門了)

一面就這樣結束了,大概40分鐘,面試官讓我之後多學學JAVA,說後面可能會有人面你JAVA。(我:喵喵喵,還有下一面?)。之後的幾天我就一直在看JAVA,好歹是把語法掌握了。

二面(3月12日):二面是在下午,收到二面電話已經是一個多星期之後了,我還以爲不會有二面了呢。

二面面試官第一個問題:我看一面面試官給你評價有不會JAVA,自己有沒有下去學?

我:有啊,之前幾天一直在學JAVA語法,但是一個禮拜過去了還沒收到面試電話,我還以爲一面掛了呢,所以這幾天也沒怎麼接着看JAVA。。。

面試官:好,那我就不問你JAVA了。(我:喵喵喵,不問了,剛學完語法現在又不問了?)。

之後問了一些計算機網絡方面的,比如TCP三次握手四次揮手,TIMEWAIT狀態,什麼是子網掩碼等。問了一些操作系統方面的比如你對操作系統的理解,庫函數和系統調用的區別等。問了一下大學ACM經歷(因爲我簡歷上有寫),問了一下自學計算機的歷程,問了一下項目中的TF-IDF算法。最後是共享屏幕,遠程編程,他讓我下載一個釘釘,然後通過釘釘把題發給我,共享我的屏幕。這道編程題我寫了快50分鐘,(後來想想其實題目不難,主要是當時太緊張,之前也沒有共享屏幕編程的經歷,拿到題目的時候就很方,後來想想題是真的不難)寫完後用他發來的數據測試了一下,測試用例都過了,然後把代碼發給他,結束了二面。二面問問題的時間再加上敲代碼的時間大概有一個半小時。二面結束的那天晚上,我躺在牀上的時候忽然想到了那個題目的最優解,然而又有什麼用呢當時沒想出來orz,但是那會兒我並沒有想過20幾天之後頭條一面我會再度遇到這個題目,並靠這個最優解順利通過了一面哈哈哈哈哈(可見總結每一個面試題並將它解決掉對後面的面試有多麼重要,因爲你永遠也不會知道下一次面試官會不會再次問到同一個問題,所以碰到問題當時不會不要緊,下去之後立馬解決,就算以後不會遇到,權當拓展知識面)

二面過後10天,我得知自己掛了,自己也有反思,其實二面的時候基礎知識和項目經驗這一塊我覺得答得都還可以,就是那道編程題50分鐘才寫出來真的是太傷了,阿里二面掛了之後我開始在準備面試之餘去網上刷題,只是希望以後碰到這種題目腦子轉得快一點。

網易

筆試(3月18日):嗯,沒錯,之前就聽說過網易筆試很難,而且網易比較看重學校,像我這種辣雞211網易爸爸基本上是不考慮的。然而頭鐵的我還是去參加了網易的筆試。三道編程題,當時只AC了兩道,最後一道直接放棄,因爲我知道自己寫不出來,也知道可能沒幾個人能寫出來,因爲真的是很難,有興趣的可以去牛客網上看看今年春招網易遊戲第一批筆試的最後一題,當時看到這道題,初步思路是BFS,但是知道自己寫不出來,於是直接放棄。

一面(3月27日):得知自己筆試過了,27號被安排了面試,當時我的反應是:三道題AC兩道竟然就過了,果然是最後一道比較難,沒幾個人能做出來,這樣的題反而沒有什麼區分度。一面問得很雜,C++,項目,操作系統都有涉及,還記得幾個問題,比如C++的多態實現機制,內存對齊,const關鍵字用法,C++中的new和C中的malloc有什麼區別,進程和線程的區別,怎樣避免死鎖的發生,也聊了聊項目,然後拋出一個經典編程題:一個數組,其中只有一個數字出現一次,其他數字出現兩次,問如何用最快的方法找到只出現一次的那個數字。答曰:異或。他看我一下就答出來了,肯定是之前看過,又換了一個題:一個數組,其中只有一個數組出現一次,其他數字出現3次,問如何用最快的方法找到只出現一次的那個數字。(我:喵喵喵,之前看過,但是忘了)。然後墨跡了半天,最後在他的提示下給出解法,結束了一面。他說HR會在一週之內通知我面試結果,然而現在都4月9號了還沒消息,網易怕是掛了,其實本來對網易也沒抱太大希望,只是攢波面試經驗而已,通過聽網易面試的錄音,我發現自己在表達上面還是有些欠缺,回答一些問題的時候結結巴巴,底氣不足,即使是回答自己知道的問題也顯得沒有自信,很容易給人一種技術不行的感覺,現在想來這也許就是網易一面掛了的原因。

--------------------------------------華麗的分割線,4月12日更--------------------------------------

原來網易並沒有掛掉,今天中午收到了offer,而且一面就發offer了,算是比較開心了。

CVTE

一面(3月23日):CVTE也是參加過筆試然後得到面試機會,其實CVTE的筆試還是比較簡單的了,這裏也沒有什麼好說的。一面的話問得問題都很常見,比如C++的虛函數怎麼實現的,static關鍵字用法,const關鍵字能否和static關鍵字聯用來修飾一個類的成員函數,爲什麼,構造函數和析構函數能否聲明爲虛函數,爲什麼。main函數執行前程序都做了哪些工作,樂觀鎖和悲觀鎖的瞭解,互斥鎖和讀寫鎖的區別,寫時複製技術,STL中常用容器的底層實現原理等,智能指針使用及其底層原理,還問了一個比較新穎的題目:父進程調用fork函數創建一個子進程後,父進程中的線程和鎖資源會不會原封不動地複製給子進程,當時這個問題我沒答好,我當時回答會,其實正確答案應該是鎖資源是會複製過去的,但是線程並不會,也就是說如果父進程事先開了許多線程,用到了一些鎖資源,然後調用fork創建一個子進程,這個時候子進程內其實只有一個線程,也就是說只有一個執行流程,就是子進程本身,但是鎖資源是會原封不動地複製過去的,所以這裏就會有一個問題,在多線程環境下,需要父進程在獲取所有鎖資源後再調用fork,避免子進程的鎖資源被無故浪費掉,具體請見:https://blog.csdn.net/xhjcehust/article/details/37728985。所以CVTE一面還是比較漲知識的,至少知道了自己以前的一個盲區。一面結束後很快收到了HR的電話,告訴我一面通過,後續面試要去北京。(我:喵喵喵,去北京?果斷拒絕,我只是想攢波面試經驗而已,去北京的路費還是不想掏的,再加上最近幾天是面試電話高峯期,怎麼可能去北京)然後就沒有下文了。

微策略

一面(3月26日) :微策略也是參加過筆試然後得到面試機會,筆試難度和CVTE差不多,編程題是全英文的但是不難,除了編程題還有英文閱讀題,做英文閱讀的時候感覺好像回到了高中時代,就是給一段英文文章,問你下面哪個描述是正確的這種。記得這家公司好像是外企,所以對英文要求比較高,當時投簡歷的時候還要求有英文簡歷(爲此我還花了一點時間將中文簡歷直接複製粘貼到有道翻譯上,再將翻譯好的句子直接拼成一份英文簡歷,什麼,你問我有語法錯誤怎麼辦,不管,就是這麼簡單粗暴)。一面面試官上來用英文說讓我自我介紹一下順便再介紹一下自己做過的項目,我以我六級飄過的英語水平開始做自我介紹,介紹項目的時候就完全是在照着英文簡歷唸了,然後他用英文針對我的項目提了幾個問題,我當時也沒太聽明白他問的到底是什麼,其實感覺對方的英文也不怎麼樣(哈哈哈,畢竟還是中國的程序員),當時只能硬着頭皮答了一些有的沒的,感覺他也沒怎麼聽明白我說的英文(哈哈哈,中國式英文口音太重)。就在面試即將陷入雙方都聽不懂對方英文的尷尬情形下的時候,這個時候他說:好了,接下來我們用中文溝通。(我舒了一口氣)。後面問的問題就很常見了,C++的多態實現機制(我發現這個每面必問),gdb調試程序的方法,還有一個算法題,多路歸併的時間複雜度分析,這個時間複雜度我一開始沒答上來,後來在他的引導下答出來了,感覺這個面試官人還是比較好,會在面試的過程中引導你去解決問題。當然中間還問了一些問題現在忘記了,一面面了25分鐘結束了,他告訴我後面應該會有HR再聯繫我,我基本上知道自己一面過了。

二面(3月28日):其實27號下午微策略的HR就打電話過來說接下來的面試要去杭州進行,我說視頻面試不行嗎,她說不行,只能現場面。然後我就說學校有課去不了就拒絕了(喵喵喵,去杭州?我只是想攢波面試經驗而已,去杭州的路費還是不想掏的)。然後當天晚上大概10點鐘左右又收到微策略HR打來的電話,說28號給我安排了視頻終面,還給我發來了鏈接地址(我還有什麼好說的呢,滿滿的都是套路,差點就信了,幸虧當時拒了,省了一波去杭州的路費)。二面應該是一個總監級的人物(後來聊天的時候知道的),談吐很好,給人一種很溫和很舒服的感覺。開始也是英文交流,後來改成中文。問得東西不多,主要問了一下什麼時候能去實習,之前做過的項目,遇到問題怎麼解決的,大學期間的經歷,獲得過的獎項,感覺像是聊天一樣,其實也沒問啥。二面大概40分鐘,最後他感謝我投他們公司,我感謝他能安排視頻面試,雙方互祝安好,二面結束。整場面試下來感覺技術方面的就沒怎麼問,或者問得不深,聊天的成分還是居多。最後他告訴我後面應該會有HR聯繫我。(喵喵喵,今天都4月9號了一點消息都沒有)

阿里、騰訊、網易、頭條、微策略、CVTE、百詞斬面試經驗總結

頭條

筆試(3月24日):頭條筆試五道編程題,只AC了一道,其他幾道都是通過部分測試用例,最後一道直接放棄因爲當時沒時間了。沒想到這都過了筆試。收到面試通知的時候真的可以說是很驚訝了。

頭條的面試效率應該是我面過的所有公司中最高的了,頭條是視頻面試,我是3月31日下午3:00開始面,到下午6:00的時候三面全部面完,中間基本上只有上廁所的時間,當場面完當場告訴你結果。感覺頭條對算法的要求還是比較高的,三場面試基本上大部分時間都是在做算法題。當然項目和基礎知識也有涉及。

一面(3月31日):一面面試官一看就是一個程序員,視頻中的背景一看就是在他住的房間裏面,還能看到衣櫃。。。他頭髮挺亂的,給人的感覺就像是剛睡完午覺頭髮亂糟糟的那種。穿一件黑色T恤,典型的程序員裝扮。上來就是一道編程題:合併兩個有序的單鏈表。出完題後他電話就響了,就出去接電話去了,然後留我一個人在那敲代碼。題不難,他接完電話回來後基本上我也寫完了,然後他讓我說了一下思路。然後開始問操作系統方面的,多線程和多進程的區別,Linux下都知道哪幾種鎖等。後來又說我們再來寫一道題,求股票的最大利潤,基本題意就是給一個按日期排列的股票價格的數組,任意日期買入,往後任意日期賣出,求能獲得的最大利潤。(當時拿到這道題,喵喵喵,這不是阿里二面的那一道嗎,阿里當時還給了一個公式,題意比較隱晦,沒想到頭條問這道題的時候這麼直接,心中暗喜),當場給出最優解,就是從後往前算,整體時間複雜度O(n),空間複雜度O(1)。面試官看了我的解法之後,感覺他不太相信有空間複雜度O(1)的解法,反覆地問我算法的思路,最後總算是給他講明白了,然後就告訴我一面過了,讓我在線上等一會兒,應該會有二面。(PS:我後來才發現這道題原來是《劍指offer》的原題,只是當時忘了,還好給出了最優解)

二面(3月31日):一面結束很快就開始二面了,二面視頻背景應該是在公司,辦公環境還比較不錯。二面面試官先讓我做一個自我介紹,然後說:我看一面面試官對你評價很高啊。我:哈哈哈 是嗎。(心想很可能就是一面那道題我給出了一個最優解,有點出乎一面面試官的意料,可能他當時並不知道有這樣的解法,感謝阿里二面,感謝《劍指offer》)。然後二面面試官上來又是一道編程題:刪除二叉搜索樹中特定的節點。我當時拿到這個題的時候一臉懵逼(後來知道是LeetCode原題,只是自己沒有刷到orz)。後來在二面面試官的提示下找到了刪除節點的方法,勉強寫了出來。然後還問了一個比較有意思的題,給一個單鏈表,怎樣隨機返回其中的某一個節點?我給出的解法是先按鏈表長度隨機生成一個隨機數,再去鏈表中走相應的步數,返回那個節點。又問我如果鏈表很長怎麼辦?我:有多長? 他:無限長。(我:喵喵喵)。最後我給出的解法就是將無限變爲有限,把鏈表分割成有限長度的小鏈表,再去隨機取小鏈表中的節點。然後他好像勉強接受了這個解法,然後問了一些項目方面的問題,最後說讓我在線上等一會兒,應該會有後續的面試。

三面(3月31日):很快就到了三面,三面上來也是一個算法題:給一堆撲克牌,設計一個算法將它打亂,越亂越好。我給出解法之後讓我分析時間複雜度和空間複雜度,讓我分析打亂的效果,怎麼去衡量打亂算法,能不能給出一個更好的算法等等。(我後來才知道原來他問的是經典的洗牌算法)但是當時並不知道,只能按照自己的理解給出算法,然後再分析看有沒有更好的算法。然後開始問我項目,問最小編輯距離算法,TF-IDF算法(因爲我項目中有寫),分析時間複雜度,問知不知道協程等等。最後面試結束,也沒給具體結果。後來HR打來電話說兩週內纔會出結果,讓我耐心等待。(今天已經4月9號了,一個多星期過去了還沒有消息,我只想說雖然頭條面試效率高但是總體等待的時間一天也沒少)

頭條面完之後我開始總結,其實面試過程中問到的一些算法之前都沒有了解,像那個洗牌算法和刪除二叉搜索樹中節點的算法,在之前沒有接觸過這類的題的時候,想要通過面試,那就只有在面試的過程中不斷思考解決方法,如果能在面試官的提示中找到解法,並展示出自己的coding能力,還是很有可能通過面試的。所以面試過程遇到不熟悉的問題不能方,一定要不斷嘗試去解決,在解決問題的過程中展示出來的能力往往是面試官看中的。

--------------------------------------華麗的分割線,4月17日更--------------------------------------

今天晚上收到頭條HR的電話,算是給了一個口頭offer了,三面過去竟然等了這麼久,一度以爲自己掛掉,接到HR電話的那一刻還是比較開心的啦!

阿里、騰訊、網易、頭條、微策略、CVTE、百詞斬面試經驗總結

騰訊

騰訊的面試過程真的可以說是緊張而又刺激了。騰訊是找學姐內推的,所以沒有參加筆試就得到了面試機會,可以說是非常幸運了。

QQ音樂一面(3月8日):那是一個晴朗的晚上,知道QQ音樂很可能會打電話過來,因爲3月7日其實已經打過電話了,只是那時剛好在洗澡,完美錯過面試電話(因爲這個嚇得我後面騰訊面試期間都不敢去洗澡了)。果然3月8號又打了過來,開始讓做自我介紹,還記得我當時結結巴巴,緊張得連自我介紹都說得不利索(哈哈哈,QQ音樂第一面其實是我人生中第二場面試)。當時面了大概一個半小時,問得特別多特別細,項目方面也是問得很細。C++方面問了虛函數實現機制,STL用過哪些容器,各自的底層實現是怎樣的,哈希表和map的區別,哈希表怎麼避免衝突,項目中的線程的同步是怎麼實現的,看我簡歷上有寫熟悉vim,熟悉gdb調試,問我有沒有用過vim的插件,我說用過you complete me和ctrlp,問我gdb怎麼打印堆棧信息,怎樣檢測程序是否內存泄露,怎樣發現程序是否死循環了,C++編寫的程序怎麼去連接C語言的庫,當時回答extern “C”,問我有沒有用過git,爲什麼git中有了commit命令還要有add命令,直接commit不好嗎,問我git中怎麼創建分支合併分支,分支衝突怎麼解決等等。當時還問了一些開放性問題,比如在兩臺主機之間傳一個大的文件,怎樣傳輸更快。我後來才知道其實這樣的開放性問題並沒有一個標準答案,只要能給出解決方案,言之有理即可。當時還問了很多問題都記不大清了,面完之後將近晚上10:30了,他後面給我的信息是一面沒什麼問題了,要把我的簡歷給他leader看一下。然後就結束了一面。

QQ音樂二面(3月28日):20多天後等來QQ音樂二面,中間一度以爲他們leader把我這個渣渣本科生忘記了(然而事實證明他們leader確實把我忘了,還好有學姐時不時提醒leader說還有一個人沒面,在這裏要特別感激學姐)。QQ音樂把我忘記的這20多天裏,我又在騰訊的官網上投了簡歷,不巧的是27號發現騰訊雲把我的簡歷鎖定了,這直接導致我後來又面了騰訊雲,然後拿了騰訊雲的offer而不是QQ音樂,這波操作真的可以說是緊張而又刺激了。不說了扯遠了,說回QQ音樂二面,二面問得東西也比較多,C++多態實現機制(發現這個真的是必問項),++i和i++的彙編層實現原理,static的應用場景,TCP的滑動窗口和慢啓動,TCP的TIME_WAIT狀態,TCP三次握手交換了哪些數據。開放性問題有,假設有兩個人A和B,A要給B轉賬,如何保證這個過程的安全性和可靠性。就是說A向B轉賬的時候,如何保證A的錢減少了而B的錢相應地增加了。感覺有點像數據庫裏面的事務的原子性,如果執行一個事務失敗了就回滾爲原來的狀態。當時這個問題大概討論了十幾分鍾,最後還算是給出了一個比較讓他滿意的答案。然後開始問我對未來的規劃,怎麼證明自己有很強的學習能力,問我有什麼問題問他等等。總體來說感覺二面面試官還是很不錯的,也比較愉快地結束了二面。

當天晚上從學姐那裏得知自己二面過了,三面需要去深圳,然而我大概晚上8點多的時候又收到了騰訊面試電話,一度以爲是QQ音樂三面,當時還納悶不是說三面去深圳的嗎,然而當時人在實驗室,光顧着和面試官另約時間了,也沒問清楚是不是QQ音樂(後來知道是騰訊雲,喵喵喵,這就很尷尬了)。從實驗室回到寢室後又收到了QQ音樂二面面試官打來的電話,向我確認剛纔打電話的是不是QQ音樂,我說我其實也不知道,然後問我如果報銷路費的話,願不願意31號去深圳參加QQ音樂終面?(我還有什麼好說的呢,當然是願意啊,別說報銷路費了,就是不報銷我也願意去啊)其實當時心裏還是比較方的,因爲知道4月2日前沒拿到騰訊offer的,不管是不是還在內推流程,最後都要參加騰訊筆試,然而對於筆試這種東西我內心其實是無比拒絕的,我只是希望能儘快走完面試流程,不想拖到4月2日之後。

騰訊雲一面(3月29日):一面約了下午1點,感覺可能是內推快截止了,騰訊的面試官都在push進度,下午1點還來面試,真的可以說是比較敬業了。一面的面試官好像知道我面過QQ音樂,他說接下來這些問題可能QQ音樂都問過,所以你答到點子上就行了,這樣也不會太浪費時間。我說好。所以他問問題的節奏比較快,我答得也比較快,有些問題我答到點子上,他也默認我會沒往下深究。一面面了大概40分鐘,確實大部分問題都是QQ音樂問過的,當然也有一些沒問過,比如問我KMP算法原理,問我https的握手過程,問我項目中有沒有考慮過使用無鎖隊列實現多線程間安全地訪問一個隊列(我當時是用互斥鎖和條件變量實現的,所以有此一問)。問我有沒有實現一個異步的場景應用到項目中,當時答曰沒有。一面很快就結束了,當時他說應該會有後續面試官聯繫我。

騰訊雲二面(3月30日):不得不說騰訊的效率是真的高,第二天就等到了二面電話,靜態庫和動態庫的區別,算法題:有兩個數組A和B,怎樣找出A中存在但是B中不存在的元素,時間複雜度是多少。分佈式存儲有了解過嗎,答曰:沒有。分佈式存儲裏面保證數據一致的一致性算法知道哪些,答曰:不知道。也問過一些別的東西但是現在忘了,其實也沒問多少,20多分鐘就結束了,除了分佈式方面的沒答上來其他的回答得都還好。最後他告訴我週末會有總監面試。

騰訊雲三面(4月1日):一不小心就4月1日了,4月2日之前沒拿到offer就逃不過筆試了(心裏真的是方的不行)。之前也有問過學姐爲什麼QQ音樂那邊沒有消息了,不是說31號去深圳面試的嗎,學姐說因爲我面了騰訊雲(喵喵喵,現在只希望騰訊雲這邊能給點力了,事實證明騰訊雲果然給力)。總監問我要不要參加騰訊的筆試,我說如果4月2號前沒拿到offer就肯定要參加筆試啊(其實我當時恨不能說,總監你能不能幫忙push一下進度啊,爭取4月2號前出結果,千萬不要讓我卡在4月2日啊啊啊啊,事實證明總監其實已經在push進度了,不然不會週末還打電話過來面試,真的是非常感謝!)。總監問的問題就比較大而廣了,怎樣設計一個支持高併發的服務器架構,答曰建服務器集羣,做負載均衡。怎樣調試一個正在運行的程序,答曰gdb attach。問我的項目支持的最大併發量是多少,問我對AI,大數據,機器學習,區塊鏈是否有了解。三面20分鐘就結束了,當時也不知道自己過了沒有,一直比較焦慮,因爲萬一騰訊雲沒過的話,再去面QQ音樂也來不及了。

騰訊雲HR(4月1日):下午一個電話將我從睡夢中驚醒,原來是騰訊雲HR(心中竊喜)。和HR聊得不多,只有10幾分鐘,問了一下個人信息,家庭情況,未來的職業規劃,自己的學習歷程等等。最後給了一個口頭offer,還說會儘快地幫我推進度讓我不要擔心(感覺HR小哥哥人真的是很好)。HR面就這麼愉快地結束了。

騰訊雲HR(4月2日):4月2日HR再打電話過來就已經是給電話offer了,晚上就收到了郵件offer。終於不用參加筆試了,這裏不得不感謝一下騰訊雲的面試官和HR,面試的時候真的很給力,一直都在push進度,基本上一天一面,真的給力。還有特別感謝學姐,每次面完試我都會把結果告訴她,感謝在我焦慮的時候,在我感覺自己面試要掛的時候能有她的鼓勵,這份鼓勵對我來說意義真的特別大。感謝!!!

百詞斬

筆試(3月24日):百詞斬的筆試相對來說就比較簡單了,三道編程題,基本都是《劍指offer》原題,這個就不多說了。

一面(3月28日):一面問得問題都很基礎,TCP三次握手四次揮手,TIME_WAIT狀態,Linux下常用命令,gdb調試方法,怎樣避免內存泄露,Linux下的sed和awk命令用過沒有等等,簡單地問了一下項目,一面大概30分鐘就結束了。

二面(3月29日):由於當時突然接到班長通知說要開班會,二面給推了。(沒想到後來直接三面,哈哈哈哈)

三面(4月2日): 三面是CTO面(哈哈哈,非常榮幸),三面問得東西就比較細了,特別是問項目的時候,記得有一個點上我們還在討論是用set實現比較好還是用vector實現比較好,還分析了一下兩種實現的時間複雜度。sizeof求一個類型的大小的時候是編譯時確定還是運行時確定的,SYN泛洪攻擊知道嗎,怎麼避免。還有一道編程題,就是找到一個排序數組中的特定數字的下標,如果這個數字有重複,就返回最後一個的下標,其實就是《劍指offer》原題,改進一下二分查找就好了,再次感謝《劍指offer》。三面很快結束。後面拿了百詞斬sp offer,哈哈哈非常榮幸。

總的來說吧,面了這麼多家公司,感覺在每場面試之後不斷總結,不斷改進,不斷反思是最重要的。程序員這條道並不容易,尤其是對一個生物狗來說(哈哈哈),感謝在這條路上遇到的每一個人,感謝學姐的幫助和鼓勵,感謝阿里大神孔哥在我阿里二面掛掉之後還不斷幫我內推給我找機會,感謝阿里雲內推羣讓我認識了很多大佬,說不定秋招還要靠大佬們內推呢哈哈哈哈。


原文:https://www.cnblogs.com/jeysin/p/8758463.html

相关文章