春招戰線拉到比較長,從二月底開始整理專案、製作簡歷,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 實習一面
約的視訊面試,面試官很好,給人感覺很舒服,問問題的時候會給一定的解釋,讓人理解清楚題意,適當的時候還會提醒,如果沒答上來或者不完整,會稍加講解
陣列和連結串列的區別
給定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天美,業務應該是遊戲伺服器研發方面
可以從轉正率、秋招加成等方面分析,想聽聽大家的意見或建議,謝謝大家啦!