金九銀十,又到一年秋招季。這場規(guī)模巨大的校園招聘,承載了近千萬畢業(yè)生的夢想。不過,在這特殊的2020年,這場秋招也變得非比尋常。
本周,我們公司的校園招聘也正式啟動了,我擔任了3天的二面面試官。這是我畢業(yè)8年后,第一次以另外一種身份參與到秋招中。
雖然沒有應聘者的那種壓力感,卻能深深感受到他們身上的緊張、誠摯和渴望,當年自己參與秋招的畫面也歷歷在目,甚是感慨。
這篇文章,我將結(jié)合自己的親身感受,從面試官的角度給出些建議,希望對正在參與秋招的莘莘學子們有所幫助。
—?1?—
很多學生真正體會了一把史無前例的 “云” 課堂、“云” 畢業(yè)。但是,疫情帶來的影響絕不僅僅只是上課形式或者畢業(yè)儀式的改變,緊接著的就業(yè)影響才是這場特殊 “成人禮”?真正的考驗。我問了幾個候選人,都說因為疫情沒法參加實習。放在往年,實習經(jīng)歷是企業(yè)招人時很看重的點。尤其對于程序員這個職業(yè),非常強調(diào)實戰(zhàn)。提前經(jīng)歷過實習以及生產(chǎn)項目歷練的候選人,他們的編程能力以及對技術(shù)的理解更能接近企業(yè)的要求。另外,一段亮眼的實習經(jīng)歷通常也是拿 special offer 的必備條件,但是幾天面試下來,沒有一個候選人能達到這個水平。2、競爭激烈,國內(nèi)外名校畢業(yè)生都在廣撒網(wǎng)參加面試的候選人絕大部分都是一本,而且將近一半是211/985碩士,這一點挺出乎我意料的,畢竟我們公司只能算是二線的互聯(lián)網(wǎng)公司。我問其中一個985碩士背景的候選人,為什么會選擇我們公司?答案很現(xiàn)實:因為整體形勢不太好,只要有點名氣的一二線互聯(lián)網(wǎng)公司他都會海投。另外,還有一個就讀澳洲名校碩士的候選人,因為海外疫情嚴重,也打算回國發(fā)展了。從這兩點來看,今年的就業(yè)形勢確實比較嚴峻。據(jù)統(tǒng)計,參與今年秋招的大軍預計在1千萬左右,人數(shù)達到新高,但是絕大部分互聯(lián)網(wǎng)公司并沒有擴招的趨勢,可見競爭之激烈。在這個最難的畢業(yè)季,要想拿到一個好offer著實不易,務必認清現(xiàn)狀,同時做好充分準備。—?2?—
雖然就業(yè)形勢很嚴峻,但是公司招人的標準只會更高,因為供遠大于求。對于應屆生來說,要考察的內(nèi)容主要包括以下幾個方面:
面試時重點看的還是計算機理論、算法能力以及代碼功底,框架和項目只是錦上添花的考察項。下面,我以一道實際的編程題為例,同時結(jié)合候選人的答題過程,詳細地聊一聊面試官通常是如何判斷應屆生素質(zhì)的?希望讓參與秋招的你有所啟發(fā)。“一個單鏈表,從高位指向低位存儲一個大數(shù),每個節(jié)點表示這個大數(shù)的其中一位(取值范圍從0到9)。題目要求:對這個大數(shù)進行加1,輸入和輸出都是單鏈表,時間復雜度和空間復雜度盡可能低。

對于刷過leetcode的同學來說,這道編程題真心不難,而且解法非常多,我覺得還比較適合應屆生。
但是,就是這樣一道普通的程序題,居然刷掉了將近50%的候選人,并且這批人都是已經(jīng)通過筆試和第1輪技術(shù)面的。題目給出來后,我會跟候選人確認下是否完全理解題目了,然后給1-2分鐘時間讓對方思考下解法。這個環(huán)節(jié)有幾位候選人的表現(xiàn)讓我印象深刻。候選人:這題簡單,遍歷到最后一位加1就行!
面試官:你再想想,還有什么情況沒考慮到?
候選人:哦哦,最后一位如果是9,要處理進位問題,我再想想.....
面試官說完題目后,你不假思索就開始說解法,這種其實是做算法題時的大忌,很容易讓面試官覺得你是一個沒有思考力的人。候選人:我能用數(shù)組表示嗎?這樣進位就好處理了
面試官:那你數(shù)組大小怎么定呢?
候選人:嗯... 我可以先遍歷鏈表,得到鏈表長度
面試官:然后呢?
候選人:那就簡單了,鏈表轉(zhuǎn)成數(shù)組后,先對數(shù)組加1,然后再將數(shù)組轉(zhuǎn)成鏈表返回就行。
大約有1/3的候選人會先想到這種最常規(guī)的解法,也有人用ArrayList或者Stack的,其實底層都是數(shù)組。
很顯然,這種解決并不是最優(yōu)的,空間復雜度太高,然后我會引導他們思考更優(yōu)的解法。面試官:空間復雜度太高了,有更好的解法沒有?
候選人:我再想想....
候選人:能給點提示嗎?
面試官:鏈表是從高位指向低位的,但是進位是從低位到高位的,如何解決這個方向不一致的問題呢?你朝這個角度想想
候選人:哦,我知道了,可以將鏈表反轉(zhuǎn)
部分候選人在聽到提示后,基本能想到 “鏈表反轉(zhuǎn)” 的解法了,當然也有想不出來的,這種我會直接告訴他解法,然后看他在coding階段是否有突出的表現(xiàn)。因為這個題目本身難度不大,鏈表反轉(zhuǎn)基本是應屆生們信手拈來、倒背如流的題目。我這個題只是在此基礎上 “拐了一個彎”?而已,但是確實難倒了一些人。因此,建議應屆生們:刷題有必要,但是一定要懂得靈活變通,不要寄希望于遇到原題。前面提到這個題的解法很多種,比如:可以不反轉(zhuǎn)鏈表,而是用遞歸法;最聰明的解法是記錄最后一個不是9的節(jié)點,然后處理該節(jié)點和最后一個節(jié)點之間的加1就行。
在我面試的候選人當中,大概有50%的人能在沒有提示的情況下給出解法,還有少部分人提示后能想到解法。編碼環(huán)節(jié)是我比較關(guān)注的,候選人在IDE中直接編碼,并將屏幕共享給我,我會全程觀察他們的coding過程。上面這份50行左右的代碼,是一個1面表現(xiàn)還不錯的候選人花了15分鐘寫完的,而且這是我從所有候選人中挑出來的質(zhì)量偏中上的代碼(是不是有點驚訝?)站在面試官的角度評價這份代碼,除了程序的正確性以外,我?guī)缀跽也坏狡渌咙c。下面幾點我覺得是應屆生們同樣需要重視的:變量命名和方法命名體現(xiàn)了你的編碼習慣,一定要注意規(guī)范性,做到見名知意。
將重復性的代碼封裝成子方法,比如上面的鏈表反轉(zhuǎn)。
復雜邏輯拆解成多步,每個步驟封裝成獨立的方法,方便維護和閱讀。
可以適當加些注釋,對特殊邏輯進行解釋。
寫完代碼,一定要寫個UT或者Main方法,測試下各種case,而不是等面試官提示你寫測試用例時才想起來。
Talk is cheap, show me the code. 編碼能力是真正拉開應屆生差距的考察點。因為Coding的過程能充分體現(xiàn)你的基本功和邏輯思維,而這兩點恰恰是面試官判斷候選人是否有潛力的重要依據(jù)。
調(diào)試環(huán)節(jié)也是個很好的面試考察點,能判斷候選人定位問題和解決問題的能力。這3天我面試的候選人,居然沒有一位能一次性寫出正確的代碼,這一點當然跟絕大部分人不寫測試代碼或者測試case覆蓋不全有關(guān)。另外就是,有一部分候選人的調(diào)試過程真的很讓人著急,我說幾個具體case:
第1種,不會先拆分成大的步驟去定位問題,而是單步調(diào)試。比如你用反轉(zhuǎn)鏈表的解法,基本是以下3步:比較好的思路是將這3步的結(jié)果打印出來,看下是否符合預期,這樣1個復雜問題相當于拆解成3個子問題了,然后排除法定位即可。第2種,明顯的錯誤看不出來。比如:遍歷鏈表時,指針沒指向下一個節(jié)點引起了死循環(huán),導致程序結(jié)束不了,有候選人一度懷疑自己的IDE出問題了,還重啟了一把IDE。第3種,改完一個BUG又引入了新的BUG。鏈表節(jié)點全是9的情況是很多候選人沒覆蓋到的,需要再新加一個節(jié)點,有不少人在解決這個問題時又引入了新BUG,但是沒有意識去重跑之前通過的case。總之,調(diào)試過程也是一個很重要的環(huán)節(jié),它是你對錯誤代碼進行補救的機會,首先要調(diào)整好心態(tài),其次是注重方法。關(guān)于調(diào)試,我的建議是:加關(guān)鍵日志進行打印,先定位到出問題的代碼塊或者子方法,然后再仔細審閱代碼或者單步調(diào)試。另外,改完一部分代碼后,一定要重新跑一下之前通過的測試case。—?3?—
希望上面這道編程題的還原過程能讓你有所啟發(fā),下面我再總結(jié)下其他參考建議:1、良好的面試環(huán)境很重要:因為疫情原因,絕大部分秋招都是遠程視頻面試,因此一定要有一個安靜且整潔的面試空間;其次需要確保網(wǎng)絡暢通,不會出現(xiàn)卡頓情況;再次,電腦上有編程環(huán)境,除非你裸寫代碼的能力很強,可以不依賴IDE.2、注重溝通技巧和效率:開場的自我介紹一般是用來暖場的,如何快速說出自己的優(yōu)勢和成績很重要,切忌對照簡歷說太多無用的細節(jié)。另外,問答環(huán)節(jié)聽清楚題目很重要,如果有疑問一定要及時確認,避免答非所問。3、注重細節(jié),而不是差不多:細節(jié)決定成敗,要做到脫穎而出,一定要精益求精。計算機的基礎知識,不建議死記硬背,而是真的吃透了,你的回答代表你的思考過程,而不是記憶過程,最好能說出你自己的理解。4、展示積極和真誠的一面:遇到不會的問題時,不要輕易說放棄,而是積極去思考或者讓面試官給你適當?shù)奶崾尽F浯危瑳]必要偽裝或者夸大自己的成績,而是盡量展示出你真正理解的東西以及你對這個行業(yè)的熱愛,自信和真誠很重要。5、讓面試官給你建議:秋招是一場持久戰(zhàn),面試也看緣分,沒面好不代表你就不行。如果能認識到這一點,在最后的提問環(huán)節(jié),你可以讓面試官針對你的表現(xiàn)給些建議,這是你越面越順的最好方法。
—?4?—
回想8年前自己參與秋招的過程,做夢都是offer。一個鐘意的offer背后,不僅僅是一份工作,也承載了一個你想去奮斗的城市,一個你感興趣的行業(yè),一個你想持續(xù)精進的崗位,一份你想回報家人的薪酬...這是從象牙塔走向社會的里程碑,希望這篇文章對你有所幫助。積極準備,同時多做復盤。本公眾號全部博文已整理成一個目錄,請在公眾號里回復「m」獲取!
3T技術(shù)資源大放送!包括但不限于:Java、C/C++,Linux,Python,大數(shù)據(jù),人工智能等等。在公眾號內(nèi)回復「1024」,即可免費獲取!!