聞數起舞 · 程式 ·

如何不再擔心技術面試

了解UMPIRE技術

了解UMPIRE技術介紹如果您

介紹

如果您是一位新興的開發人員或具有多年行業經驗的經驗豐富的開發人員,那麼您可能已經聽說過或親身經歷過多麼令人不安的技術面試。

雖然最初對我來說是對的,但我還是做了一些事情來應對這些高壓情況。

這篇文章和後續文章不應該爭論當前的面試方式是否是對開發人員的正確方式。 我將其視為真理,並解釋了一些有關如何進行面試「遊戲」的重要概念。

在這篇文章中,我想對我在訪談中使用的問題解決框架有所了解。 解決算法問題時,最好始終具有某種形式的結構。

在面試中可能遇到的最糟糕的事情是,在遇到問題後立即開始編寫代碼。

因此,如果您不應該編碼,那麼您應該做什麼? 這就是UMPIRE發揮作用的地方。

UMPIRE

UMPIRE是一個解決問題的框架,去年夏天,我從CodePath技術面試課程中學到了這一點。

UMPIRE的目的是將算法問題分解為非常具體的部分,以幫助您更好地理解和解決問題。

  • U —Understand 了解問題。
  • M-Match 匹配問題。
  • P-Plan 規劃解決方案。
  • I-Implement 實施您的解決方案。
  • R —Review 查看您的解決方案。
  • E —Evaluate 評估您的解決方案。

了解問題

UMPIRE方法的第一步。 有人問你一個問題。 您需要真正了解面試官對您的要求。

面試中常見的陷阱是解決錯誤的問題。 此步驟用於消除可能造成的任何混亂,可以對問題/邊緣情況做出的假設,最重要的是,可以製作自己的例子。

在這些算法問題中,您想要創建自己的例子,不僅鞏固您對問題的理解,還可以看到您如何解決問題(作為人類)。

通過創建自己的示例並解決它們,您應該能夠注意到手動解決它們時,大腦自動給出的一些模式。

在這裡,您需要注意並逆向工程如何以人工方式解決它,以便可以用代碼編寫它。

匹配問題

在創建自己的示例之後,您應該對如何手工解決問題有更多的了解。

此步驟用於考慮我可以使用哪些數據結構/算法/技術來解決此問題? 輸入數組是否已排序? 我們如何利用二進位搜索來幫助我們? 鍊表問題? 我們可以在這裡使用慢速/快速指針技術嗎?

這些是您應該大聲思考的問題。 能夠對兩種不同方法之間的權衡做出評論,可以為您的面試官提供一個很好的信號,並且,如果您在談論有利的方法,面試官可能會發出信號,表明您走上了正確的道路。


規劃解決方案

因此,您對要使用哪種數據結構有一個紮實的想法,並且只是手動解決了一些自己的示例。

使用最後兩個步驟中的先前信息,您將要開始用純英語或偽代碼寫出您的方法。

就個人而言,我接受了面試,在面試中我有兩種方法可以解決這個問題。 如果您遇到這種情況,則需要表達自己的思維過程,以了解每種解決方案要進行哪些權衡。

通過發聲,您可以向面試官傳達您是一個有思想的碼農,並且您可以就他們想要的解決方案類型進行討論/合作。 同樣,這是您要提供的信號類型。

在編寫算法工作流程時,我通常會利用輔助方法。

例如,如果我想填充一個頻率計數器,我通常會在我的代碼的主要流程中編寫populateMap(arr,map)並在main方法之外注意此helper方法,同時讓面試官知道該方法是做什麼的。

面試官不在乎看著您編寫有關如何實現頻率計數器的偽代碼,而在乎您如何使用它來解決主要問題。 不要沉迷於無聊的細節。

在編寫方法時,應始終使用具有洞察力的變量名和方法名。 具有不可讀/不相關的變量名最有可能與不良信號相關聯,如果您在後續步驟中必須通過代碼進行調試,則可能更難以理解。

在完成算法流程並感到自信之後,我將繼續問面試官以下問題:「如果我現在編寫此解決方案可以嗎?」


實施您的解決方案

在花費了大部分時間計劃方法之後,實施該解決方案應該相對簡單。

通常,當我進入此步驟時,我想直接在上一步的相應英文注釋下編寫代碼。

我認為,保持思想井井有條將有助於您保持專注。 在編寫代碼時,我想大聲重申自己編寫的代碼,以便面試官可以輕鬆地進行後續工作。


查看您的解決方案

在將代碼編寫到您的解決方案中之後,這裡就是我從第一步開始創建的示例的地方,並逐行跟蹤代碼。

這將再次向面試官發出積極的信號,表明該方法是正確的,並證明您具有很強的追蹤能力。

另外,這可能是您在代碼中捕獲一個小的語法錯誤並允許根據需要進行任何小的修補的時候。 我通常會在方法上方用相應的變量寫注釋,並在程序中逐行進行注釋。

無需試圖記住所有這些,從而使自己承受更大的壓力。


評估您的解決方案

此步驟主要是關於對您的big-O複雜性進行評論。

這也是重申您先前關於為什麼選擇使用此特定算法的討論的機會。 如果您有更多的時間在面試中,此步驟也可以用作討論您可能擴展的潛在領域的一種方式。


結論

技術面試很難-不可否認。

同樣,通過生活中的許多事情,可以通過堅持不懈的練習來提高技能。 如果這很容易的話,那麼每個人都會通過面試,而獲得的回報會少很多。

在接下來的帖子中,我計劃談論我以前學習的時間表。 它將包括我用來學習算法問題的資源,以及從頭開始學習可以用來面試的新語言的資源。

(本文翻譯自Joey Colon的文章《How To Stop Being Afraid of Technical Interviews》)

聲明:文章觀點僅代表作者本人,PTTZH僅提供信息發布平台存儲空間服務。
喔!快樂的時光竟然這麼快就過⋯
more