小齊說:
這篇文章來自讀者冰紅茶,他剛結束了秋招,拿了很多家 offer。
和他聊完之後,我覺得他的備考思路也完全適用於美國的面試,只是分值要調整一下,但是具體每一塊的內容,地球村通用。所以分享給大家一起學習一下~
長達一年的實習、秋招之路終於落下了尾聲,我最終收穫了快手、百度、網易等網際網路大廠的開發崗offer。
大學我學的專業是通訊工程,也算是半個非科班出身,一路走就像是打怪升級的過程,不斷地糾錯嘗試,一點經驗分享給準備參加秋招的你。
大學時候每次期末考試我們都會等老師劃重點,目的就是想確認考試的範圍和形式以及各部分出題的分值,做到心裡有數、合理分配時間。
我認為其實秋招面試的本質和平時期末考試是一回事。秋招考什麼(考試範圍)、秋招有哪些題型(考試形式)、以及各部分出題分值(考試各部分比重)?
我自己常常把秋招面試考察範圍劃分為三個部分,演算法題、基礎知識題、過硬的專案或實習經歷。
一、演算法(40分)
分值說明:
以我熟悉的開發崗位來說,對於大廠面試,我覺得演算法題佔了40分。
這個分數很微妙,你會發現再需要20分就可以及格了,能勉強通過這次考試。但是如果40分完全丟掉那麼靠其他方面力挽狂瀾就會非常吃力。
特別是對於位元組跳動這種業界內對演算法題出了名重視的公司,撕出演算法題是對話的基礎。
我個人也認為考察演算法題,是一個相對比較公平的考察形式。沒有撕出演算法題不代表你沒有能力,但是能撕出演算法題起碼能證明你要麼是天賦型選手,要麼是努力型選手(刷了夠多的題,做了準備),面試官篩選人的目的已經達到了。
考察形式:
如果是線下面試,會直接給你一張白紙,寫虛擬碼或者是全部。
今年因為疫情影響很多面試搬到了線上,我覺得以後線上面試會變得越來越常見。國內很多大廠用的都是牛客網作為平臺,整個螢幕分為兩塊,一塊是程式碼考察區,一塊是和麵試官視訊交流區。面試官給出題目後,你寫程式碼的過程會實時在面試官螢幕前同步,這個就要求你想清楚了再動手。
一般來說整個考察過程是這樣的,從面試官給出題目起。
首先,看了題目之後你先不要著急動手,進行短暫思考後。務必要和麵試官進行交流,得到面試官的同意後再動手寫程式碼。
常見的交流內容就是你解題思路的時間複雜度、空間複雜度,得到面試官首肯之後就可以進行程式碼書寫。最後一步,程式碼寫完後可能會讓你跑測試用例看看是否通過,或者跟面試官解釋你是如何組織程式碼的。
演算法題的考察,除了考察你的寫題能力外,更多的也是展示你的溝通表達能力,一個題目往往只是提供了一個大概。你應當去提問,某些極端邊界條件下題目的輸出會是什麼?或者根據面試官的提示,去改進自己解題思路的時間、空間複雜度。
這部分我參考了齊姐之前的幾篇文章,對我幫助非常大:
點選這裡?:從 LRU Cache 帶你看面試的本質
點選這裡?:有關 HashMap 面試會問的一切
點選這裡?:這才是面試官想聽的:詳解「遞迴」正確的開啟方式
如何準備:
我個人感覺,對於秋招來說,演算法題一般在力扣刷200道左右的簡單、中等題目就足夠了。
刷題的順序我覺得可以先從《劍指offer》入手,上面大概有六十道左右的經典演算法題,而且教材的作者也從面試官角度指出了我們可能會犯的錯誤和一些溝通的思路,一道演算法題就是一個案例。如果從來沒有接觸過演算法題的同學,這裡可能會花兩個月左右的時間。
如果你能把這本書刷完,接下來我建議是去刷高頻考點題目。
如何能獲知什麼是高頻考點題目呢?
- 一類是力扣網站本身就給你總結的很好,比如騰訊專題、位元組專題,這些你面試遇到的可能性非常的大,很可能是原題或者變種。
- 再者就是牛客網上的各個公司演算法題面經,總結帖非常的多,可以幫助我們快速鎖定重點題目。
另外要多注意覆盤和總結。一道題往往有多種解題思路,一種思路往往可以解多道題目。很多題目的解題思路是大同小異的,只要堅持練習,最後絕大多數題目你都能做到快速反應。練習和覆盤是一體兩面的,相輔相成的,你既要知曉各種各樣的解題思路,也要增強動手能力。這是我力扣覆盤時候對題目的一些分類收藏。
一開始有些同學覺得會很難,各種題目想不出來,我建議是直接看答案。只有你瞭解了足夠多的解題思路之後才能有所輸出,就像我們做乘除之前,先要學點加減法一樣。
二、基礎知識題(30分)
分值說明:
具體基礎知識要求,每個崗位的側重點會有所偏差,以開發為例,常見的考察內容有:Linux、Mysql、Redis、計算機網路、作業系統、語言本身特性等。由於這部分問的問題因面試官而異,所以自己還是要多準備,儘可能的去覆蓋。這部分往往回旋的餘地比較大,只要你能把面試官的問題答個七八成,再加上演算法題撕出來基本上就能通過本輪面試。
考察形式:
你學過計算機網路,但是並不是所有問題都會問到,自己私下鑽研怎麼深入都不過分。但是對於秋招來說,你需要的是抓住核心考點。所有的考點前人都已經用血淚教訓給你總結好了,牛客網上的面經專欄有大把的內容。你只需要關注其中高頻的,有擴充套件性的考點就行。
面試時候,面試官往往丟擲的問題有兩種。
一種相對比較死板,比如講一講快速排序的原理,只要你對各個細節掌握的夠清楚,能跟面試官講明白,這題就算過了。
另一種,是一些擴充套件類題目,比如很經典的從輸入一個URL到出現頁面這個過程發生了什麼?
這個問題根本沒有所謂的準確答案,只有相對符合面試官胃口的答案。比如我一般就是,先從巨集觀上講整個過程發生了什麼,細節一筆帶過。然後再跟面試官交流,我覺得哪塊比較重要,可以展開聊一聊,或者您覺得哪塊比較重要,我可以跟您展開說一說。面試是交流的過程,你要注意面試官的反應,看看是否要繼續還是點到為止。不要自己像背作文一樣,只顧背誦。一言以蔽之就是你要足夠清晰的思路向面試官證明你確實懂這個東西,但講多少,講到什麼程度要跟面試官交流。
如何準備:
針對不同的基礎問題,可以上網搜不同型別的回答,然後自己總結一套答題的模板。這個不是讓你跟面試官照本宣科,而是作為你面試答題的基本依據。我們面試時候其實都或多或少有點緊張是正常的,你心裡有個大綱,闡述起來時候清晰很多。
有幾個常見的面試技巧,一個是如果題目你一點都不懂,千萬別和麵試官含含糊糊。這會讓面試官以為你懂一點,但是講不清楚或者不懂裝懂,這很減分。你可以大方的說,不好意思,這一塊我並不太瞭解。面試官一般來說就會換個話題,他沒有必要跟你談論一些你不懂的問題。面試官目的就是考察你知識的廣度和深度。
另外就是,很多同學常見誤區是以為,簡歷上寫的東西越多越好,這其實是個誤區。面試官面試你之前基本上就是花幾分鐘看你的簡歷,提問的基本上就是簡歷上的內容,如果你寫了很多精通某某,一問三不知就很減分了。
要學會引導面試官去問你很有把握、很熟悉的內容。
面試時間是有限的,面試官不可能所有的知識點都問一遍。所以有限的時間裡面,談論你會的,基本上就能給面試官留下很好的印象。比如我個人就對Mysql這塊瞭解的很多。所以每次自我介紹的時候,我都會故意說,我個人對Mysql、計算機網路方面瞭解的相對比較多一些,主動給面試官一些引導。
或者在聊別的話題時候,適當時候你也可以跟面試官說哪塊我用的比較多,自然而然的讓面試官跟著你的思路走。
三、過硬的專案或者實習經歷
分值說明:
我是強烈建議大家秋招之前去找一份與崗位相關的實習,如果能拿到大廠實習,秋招時候就是如虎添翼。雖然對於校招生來說,在面試官眼裡都是白紙一張,但是如果你具備一些實踐經驗,絕對是加分項,團隊培養你和融合成本就低很多。
考察形式:
基本上很多面試官都會主動的問你的專案或者實習經歷,無非是問這些問題:實習時候你做了什麼?用了什麼技術?解決了什麼樣的問題?你覺得你解決的最難的問題是什麼?面試官問這些問題的目的就是發掘你的知識深度怎麼樣,比如最難的問題,你遇到的到底是什麼樣的問題?可以看出你知識接觸的深度。你是怎麼解決的?考察你解決問題的思路手段。
如何準備:
在面對實習經歷和專案的考察時候。我建議是自己要想明白自己專案中的亮點是什麼?
自己先做一個提煉,比如說我覺得我專案中兩點一是引入了快取降低響應時間,二是做了高併發的處理…最好這些亮點是和你的基礎知識緊密結合的,而且要想清楚你為什麼要這麼做。比如你說引入了快取降低響應耗時,那面試官就可以問Redis的相關基礎知識,或者問你為什麼要引入換成在這個專案裡,用別的手段可以嗎?引入快取會有什麼危害呢?如何解決帶來的負面效應呢?這些東西都是我們日常實踐時候也應該思考的東西。就是工具你不僅知道怎麼用,還要知道為什麼這麼用?知其然,也只所以然。
有些同學會說,確實沒有過硬的專案經歷或者實習經歷怎麼辦。我建議是去Github上找點跟崗位相關專案做一做,改一改,看看能不能提煉出一點什麼。其次,最後還是沒有的話,可以跟面試官如實的說,其實一般來說面試官也不是要求非得有實習專案經歷。但是你的基礎知識就要準備紮實,因為面試官能跟你聊的就只有這些了。
以上內容只是從面試知識考察層面做了一些介紹。除此之外我們還需要做的是,有良好的心態,準備好從剛開始面試時候的忐忑不安到後來的遊刃有餘,給自己犯錯成長的機會。
其實準備面試無論校招還是社招思路都大同小異,分值略微不同,多在群裡和大家交流、利用各種資源去學習,拿幾個 offer 還是沒問題的~
好了,以上就是本文的所有內容了,如果你也有想和大家分享的經歷和經驗,歡迎到後臺來找我,有稿費的那種~
我是小齊,紐約程式媛,我們下期見!