春招實習上岸,整理CVTE,華為,百度,頭條,騰訊。分享心得及面經

Java高階架構老王發表於2019-05-08

春招戰線拉到比較長,從二月底開始整理專案、製作簡歷,3月初開始投遞第一家,接下來筆試、面試、總結、複習、等待……持續了差不多整整兩個月,直到五一放假前才正式收到第一個心儀的offer。這期間學習獲取了很多,現在我將心得及面經稍微梳理一下,希望我的分享也能夠幫助到大家。

前後投遞了二十餘家,其中有的筆試沒過,有的投遞後或者筆試完就沒有訊息了,真正參加面試的有十家。目前offer情況(時間順序):CVTE,華為(排序中),百度(oc),頭條,騰訊。

心得

先談談自己遇到的問題與從中總結的心得,不一定對每一個人都有用,當參考參考吧。

  • 大家在找實習找工作時,可以稍微利用一些時間關注各個公司的招聘動態,據此編寫一個進度表,如果有新的筆試、面試安排能夠及時調整和篩選,大概什麼時間點會面哪些公司,做到心中有數

  • 如果複習的差不多了,我認為可以早點投

    • 一是因為,投遞完簡歷之後,會有篩選、筆試或者撈了簡歷一直沒發起面試等操作,要過一陣子才會真正開始面試,在這一段等待的時間裡,其實也是可以複習的

    • 二是因為,你在複習,別人也在複習,等你複習差不多了,別人也複習差不多了,這時可能有很多HC就已經發出去了,越往後走可能難度越大

    • 我覺得我身邊的同學、師弟一個月前就拿到了心儀offer時,我還在持續戰鬥的原因之一 ,可能就是投的比較晚了

  • 有時候可能會接到沒有預約的突然來電面試,此時如果允許的話,最好稍微推遲一點,做好心理準備、拿好紙筆、戴上耳機、儘快調整好進入狀態、找一個較為安靜的地方再開始面試,不然可能會影響面試質量

  • 每次面試時最好是能夠帶上紙筆,面試官提問後,將其關鍵點在紙上做好記錄

    • 一是因為,這樣有助於思考,不熟悉的問題,可以有一小段時間回憶聯想相關知識點,即使是很熟悉的問題,也不用急著馬上回答,可以稍加梳理,快速在心裡列出幾個點,有條理有邏輯的述說

    • 二是因為,這些問題可能當時回答不完全,或者是根本不太會,在紙上記錄後,可以在一定程度上覆盤不會的點,從而利用閒餘時間再將這些不足之處補上

  • 在聽到面試官問題後,最好先問清楚已知條件,根據已知條件作答,但同時也不要把條件問的太細,因為可能有反效果,把自己的思路、知識點限制得太窄(後續面經有提及)

  • 有一些開放性問題,不要覺得不熟悉、沒聽過,就想放棄,要敢於去嘗試,去思考

    • 一是因為,根據自己的所學,慢慢回顧,以及在面試官的引導之下,是有可能回答出來的

    • 二是因為,有的開放性問題,本來就是面試官為了考察學生的知識廣度、深度的,即使不會,在回答的過程也可以往自己會的知識點上引導,向面試官展現自己會的東西(後續面經有提及)

  • 心態很重要

    • 在招聘持續過程中,會經常與同學們交流,大家一起交流學習、面試心得是極好的,共同成長進步,但也難免會提到一些offer情況,不由自主的就比較一下啊,如果別人拿了好offer,而自己卻不如意,心態上會很受影響,所以我覺得。。。(道理我們都懂。。。但調整起來真的不是那麼容易的。。。)

      • 一是要調整自己的動機:比如說我們找實習,最主要的還是能夠有一個鍛鍊自己,讓自己成長進步的機會,攢一份實踐經歷,在秋招中更具有競爭力

      • 二是要保持一個平常心:知足常樂,能拿一個還可以offer就已經很不錯了,接下來再接再厲

      • 雖然我嘴上這麼說,但是心裡真正能這樣做還是很難的,希望也能聽到大佬們的解惑吧

  • 狀態很重要

    • 面試擺在面前,我們經常是為了面試而複習,有時候會比較浮躁。對於簡單的知識過了一遍又一遍,覺得看了也沒太大的作用了,實在是有點不想看了;對於較難的知識感覺之前明明看過的看懂了,這時又忘記了,很難沉下心來再去深入;感覺自己好像這段時間沒有成長,沒有進步,沒有學到什麼新東西,以致於狀態變得很低迷

    • 我覺得這個情況是很正常的,不要刻意的給自己製造恐慌,不要給自己徒增壓力;因為對於一些較為簡單的知識,經歷過了好幾場面試之後,相當於已經起到了鞏固作用,並且在回答的敘述上應該也比之前更有邏輯更清晰了,可以不必再花過多時間再反覆的看;但一些較難的知識,還是得有針對性的各個擊破,經歷了好幾場面試後,心裡應該清楚自己哪些點比較薄弱,哪些點是重點,有針對性的去深入複習,調整好自己的狀態,爭取下一場能夠做到更好

面經

接下來是大家最喜歡的面經環節,按照第一面開始的時間先後順序整理,大家可以參考時間線;另外其中有一些當時記錄的總結感想也一起貼上了,由於是面後再次回憶記錄,不一定是準確的措辭和順序,還請見諒。

阿里

3.25 實習一面

突然來電,問了基礎情況,沒問是否方便,直接開面。。。還沒有準備好。。體驗較差,有些問題沒記錄了

  • 海量資料top k問題,如何優化?雜湊劃分小檔案時涉及很多io操作,io量是多少(minHeap的時間複雜度是nlogk,可以用partition降低至n,另外,read的io量比較大,可以使用mmap直接記憶體對映進來,一次性讀很多而不超出記憶體限制,應該可以滿足要求)

  • select及epoll的瞭解,epoll新增一個描述好還是新增多個好?

  • 虛擬函式機制,虛擬函式呼叫和普通函式呼叫,效率誰快

  • 演算法題:最長不重複子串

  • 演算法題:兩個字串的交集,不是排序的

  • socket網路程式設計函式使用

  • 專案介紹

ps:大家都說阿里的面試體驗比較好,可我實在是忍不住想吐槽一下

  • 晚上9點多突然來電,沒有預約,也不問現在是否方便,直接開問,我拿著手機,沒帶紙筆不好記錄,沒戴耳機有時聽不清楚,沒穿外套又站在風吹的大廳裡面了一個小時,但自己也有原因,敬畏是阿里大佬,沒有提出稍等的申請

  • 一上來就問,我們這邊是阿里雲搞資料庫、底層方面的,你這個專業報我們是什麼意思(我:???,這種語氣和態度,我也是醉了)

  • 問了個演算法題,兩個字串的交集,我說可以用雜湊表來做,遍歷其中一個字串,做hash_map[ch]++操作,接著遍歷另一個字串,做hash_map[ch]--操作,如果hash_map[ch]-- > 0,說明這個ch屬於交集部分,他一直問我hash_map[ch]--中的“--”是什麼意思,我以為他沒聽懂,再敘述了一遍,又繼續問,那這個“--”到底是什麼意思呢(我:???)

  • 可能比較晚了,工作一天了還要面試,狀態有點不好還是怎麼,反正問了一個問題,回答完了,等個幾十秒不說話,再繼續問下一個

  • 估計這次面試給我的評價比較差,過了十幾天後顯示回絕,官網重新投遞做了筆試,也再沒有其他面試官撈了

狀態

筆試前顯示已回絕,官網重新投遞、完成筆試後,一直簡歷評估中,估計沒有後文了

騰訊

3.27 實習一面

約的視訊面試,面試官很好,給人感覺很舒服,問問題的時候會給一定的解釋,讓人理解清楚題意,適當的時候還會提醒,如果沒答上來或者不完整,會稍加講解

  • 陣列和連結串列的區別

  • 一個陣列int arr20,起始地址為100,求arr11的地址

  • 給定1G的大檔案,記憶體限制是100M,怎麼排序

  • 歸併排序的過程

  • ctrl+z,ctrl+y,用什麼資料結構好

  • 實現pow,最佳的時間複雜度是多少

  • include 包含檔案的時候,尖括號和雙引號有什麼區別,如果雙引號中是庫檔案的話,會發生什麼(答對一半,面試官解答,雙引號是優先在工程檔案makefile標識的資料夾中尋找,找不到再去庫資料夾中找)

  • C++中struct和class當作類使用時的區別

  • C++虛擬函式的實現機制

  • 如果基類的解構函式沒有宣告為虛擬函式,會發生什麼

  • TCP與UDP的區別

  • TCP怎麼確保資料傳輸可靠性

  • STL中map和unordered_map的應用場景區別

  • linux中基本的操作命令,一個日誌檔案很大,vim開啟很費時間,怎麼快速搜尋某個內容

  • 檢視埠號情況

  • 抓包工具,有沒有使用過tcpdump

  • 檢視程式id、記憶體使用情況等

  • 檢視開啟的檔案or描述符

  • 程式間通訊機制

  • linux用的多嗎,平時怎麼除錯

  • 做題:strcpy,需要自己輸入測試用例,char strDest[],與char strSrc[]

  • 做題:excel表格列表頭與數字之間的轉換,strToNum和numToStr,兩個都要實現

  • 有什麼要問我的嗎

  • 確認實習時間等

總結:做題的時候有點小緊張,可能會有敲錯字母等情況,還是得細心一點;用的宿舍的網,斷網了一次,面試官人很好,打電話詢問後轉而使用熱點連線

3.28 實習二面

約的視訊面試,感覺有點像壓力面,我面的時候有一段時間比較緊張、有點慌亂

  • 自我介紹

  • 專案中的亮點

  • 再說說第三個專案

  • 知道寫makefile嗎

  • 瞭解資料庫嗎

  • 知道寫shell指令碼嗎

  • 常用哪些linux命令,檢視執行緒用哪個命令,會用vim嗎

  • epoll的機制,什麼時候用ET

  • 解構函式可以為虛擬函式嗎,建構函式呢

  • 看過STL原始碼嗎,說一說map的實現,紅黑樹的介紹

  • vector的記憶體擴充

  • 說說MTU,跟著擴充套件到網路層分片

  • 程式間通訊方式

  • TCP連線釋放連線的過程及狀態變化

  • 說說滑動視窗

  • 瞭解共享記憶體嗎(說了下虛擬頁面到物理頁幀的對映),後問如果這兩個程式都終止了,共享記憶體還在嗎

  • 洗牌演算法,平時做題嗎

  • 怎麼建立執行緒

  • 有什麼要問我的

總結:視訊面試,網線又斷網了一次,用手機熱點也斷了一次,最後加QQ用視訊面,不知道是電腦出問題還是宿舍網路有問題,老是斷網,好在面試官沒有太介意這個

4.24 實習三面

應該是總監面,面試官人很好,主要問的是開放性非技術問題

  • 自我介紹

  • 不是科班的,怎麼學習

  • 遊戲研發,你會怎麼做

  • 三年的工作規劃

  • 有什麼要問我的

  • 面試官說大家熱情很高,有很多人面試,會做總體評估,一段時間後再給通知

總體而言,各個方面也都儘可能的去答了,不管怎麼樣,還是給了機會的,還是基本上都完成了,已經沒有遺憾抱怨啥的了,暫時就先不管那麼多了,就靜靜地等待結果通知吧

4.29 實習HR面

HR小姐姐聲音很甜,沒有問啥刁鑽的問題為難

  • 自我介紹

  • 瞭解你所面的部門和崗位嗎

  • 你覺得你做這個方向的工作怎麼樣

  • 在其他業務上有相關的學習嗎

  • 主要是實驗室的專案,沒有其他實習經歷嗎

  • 工作地點有什麼想法

  • 還有面其他公司嗎

  • 這些公司都給你offer,會去哪一家,為什麼

  • 有什麼要問我的嗎

總體來說,HR面所問的問題比較常規,沒有刻意刁難,還比較順利,HR說如果通過,會在5月中旬發通知

依圖

4.8 實習一面

面試官很好,覺得我不是非科班,但也沒有怎麼為難

  • 自我介紹

  • 問專案,三個都大概瞭解式的問了

  • 平時除錯用什麼,linux的gdb用過沒

  • 當發現記憶體洩漏或CPU佔用滿了,怎麼辦

  • 主要還是用C++,談一談對C++的認識

  • C++還有什麼好的

  • define和const的區別

  • 可執行檔案的內容分佈

  • 程式碼段存放哪些資料,還細緻的問到了未初始化的、已初始化的區域

  • 程式執行緒區別

  • 同步互斥機制有哪些措施

  • 條件變數應用場景

  • 網路程式設計的函式呼叫套路,客戶端伺服器端(還說了一些連線佇列)

  • 那listen函式的backlog引數是什麼意思

  • 客戶端是是否可以使用bind

  • 阻塞與非阻塞,IO模型

  • 瞭解哪些資料結構

  • stack和vector的區別

  • 演算法題:strcmp

  • 演算法題:二分查詢firstK

  • 有什麼要問我的

總結:假期玩了幾天,收假回來第一場面試,心態上還好,但是感覺面的過程中,說話有點卡頓或者思路沒很快跟上,邏輯有點不清晰,感覺下次還是要理清楚了再說,有條不紊的、細緻的慢慢說,不要著急,語速也不要過快。

狀態

面試表現感覺還可以,不過後續沒啥動靜了,估計覺得不太對口吧

華為

4.16 實習一面

面試官應該是搞技術的,問了很多專案以及一些技術問題

  • 自我介紹,涉及到專案的事情,許多問題都是根據專案展開的

  • 面試官具體問題忘記了,回答是將神經網路模型稍微介紹了一下,其訓練流程程式碼大致框架走了一遍

  • 可能有些影響影響因子並不會影響到部分輸出引數怎麼辦

  • 有沒有對神經網路進行相關的優化

  • Qt當中訊號與槽機制是怎麼實現的

  • 進行的相關操作,槽函式沒有響應會因為什麼

  • 類MVC模式是怎麼實現的講一下

  • 什麼時候需要將解構函式定義成虛擬函式

  • 多執行緒如何實現同步與互斥,針對一個問題具體講一下怎麼用

  • 如果不用鎖怎麼實現,說的自旋鎖忙等待

  • 學過哪些數學課

  • 條件概率知道嗎

  • 怎麼把條件概率應用到模型訓練這個專案中

4.16 實習二面

面試官應該是一個不專門搞技術的主管或者領導,氣場很足

  • 自我介紹

  • 詳細介紹了一下其中一個專案軟體開發的情況

  • 專案中有什麼創新點

  • 這個專案主要解決什麼問題,多少人一起做,負責哪個部分

  • 接著一起聊這個專案的詳情,提出其中一些問題討論

  • 面試官提出了一個缺點,說那怎麼檢測出來生成的最優路徑是不是正確的呢,無法驗證等

  • 有什麼要問我的

總結:

  • 華為的面試也沒有傳說中的玄學與水啊,兩輪面試都超過三十分鐘,近四十分鐘,既問了專案,也問了技術問題
狀態

錄用排序中

百度

4.21 實習一面

一面面試官很好很隨和,問的很基礎

  • 看你不是科班的學生,自己學過哪些知識看過哪些書

  • 說說雜湊表的實現方式以及怎麼解決雜湊衝突

  • 說一說多型機制怎麼實現的

  • 純虛擬函式

  • 模板瞭解多少

  • 模板偏特化了解嗎

  • C++11瞭解多少

  • 左值右值的區別

  • std::enable_if瞭解嗎

  • 呼叫fork,發生了些什麼事情

  • 協程瞭解嗎

  • 32位機器,一個程式可以用的記憶體有多少

  • epoll相對於select的優點是什麼

  • 執行緒同步與互斥實現機制有哪些

  • 二分查詢複雜度是多少,實現一下最基本的二分查詢,更改一下題目,做一下變種題(12345 變為 45123)

  • shell指令碼瞭解嗎

  • 資料庫瞭解嗎

一面比較偏重基礎,把基本上各大知識塊重要的點都過了一下,像是摸清楚學生大概掌握的知識面的廣度

4.21 實習二面

中午吃了飯之後,HR就打電話說讓上線,面試官在等了(可一面面試官說的是讓我1點上線開始等),上線後二面面試官後續才達到,沒有說等的事情

可能是中午剛吃了飯,沒有午休,繼續工作有點睏乏,大家狀態都有點不佳,面試官問問題,我回答問題也沒有之前那麼有激情了,有幾道題回答的時候,感覺面試官都捂著頭不想聽了。。。而且自己說的也很亂,語速、邏輯有點不清

另外,感覺二面面試官問的問題,有好幾個我都沒理清楚什麼意思。。。以至於答了半天,打斷了重新說了一下,讓我從另外的角度答

  • 自我介紹

  • 斐波那契序列知道嗎,實現一下

  • 多執行緒之下,訪問一個全域性變數可能會有什麼問題

  • 有什麼機制可以確保不會出這個問題

  • 互斥鎖會有一些效能開銷,不想用怎麼辦

  • 那你知道自旋鎖是怎麼實現的嗎

  • 除了這個(回答的,專用機器指令compare_and_swap),還有其他方法嗎,原子操作了解嗎

  • 什麼時候會發生死鎖(面試官接著上一個問題問的,我以為從使用鎖的機制去講,結果把生產者消費者模型講了,結果他說,不是指這個,而是指什麼時候會發生,死鎖的條件)

  • 在程式碼實現上怎麼解決死鎖呢

  • 有些執行緒處於死鎖狀態了,怎麼在另一個執行緒中檢測出來

  • 執行緒棧通常是多少

  • 那一個執行緒可以訪問另一個執行緒的執行緒棧嗎,會發生什麼

  • 連結串列瞭解嗎,跳錶呢

  • 程式虛擬地址空間劃分,分別儲存什麼

  • static修飾全域性變數和區域性變數的效果

  • 最大連續子陣列和

總體上感覺,大部分還是答出來了,但是感覺沒講清楚,語速、邏輯有點亂,有點急躁、狀態不佳。。。

4.21 實習三面

面試官是代表公司的,通用能力考查,人很好,有問題沒答出來,也做了相關的解釋

  • 問專案,每個專案都稍微細緻的說介紹了一下情況,在其中的職責,做了哪些事

  • 講一講你做的專案中的一個難點

  • 記憶體4G,malloc申請4.1G會發生什麼

  • 記憶體4G,已經有其他程式申請了2.5G了,此時malloc申請4G,會發生什麼

  • 有什麼要問我的

總結:三面是通用能力考察,後來也解釋道,問的問題沒有標準答案,具體實現不同,答案不同,想看看學生們的知識廣度和深度,能夠根據提問發散思維想到多少東西

狀態

4.30收到offer call

最後

最後來個offer求比較,目前比較滿意的是

  • 位元組跳動,後臺開發,base深圳,部門主端PC端,業務應該是頭條號方面,需要轉Go語言

  • 百度,C++軟開,base北京,部門忘記問了,聽群裡小夥伴說那天打oc的應該是智慧雲或鳳巢

  • 騰訊,後臺開發,base深圳,部門IEG天美,業務應該是遊戲伺服器研發方面

可以從轉正率、秋招加成等方面分析,想聽聽大家的意見或建議,謝謝大家啦!


相關文章