用什麼語言最容易通過白板面試?面試時間越久就越容易過嗎?

用什麼語言最容易通過白板面試?面試時間越久就越容易過嗎?

來自專欄太閣講堂

本文摘自美國面試訓練平台interviewing.io的一篇博客文章,原文你可以在本文底部看到。

無論你的處境如何,準備面試的第一步都是要了解面試。而了解面試的方式,可以是在網上找面經(尤其是公司主動發布的面經)、也可以是通過身邊的朋友(其身份可以是應聘者,也可以是面試官)進行了解。但是,這兩種傳統的面試準備方式,往往也存在著一些問題:

企業所發布的面試指南,大多只是站在某一家公司的角度去寫的。比如A公司可能把效率放在第一位,而B公司則可能更注重應聘者解決問題的能力。除非你有確定的目標,否則最好不要每次都跟著同一份指南走。

同時,人是會說謊的。比如,有的公司會聲稱其對面試者使用的語言是沒有要求的。或者他們會告訴你,就算答題時做不出正確答案、能合理解釋解題過程也是可以的。但實際上,這些公司在面試時是否真的遵循了這套說法是不得而知的。當然,這些企業不見得是在刻意誤導應聘者。但很可能的是,面試官心裡是存在偏好的,而他們自己可能對此毫無察覺。

四處打聽而來的「坊間傳聞」可能並不是以事實為基礎的。大多數人會認為,面試時間短就意味著結果會不好,而面得久則會給人一種「我和面試官這麼聊得來,一定會過」的想法,這類帶有主觀色彩的面經往往也是不可靠的。

實驗背景

我們平台(註:指interviewing.io,而非BitTiger)上的面試流程是這樣的:面試官和應聘者在平台上配對成功以後,會進入一個加密的空間。雙方可以通過語音和文字進行交流,同時平台會提供一個可以手寫的電子白板。一切準備就緒以後,雙方會即刻進入面試問答的環節。如果你應聘的是後端軟體工程師的職位,那麼你往往會碰到後端相關的一些問題。無論是練習型面試還是實際面試,我們都會收集過程中的所有數據,包括語音的文字稿、應聘者書寫的代碼、面試官評分、應聘者自評、雙方互評等。

實驗結果

在展示結果之前,我首先要強調一下,以下的結論都是基於觀測數據得出的,因此並不能作為強有力的論斷。即便如此,大家還是可以通過我們在實驗中找到的各種聯繫得出自己的結論。

我們選取了將近3000次面試的數據為樣本,將面試結果與面試者是否曾見過面試題目進行了關聯,結果如下表所示。

不出所料,曾見過面試題目的應聘者被錄取的可能性要比其他人高出16.6%。這個差異在統計意義上是顯著的(p < 0.001)。

那我們再來看:編程所使用的語言對面試會有影響嗎?

不難想像,使用不同的語言應該是可以提升面試成績的。比如Python的可讀性或許能讓你在面試中佔到上風、某些語言清晰的數據結構能讓你更輕鬆地回答常見的面試問題等。

為了檢驗不同面試語言對面試表現的影響,我們根據面試語言對平台上的面試數據進行了分組,然後篩除了那些使用次數少於5次的語言。在簡單的處理之後,我們得到了結果。

數據分析的結果如下表所示。任何沒有發生重疊的置信區間都構成了統計學上的顯著性差異,也即體現了使用不同語言對面試通過可能性的影響。由下表可見,大體而言,在面試中使用不同語言是不會在面試的成功率形上成顯著性差異的。

大家在面試中常犯的一個錯誤,是強行使用自己不熟悉、不慣用的語言,最終導致連獲取數組長度、數組迭代、初始化哈希表這類基礎操作都會出問題。你的初衷可能是想用某種高大上的語言突出自己,好給面試官留個深刻的印象,但最終往往卻會弄巧成拙。相信我,與其炫耀自己沒有把握的東西,還不如老老實實用自己的習慣用語答題效果來得好。

好,現在我們知道語言的選擇對面試是沒有影響的了。但如果是用企業偏好的語言答題,是否仍會給你帶來優勢呢?

一般來說,大家的設想是這樣的:用Python做開發的項目肯定會偏愛那些用Python的程序員,因而面試時用其他語言會減少錄取機會。但其實反過來想,如果一家企業所有的代碼都是用Python寫的,那麼其對面試者Python掌握程度的要求必然也會更高,畢竟人家對這門語言早已輕車熟路了嘛。

下面的這張柱形圖和上一張類似,也是顯示了使用C++、Java及Python這三種不同語言對面試成功率的影響。但不同的是,下面這張表還針對企業是否使用該語言進行了細分。之所以只對C++、Java及Python這三種進行分析,是因為在我們的資料庫中,明確使用它們的公司和不使用它們的公司相對而言在數量上是比較均衡的。最終的分析結果是存在差異的。就Python或C++而言,企業是否使用該語言是不會給面試成功率帶來顯著性差異的;而Java則恰恰相反,在一家慣用Java的企業用Java面試,成功率會更高。

現在我們來試著理解一下,為什麼Java的分析結果會和其他兩門語言不同?一個可能的解釋是,使用某些特定語言(包括Java)的群體會更偏好能熟練使用該語言的人,且願意為這類人的語言能力支付更高的溢價。又或者是因為,慣用Java企業的面試官所選擇的面試題,會對Java慣用人群更有利。

那麼,你所使用的語言是否會影響別人對你溝通能力的認定呢?

儘管總的來看語言的選擇對面試整體結果並沒有多少影響(上面說的Java慣用企業除外),但使用不同語言是否會對面試的其他維度產生影響呢?比如說,如果應聘者使用了Python這種可讀性很強的語言,會不會讓面試官認為其溝通能力更強呢?如果用了C++等初級語言,應聘者又是否會在技術水平方面得到更高的評價?下面的這張表給了我們答案——使用不同語言其實並不會影響面試官對應聘者技術水平及溝通能力的認知。

此外我們還發現,無論使用何種語言,低技術水平評分是和低溝通能力評分高度關聯的。這兩者只要有一個評分較低,另一個的分數就不會高到哪兒去。這樣的結論有效證偽了傳說中那些不善言辭、笨嘴拙舌的「頂尖工程師」的存在。

下面我們再來看,面試時長對面試結果又會有怎樣的影響。

每個人可能都曾有過在某次面試後心灰意冷、覺得自己必掛無疑的體驗。你心裡可能想的是:「這面試怎麼這麼快就結束了?看來事情不妙……」,或是「我代碼都沒寫上幾行啊,鐵定掛了!」針對以上這兩種常見的「看衰」心理,我們將通過數據分析來證實其是否成立。

我們首先對面試時長進行了研究。面試時間短就一定意味著面試官不喜歡你嗎?就常理而言,時間短也完全可能是因為面試官沒有足夠的時間,或是其在短短几分鐘內就完全認可了你的能力。讓我們再看具體的數據——下面的圖表呈現出了面試通過及不通過群體各自的面試時長。事實證明,面試時長與最終錄取結果並沒有明顯的關係。通過面試的用戶平均面試用時51分鐘,而遭拒的用戶則平均用時49.95分鐘。這個差異在統計學上是不具有顯著性的。

那麼代碼書寫量呢?寫得多、寫得少,是否會對面試結果產生影響?

你是否曾有過這樣的面試經歷:面試官的問題問完了,然而你卻幾乎一點都沒聽懂,甚至忍不住發出了直擊靈魂深處的拷問:「啥?」最終你代碼也沒寫上幾句就結束了面試。這個時候,你是否還保有那麼一點點的僥倖,希望面試官能夠為你的智慧與魅力所打動,並最終決定錄取你?為了證實這一點,我們對應聘者代碼的書寫長度進行了數據分析。從下面的圖表中我們可以看出,遭拒的應聘者寫出的代碼確實要更短一些。這個結論的解釋有二:首先,水平較差的應聘者確實寫不出多少東西來;其次,這些人可能在第一遍書寫過後發現並未得到理想的結果,於是大量刪掉了自己書寫的內容。

具體而言,通過面試的應聘者平均書寫長度達2045詞,而遭拒者平均書寫長度則僅有1760詞。這在統計學上已經是頗為顯著的差異了。

我們再來看代碼模塊化程度的相關數據。

如下圖所示,綠色和紅色的柱形分別代表了面試通過及遭拒人群在答題時,所書寫Python函數的數量分布情況。從數據上看來,通過面試的人往往定義了更多的函數。

具體地,順利通過面試的人平均定義了3.29個Python函數;而對未通過面試的用戶而言,則平均定義了2.71個函數。該差異在統計學上具有顯著性。此外還有值得注意的一點是,如果你遵照面試官要求的代碼進行了書寫,成功率是會更高的。

那麼,代碼能否真正運行,對面試結果又有何影響呢?

有一句面試官常掛在嘴邊的話是:代碼能不能運行起來都無所謂的,我們看重的是你的問題解決能力。事實是否真的如此呢?為了解答這個疑問,我們進行了以下分析。

我們對數據範圍進行了限制,專門篩選出了了面試時間長於10分鐘、且執行了5段以上代碼的面試數據。這樣做是為了排除那些並未要求應聘者書寫代碼、或刻意縮短了面試時間的面試。篩選完成後,我們算出了執行出錯的代碼比例。

下圖中,x軸代表某個給定面試中執行無誤代碼的比例。也就是說,如果你在面試中執行了3組代碼,其中1組出錯,這次面試的x值就會落在「60%-70%」這一欄中。y軸則代表了對應正確率的面試在所有面試中的數量佔比。總體看來,通過面試者的執行正確率似乎要更高一些。

我們再來看具體的數據:通過面試的用戶平均代碼執行正確率為64%,而遭拒的用戶則只有60%。4%的差異看似不大,但在統計學上也是顯著的。

我們再來問最後一個問題:書寫代碼前,要不要先停一下,整理整理思路呢?

通過面試的那些人,是否會比其他人花上更長的時間呢?答案是肯定的。下面的直方圖中,我們用數據展示了錄取及遭拒人群在初次執行代碼前所耗用的時間。結論很明顯——通過面試的人在書寫代碼時確實會花更長的時間去思考。

那麼具體的數據呢?錄取者在執行第一組代碼前平均所耗時長佔到了面試總時長的27%,而遭拒者的數據則為23.9%,兩者的差異同樣在統計意義上是顯著的。當然,這個結論也可以由其他的解釋。比如通過面試的那些人可能更善於通過對話取悅面試官等等。

結論

總結而言,這篇推文是我們對面試結果影響因素進行研究的初次嘗試。由於使用的都是觀測數據,我們得出的結論也絕不是一定正確的。即便你在面試中呈現出了所有這些錄取者的特徵,也並不能保證就一定會通過面試。不過呢,這些結論確實能作為一定的依據,讓我們在網上讀面試指南時,心裡對其準確性有一定的判斷。

本文原文:

blog.interviewing.io/wh

歡迎加入太閣講堂

  • 2018產品經理學習交流QQ群:793831832
  • 互聯網技術求職交流QQ群:792254768
  • 數據分析與科學交流QQ群:740319838

推薦閱讀:

超實用的——BAT面試技巧
你真的懂這些面試問題背後的意圖嗎?
面試掌握這6個小技巧,讓你10分鐘通過面試
面試秘技之「膽大心細臉皮厚」
「面試達人」面試官問」你為什麼能勝任這份工作?」錄用就這題!

TAG:面試 | 軟體工程師 | 面試技巧 |