首頁>技術>

> Credit: Author

當今的軟體工程訪談經常涉及某種編碼測試或程式設計練習,我認為這是一件很糟糕的事情。下面我說一下為什麼。

懶惰的人

可以很容易地事先記住要求軟體工程師執行特定任務,例如編寫演算法以生成階乘(非常常見的一種)或對[單]連結串列進行排序,並且除了候選人的能力外,不提供任何對候選人技能的見解。死記硬背。您也可以詢問字元" A"的ASCII碼。

許多此類練習的詳細解決方案可在各種參考資料中線上獲得,在許多情況下,在包含針對所有常見採訪編碼問題的演算法和特定程式語言實現的書中。

在一家公司工作時,我正在與一位同事討論他們與一家大型對沖基金合作進行的詳細面試過程。他們要求他掌握的所有技術知識均已從廣泛可用的面試題和答案書中認真記住,當前員工已將其作為所有面試題的來源。幸運的是,他是一名熟練的工程師,但同意接受這一坦率單調且平常的鍛鍊以確保姿勢。他不應該這樣做-不僅浪費了他寶貴的時間,而且也沒有在確定他的能力方面給招聘公司任何東西。一年後,他離開了,無論如何,他們對技術水平低下感到厭倦。僱用和持續無效的專案管理實踐的標準…

記憶的使用

用特定的程式語言對演算法進行編碼也具有相同的理由。沒有某種語法檢查輔助工具(例如編輯器的內建程式碼完成功能),沒有參考一些技術文件或沒有複製預先實現的解決方案,在現實世界中工作的軟體工程師不會編寫一段程式碼。適用時。重新發明輪子沒有意義。

我敢打賭,運行當今世界上許多系統的程式碼起源於Stack Overflow。

實際上,使用特定程式語言的語法來自使用和熟悉。面試官可能認為測試候選人的特定語言的語法細微程度是他們理解程度的衡量標準,例如,我可以斷言,儘管我使用C語言已有30年了,但我仍會定期語法錯誤。

實際上,隨著我的軟體工程事業的發展以及我對自己感興趣的語言的熟悉,我經常對C和C ++或Objective-C等語法上的細微差別感到困惑。這並不是因為我是一位糟糕的軟體工程師(儘管有些人可能會不同意……),而是因為只有太多的知識可以讓您牢牢記住,並且可以隨時回想起。

優秀的軟體工程師常常不知道特定問題的答案,但一定會知道在哪裡可以找到答案。也許考慮問一個最佳地點以找到諸如面試問題之類的資訊?

常見任務

我在前面簡要談到的一件事是不重新發明輪子。例如,如果您使用C語言工作,並且需要一個串列埠例程,那麼除非情況特別需要,否則您不必從頭開始重寫它。也許您需要一個JSON解析器,這是一個非常普遍的要求-除非您是在資源有限的嵌入式板上,對地靜止軌道上的衛星上或在Malbolg中進行編碼,否則也許只應該從庫中提取預先編寫的程式碼即可。它可能已經使用了很長時間,已經過全面測試,並且具有詳細(正確)的文件。固體。

在現代軟體工程中,不太可能遇到一項常見任務,即該任務尚未在預先編寫的庫中實現自動化,或者其實現無法以演算法形式廣泛使用。

如果您像我一樣,並且在遊戲中主要是由於對主題的熱愛,那麼您可能會積極尋找那些您正在實施以前實現的角色的角色。尋找陌生的,新的世界,新的生活,新的文明……

實際上,在不遠的將來,軟體工程師的概念已被程式碼考古學家比作了不止一次,他們主要重用現有程式碼,而花費較少的時間來設計和編碼新的和新穎的演算法。

人們常說,受訪者應與公司面試一樣多地採訪公司。我完全支援這個。

底線

一些公司已經改變為更好的方法,而其他公司則遠遠沒有達到目標。在這裡,我敦促軟體工程師同仁不要與那些遵循過時的招聘慣例並堅持程式設計測試和練習的公司合作,尤其是長時間的測試和練習!

我聽說過一些公司要求在候選人的時間上完成專案的故事,通常需要幾天的時間。

其他人則針對特定語言進行通用的"能力測試",有多種選擇,其中在有限的分配時間內出現一團大腦迷霧就等於遊戲結束了!

如果您是遊戲新手,那麼也許您無法拒絕採訪,我完全理解這一點,但是一定要把它看作是一種學習經驗。進行動作,獲得經驗,儘可能多地學習,如果工作確實令人失望,那就繼續前進。隨著您的前進,您的信心會隨著您的知識和經驗而增長。畢竟,公司從您那裡受益,所以您也必須從公司中同樣受益。

如果你像我一樣是年紀較大的人,那麼請僱用公司-跟我說話。我到過各地,看到過的事情和做過的事情,所有的資格都在牆上和簡歷上,我很討厭被一些通用的招聘渠道吸引,並反覆測試我的能力。

如果您認為自己是一個體面的僱主,並且不明白為什麼看似優秀的候選人會繼續退出,那麼您應該對自己的僱用作法有個很長的瞭解。

8
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 2.15 使用vSphere Client修改虛擬機器配置操作