在技術面試中避免11個錯誤

在技術面試中避免11個錯誤

錯誤1.傲慢

我問一個關於候選人解決方案的問題,候選人說:“啊,我看到你不明白我在這裡做了什麼(解釋)。是否清除了你的困惑?”

你的面試官希望你展示你的思維方式。他們不太可能會感到困惑,因為他們採訪了很多人,對這個問題非常熟悉,並且看到了很多可能的答案。即使他們真的不理解你的代碼,也會發生這種情況,向他們解釋你的結果而不會讓他們感到不快,這會很客氣。

重要的是:當你被僱用時,你將不得不與你的團隊成員溝通。面試官希望確保他們的團隊成員能夠很好地溝通,無論是經驗豐富的人。

錯誤2.在沒有知識的情況下使用流行語

一個特里。NoSQL數據庫。負載平衡器。一張圖。一個集群。如果你打算使用它們,你必須解釋原因。如果有人不知道散列是什麼,很容易理解。

“我在這裡放置一個負載均衡器”,說這個候選人在他的數據庫集群旁邊畫了一個矩形。“它將每小時運行一次,並將查詢所有數據庫機器,處理數據並記錄結果。”

嗯。這不是負載均衡器的功能。我想也許這是一個漏洞,並且提出了更多的問題。不,他們只是一直稱它為負載均衡器。好吧。

“我正在使用一個trie”,另一位候選人說。當我要求更多地告訴我時,他們無法展示它的一個小例子。

同時,不要了解任何事情的細節。說實話吧。重點不是假裝知道你不知道的東西。

重要的是:如果一家公司僱傭了一個在訪談中“流行”但卻沒有真正知識的人,他們會對工作成果感到失望。這就是為什麼他們在招聘之前會面試候選人 - 以估計他們的知識。

錯誤3.沒有理由

“我將在這裡使用NoSQL數據庫。”

“我的集群中需要50臺服務器。”

“我每天運行一次,檢索92條記錄。”

太好了,告訴我為什麼。我相信你有一些理由,利弊,我很樂意聽到他們。為什麼不是SQL?哪個確切的NoSQL數據庫?在這個總稱下有很多數據庫,你真的想縮小你的答案的範圍。圖形數據庫和麵向文檔的數據庫適用於非常不同的目的。

為什麼只有50臺服務器,而不是70臺?為什麼每一天,而不是每一個小時?你從哪裡得到這個92號碼?

重要的是:面試官希望能夠理解他們未來同事的決定。對你選擇理由的解釋將顯示你根據邏輯,需求和數據做出決定的能力,而不是一時興起。這裡是我的關於為什麼推理很重要的文章。

錯誤4.不要求澄清問題

你的面試問題很可能不會100%完成。它是故意完成的:模擬真實世界的環境,你不可能完整描述任務。您需要提出問題,所以請離開!

大聲地談論你的假設。有時你會承擔一些事情,但面試官有一個不同的想法。如果你不談論它,你的結果和他們的期望之間就會出現不匹配。

你也可能有時想問一下:我正朝著正確的方向前進嗎?你想讓我專注於這個還是那個?面試官會非常感激他們不需要打斷你討論他們需要什麼。

為什麼很重要:要求很清楚並且100%完成非常罕見。預計開發人員能夠在實施前澄清他們。

錯誤5.忘記需求

我在開始時告訴候選人:“我們需要儘可能接近實時”。我在整個採訪過程中重複這個。候選人每小時分批處理數據。

在另一個案例中,候選人詢問將會有多少物品。我告訴他們很多 - 比如20M。該候選人設計了一個適合數千用戶的系統。

我們需要多語言支持,但候選人的代碼只支持26個ASCII字母。

候選人需要注意。列出的要求很重要,應予以考慮。如果你不知道如何處理它,你可以建議:“我記得還有其他的語言,現在我只有英語的想法,讓我解決這個英語,然後看看怎麼樣我可以處理其他語言“。這表明你沒有忘記,並且還展示了你的優先技能。

當你提出這樣的事情時,有助於將這部分代碼抽象出來。將它放入一個方法或組件中,以後可以輕鬆替換。這裡有一篇文章解釋為什麼以及如何做到這一點。

為什麼重要:如果用戶有要求,他們不會忘記它。如果開發者忘記了它們,它們就不會開心。如果你絕對不能支持它,請明確告訴面試官。然後,您可以進行權衡,就像在實際工作中一樣。

錯誤6.缺少角落案件

“我在5秒鐘內運行一次,並從最後5秒鐘中選擇記錄”,候選人說。就在一分鐘前,我們確定時間戳字段附帶記錄。這意味著剛剛7秒之前的新記錄可以插入。這意味著我們不會處理這個記錄 - 永遠不會。

候選人解決了關於國際象棋的問題,忘記了有角落,在[-1,-1]處訪問“棋盤”陣列。

有三個工作進程,都選擇最後一個未處理的記錄。他們在完成時將這些記錄標記為“完成”。候選人沒有想到將記錄標記為“正在進行”。這意味著一個記錄最多可以處理三次。

嘗試從邏輯上思考:你的解決方案在所有情況下都能工作嗎?您是否驗證用戶輸入?你有無盡的循環?如果你通過0,-1,INT_MAX?您的系統如何從斷開的網絡連接恢復?如果你有一個請求的高峰怎麼辦?

試著在你的腦海中測試它,甚至在那裡寫一些測試。大聲說出你的思考過程。面試官可能會幫助你。

這裡有一篇文章可以幫助你更好地考慮角落案例。

為什麼重要:來自用戶的要求將很少包含任何角落案例。甚至有些基礎案例可能會丟失。開發人員能夠識別它們並確保代碼始終工作,這一點非常重要。

錯誤7.深入細節

一旦我有一個候選人開始選擇一個協議,系統的不同組件將用於相互交談。TCP還是UDP?組件尚未定義。

它有助於詢問面試官他們是否期望你用或多或少的細節描述某些事情。我找到一個很好的方法來首先構建高級概述,然後再詳細介紹有關特定部分的更多細節。

為什麼重要:展示一些東西時,你要確保每個人都遵守。對主要照片的細節過分分心。而且,從實用的角度來看,面試官沒有足夠的時間討論他們想要的所有主題。

錯誤8.未提供足夠的細節

“所以我們在這裡存儲數據,然後選擇需要的記錄”。

好的,我們在什麼數據庫中存儲它們?以什麼模式或格式?哪些記錄被視為“需要”?有數以億計的行,我們如何加快選擇過程?

我已經說過,如果你解釋了太多的細節,這可能是一個問題。但是,對主要部分的光澤也不完美。特別是如果面試官告訴你他們對某個特定部分感興趣,那麼你應該專注於這一部分。

重要的是:採訪者想要對他們的頭腦有一個相當不錯的解決方案,以便能夠正確評估結果。

另外,如果你沒有足夠的想法,很可能你會錯過一些角落甚至是基本案例。以數據庫為例。如果有數十億行,他們可能不適合一臺機器,所以你必須建立別的東西來解決這個問題。

錯誤9.隱含的假設

這個對話框通常是這樣的。

候選人說:“這是太多的數據,我需要一個具有分片的集群,30個節點和3個副本,一個負載平衡器,以及......”

我問:“我們在這裡有多少數據呢?”

候選人暫停並問道:“那麼,我們有多少用戶?”

看到?目前還不清楚數據來自哪裡,有多少用戶和多久,但我們已經有一個擁有90臺機器的集群。昂貴!

問問題。有多少用戶?多少數據?什麼是我們可以容忍的響應時間?

經過一些計算後,通常我們只需要存儲200MB的數據。繁榮!我們立即在該群集上節省了大量資金。

為什麼它很重要:出於同樣的原因,要求很重要。面試官,最終你的用戶會記住一張照片,而你 - 一個非常不同的照片。除非你談論它,否則你最終可能會執行錯誤的事情。

錯誤10.避免這個問題

“情況X會發生什麼?”

“好吧,你知道,如果我要做Z,而如果A或B,那麼C就會失敗......”

“好的,那麼X呢?”

“讓我們看看,如果X ...哦,這讓我想起,當我們有D ......”

很棒,你有很多想法可以分享。試著先回答這個問題,然後繼續其他想法。

為什麼它很重要:面試官問你一個問題的原因。他們希望更好地理解你的知識並熟悉你的思維過程。如果你不回答,他們不能這樣做。當你被僱用時,你的經理和同事也會感激你給他們他們想要的信息。

錯誤11.對面試官不禮貌

候選人一直在看我的男性面試合作伙伴,只和他談話,即使我提出一個問題。當然,這讓我們兩位面試官都非常不舒服。我們如何一起工作?

有傳言說有些候選人完全無視女性面試官。有時他們認為所有女性都只是HR。有時他們對男性和女性都不禮貌。有時他們傲慢地拒絕回答問題。我真的無法想象為什麼,但他們確實如此。

為什麼重要:我想與尊重我的友善和禮貌的人一起工作。其他人也都這樣做。如果一個候選人開始對他們周圍的人發表粗魯的評論,他們顯然不適合 - 對任何球隊來說。


分享到:


相關文章: