九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
我如何回答編碼面試問題的框架

我討厭編碼面試已經(jīng)不是什么秘密了。

他們是一種糟糕的招聘方式并且容易出現(xiàn)誤報(也就是不必要地拒絕優(yōu)秀候選人)。對于大多數(shù)公司來說,提出白板式的問題并不符合他們的最大利益。

不幸的是,它們是行業(yè)標(biāo)準(zhǔn)。作為一名軟件工程師,您必須在求職過程中回答白板上的問題。

所以,這是我如何擅長于它們的框架。

能力觸發(fā)器

這個框架依賴于我在數(shù)十次面試過程中發(fā)現(xiàn)的一些能力觸發(fā)器。我還看到這些技巧對我指導(dǎo)的工程師很有用。

我所說的“能力觸發(fā)器”是指您可以展示的一種做法或可以說出的短語,可以清楚地表明您知道自己在說什么。向面試官發(fā)出信號的小而輕松的時刻:這個人明白了。

坐在桌子的兩邊,我知道最好的候選人在編碼面試中會做一些關(guān)鍵的事情:

  • 提出好的問題來澄清需求

  • 編寫測試并尋找邊緣案例

  • 在陷入細(xì)節(jié)之前要全面思考

8步框架

這是我回答面試問題的過程。我在面試的任何時候都使用這個框架,每次幾乎完全一樣:

  1. 提出問題并重申預(yù)期目標(biāo)——當(dāng)面試官給你問題陳述時,問一些澄清問題并用你自己的話重申問題。即使您完全理解問題,也可以將此作為展示能力的一種方式。

  2. 搭建解決方案、偽代碼——不要立即深入研究代碼。相反,請使用注釋/偽代碼粗略地概述您的解決方案,以展示您的一般方法并讓您從整體上考慮問題。

  3. 直截了當(dāng)?shù)卣f,“這看起來合理嗎?我走在正確的軌道上嗎?” — 在采訪的早期階段,征求反饋意見。讓你的面試官有機(jī)會向你指出不同的方向。你會驚訝于面試官經(jīng)常說:“聽起來完全正確!” 或者,“有趣的是,你很接近,但你有沒有考慮過……”Free 很早就暗示了解決方案!

  4. 編寫一些實現(xiàn),做簡單的部分——不要太沉迷于困難的部分,而是用一些真實的代碼替換你的偽代碼,這樣你就可以開始運(yùn)行它了

  5. 編寫快樂路徑測試用例和測試運(yùn)行器——這是一個巨大的能力觸發(fā)器。預(yù)先編寫一些簡單的測試用例,為您的代碼運(yùn)行提供真實數(shù)據(jù)。目標(biāo)應(yīng)該是讓您的代碼盡快運(yùn)行。

  6. 迭代代碼,直到解決快樂路徑測試用例——這是面試的實際工作。解決這個問題。但是請注意我們是如何只在第 6 步解決問題的。到目前為止,您已經(jīng)為解決問題奠定了良好的基礎(chǔ)。

  7. 尋求優(yōu)化并直截了當(dāng)?shù)貑?,“這能更高效嗎?” — 這是許多候選人錯過的一步。與面試官一起尋找優(yōu)化方法(如果有的話)。討論運(yùn)行時間和權(quán)衡。另一個重要的能力觸發(fā)器是討論權(quán)衡和替代實施的能力。

  8. 測試邊角案例——當(dāng)您的快樂路徑測試案例正常運(yùn)行時,不要就此止步。另一個重要的能力觸發(fā)器是證明您了解如何查找邊緣情況和處理錯誤。

Fizzbuzz 示例

假設(shè)您被問及經(jīng)典的fizzbuzz 問題。

  1. 從明確要求開始。我什么時候應(yīng)該停止迭代?3 和 5 是否被硬編碼為間隔,或者嘶嘶聲和嗡嗡聲除數(shù)是否可變?函數(shù)的返回值是多少?數(shù)字是字符串還是整數(shù)?

  2. 搭建解決方案——我需要一個空列表。有一個 for 循環(huán)來遍歷整數(shù)。有一些邏輯可以決定將什么附加到每個整數(shù)的列表中。最后,我應(yīng)該返回列表。我會直接問面試官,“這看起來合理嗎?有什么我想念的嗎?

  3. 編寫一些解決方案——定義函數(shù)def fizzbuzz(stop: int)。初始化一個空列表result = []。開始一個循環(huán)for i in range(stop):。在循環(huán)中,我需要一些邏輯,但我們先不要深入。在循環(huán)中的某個時刻,我需要result.append(i). 然后,用 結(jié)束函數(shù)return result。這肯定還沒有解決問題,但它給了我工作的結(jié)構(gòu)。讓我們運(yùn)行它!

  4. 寫一個測試用例——起初,我可能會做一些類似的事情print(fizzbuzz(3)),只是手動查看它是否打印出來[1, 2, 'fizz']。我可以python fizzbuzz.py從命令行運(yùn)行它。但我們需要更全面的測試,所以我可能會創(chuàng)建一組test_cases并迭代它們以查看我的代碼產(chǎn)生的結(jié)果。

  5. 迭代代碼 — 現(xiàn)在,我實際上已經(jīng)準(zhǔn)備好搞亂 fizzbuzz 的邏輯了。我可以嘗試我的代碼并重新運(yùn)行測試,直到我做對為止。

  6. 尋找優(yōu)化——在這種情況下,可能沒有太多優(yōu)化。還是挺好看的。但這fizzbuzz是一個線性問題,因為您需要為每個整數(shù)打印一些東西。

  7. 測試極端情況——當(dāng)你執(zhí)行fizzbuzz(0)or時會發(fā)生什么fizzbuzz(-1)?我是否需要處理無效輸入的情況,例如fizzbuzz('a')or fizzbuzz(None)?

示例代碼

昨晚我和一位教練客戶一起完成了這個練習(xí)。這是我們在短短幾分鐘內(nèi)使用該框架得出的結(jié)論:

def fizzbuzz(stop: int):    """On multiples of 3, print 'fizz'    On multiples of 5, print 'buzz'    On multiples of both, print 'fizzbuzz'    For all other numbers, print the number    """    result = []    for x in range(1, stop+1):        if x % 15 == 0:            result.append('fizzbuzz')        elif x % 3 == 0:            result.append('fizz')        elif x % 5 == 0:            result.append('buzz')        else:            result.append(x)
return result
test_cases = ( (-1, []), (0, []), (1, [1]), (3, [1, 2, 'fizz']), (15, [1, 2, 'fizz', 4, 'buzz', 'fizz', 7, 8, 'fizz', 'buzz', 11, 'fizz', 13, 14, 'fizzbuzz']),)
for stop, expected in test_cases: actual = fizzbuzz(stop) try: assert actual == expected print('PASS!') except: print(actual, expected)

框架的價值

在像面試這樣壓力很大的情況下,有一個可以依靠的框架是非常有價值的。當(dāng)你覺得自己陷入困境時,只需按照步驟設(shè)置你需要的工具——腳手架、單元測試,以及你可以從面試官那里得到的任何提示。

希望這會有所幫助!關(guān)于面試還有其他問題或意見嗎?給我回信。

每日清單

我每天早上都會為軟件開發(fā)人員寫一些新東西。

如果你喜歡我的文章,點贊,關(guān)注,轉(zhuǎn)發(fā)!

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
程序員的進(jìn)步從閱讀自己的老代碼開始
一個技術(shù)大牛對程序員招聘的吐槽和建議
【算法千題案例】每日LeetCode打卡——74.Fizz Buzz
為什么我們無法寫出真正可重用的代碼?
簡單的10個Python技巧和竅門
有Java基礎(chǔ)的程序員,是如何看待Python這位少女的?
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服