當前位置:
首頁 > 科技 > 9 大技巧拯救你的編程面試!

9 大技巧拯救你的編程面試!

作為程序員,在面試過程中都需要經歷一次又一次編程的考驗,這其中有何技巧可言?又該如何通關成功拿到心儀的 offer 呢?

作者 | Daily Coding Problem

譯者 | 蘇本如,責編 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下為譯文:

關於編程面試中遇到的困難和演算法問題,我們已經討論了很多,但是首先在面試環境中讓自己保持舒適本身就是一種技巧。

除了提出正確的解決方案之外,在每次編程面試中,你還需要做一些額外的事情。

要求澄清問題。

運行你的演算法並用測試用例進行驗證。

主動提供演算法的時間複雜度和空間複雜度信息。

很多時候,應聘者會立即全神貫注於編寫代碼,而忽略了做上面的一件或多件事情,這會對他們的面試結果產生負面影響。面試官肯定會發掘出應聘者編寫正確演算法的能力,但他們也會基於溝通能力和驗證能力等其他技能來評估應聘者。

要求澄清問題

在開始編寫代碼之前,一個好的應聘者總是會問清楚面試官提出的問題。這有三個主要目的:

它縮小了問題的範圍。例如,也許你會問面試官,「這個數組中的所有整數都是正的嗎?」。如果答案是肯定的,那麼你就不必考慮整個負整數空間,這可能使問題更容易解決。

它向面試官表明你正在積極考慮邊緣案例。面試是為了證明你有能力進行批判性和周密的思考,同樣也是為了證明你的原始編碼能力。

它允許你和面試官就問題的理解達成一致。因為有些時候,我給了應聘者一個問題,他們提出的解決方案卻稍有偏差。所以在開始之前,確保你和面試官對你要解決的問題的理解一致。

驗證演算法

在面試過程中,僅僅在黑板上寫好代碼並稱之為「完成」是不夠的。一個高質量的應聘者總是會用邊緣案例和例子逐步檢查他們的演算法以找出任何錯誤。這是幾乎每個面試官都希望看到的關鍵步驟。

在驗證演算法時,儘可能周密。下面是一些提示:

在演算法的每個步驟,寫出存儲在任何數據結構或變數中的內容。

如果執行for-或while循環,請確保運行演算法直到完成,以捕獲任何「off-by-one」錯誤或終止錯誤。

選擇non-trivial的測試用例。可能是該演算法適用於特定的輸入集,但不適用於更複雜的輸入集。嘗試提出破壞演算法的測試用例。

理想情況下,你寫的演算法沒有任何缺陷,但現實中更可能發生的是,你會發現一些小錯誤。通過修改演算法來修復這些錯誤,並再次運行幾個測試用例,將能很好地反映出你的代碼調試能力。

提供演算法的時間複雜度和空間複雜度

幾乎每個面試官都會關心演算法的時間複雜度和空間複雜度。主動提供這些信息,而不是等待他們詢問,可以向面試官表明你熟悉這些概念,並且可以輕鬆計算這些信息。

需要牢記的一些事情:

當開始考慮一個問題時,試著想想絕對的最好和最壞情形時的複雜度是什麼。例如,要在未排序的列表中查找某個元素,我們知道必須至少查看列表中的每個元素一次,所以這個演算法的複雜度至少是O(n)。

試著用「壓力測試」測算一下你的演算法的複雜度,尤其是當它依賴於兩個或更多的變數時。例如,如果你的演算法執行次數是O(n*k):如果k非常小會發生什麼?當k接近n時會發生什麼?有時,你會發現一個演算法對於特定的n和k值是最優的,另一個演算法對於不同的n和k值是最優的。

對於內存限制,如果你確實需要跟蹤數據結構中的所有值,請嘗試解釋。此外,還要認識到一個事實,即不同編碼語言中的某些函數可能會使用額外的內存。一個很好的例子是在Python中進行列表切片,這會創建一個新的列表(可能會產生另一個O(n)內存使用)。

編碼面試是很困難的,精通演算法和編碼問題並不能保證總是能夠通過面試。幸運的是,有了這三個技巧,你可以更好地了解如何進行編程面試。祝你好運!

你正在面試編程工作嗎,還是只是喜歡有趣的編程問題?查看我們的時事通訊-Daily Coding Problem,你就能每天在你的收件箱中收到一個關於編程的問題。

原文:https://www.dailycodingproblem.com/blog/tips-to-ace-your-coding-interview/

本文為CSDN翻譯,轉載請註明來源出處。

【End】

熱 文推 薦

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

一圖抵千言:帶你快速學會 GoogLeNet 神經網路 | CSDN 博文精選
位元組跳動入局全網搜索;思科回應中國區裁員;IntelliJ IDEA 新版發布!| 極客頭條

TAG:CSDN |