2009-10-06 47 views
3

我可以問什麼問題的採訪候選人,讓我知道他是否是「複製和粘貼編碼器」?面試問題來檢測複製和粘貼編碼器

我們發現即使考生在面試中回答編碼問題,一旦在工作中他們仍然傾向於複製而不是重構。

其他人都有類似的經歷?

回答

5

我有人描述(詳細)一個比他們爲解決而感到自豪的難題。很容易判斷他們是否從未真正理解過細節,或者根本沒有解決過這個問題。在描述解決方案時,熱情(甚至閃閃發光)是一大優勢。有解決問題的熱愛!

+1

如果候選人字面上閃閃發光,那麼該候選人可能是一個吸血鬼。 – user240515 2010-10-25 15:15:41

0

不要問常見問題和/或要求他們解釋他們的代碼。

5

我也遇到過這個問題。訣竅是減少僅依賴於定義的問題的數量。您可以爲他們提供需要重構的代碼,並詢問他們將如何改進代碼。這是一個非常開放的問題,顯示了候選人的想法。

很多面試官喜歡問候選人寫新代碼的問題,不幸的是開發人員從頭開始寫新東西的情況很少。更多地關注向候選人提交現有的代碼,並要求他們與其合作解決問題。

即使存在這些問題,也可能得到複製粘貼的編碼器,因爲採訪並不一定如何在現實世界中發揮作用。

這是我的兩美分。

2

這並不是說這個理由,但開發人員可能複製和粘貼代碼的一個原因是,他們不理解他們正在使用的代碼。例如,如果您聘請C#或Java開發人員,並將其放在Fortran系統上並告訴他完成工作,則由於缺乏理解,他將在整個系統中進行復制和粘貼。

除此之外,代碼質量可以在此發揮作用。我知道一個不允許重構的特定系統,但是必須引入新的變化。開發人員必須做他們必須做的,以便及時完成任務。

當然,這兩種情況都不能原諒複製和粘貼編碼,但值得看看組織內部的情況,以瞭解可能發生的原因。

8

我們面試過程的第一步是一個5分鐘的在線問題。我們爲候選人提供諸如「FizzBu​​zz」或「遞歸斐波那契」或「查找n的階乘」。

我們沒有任何規定。粘貼或代碼需要編譯,或者應該使用什麼語言 - 就這麼做。 5分鐘的時間框架迫使大多數候選人下降兩條道路之一 - 寫一些僞代碼(或主要工作代碼),或谷歌它。

當我們得到答案時,我們Google 回答。大約一半的時間,它已從一些網站複製。我們的期望是,如果他們花了5分鐘在Google上找到答案,它不僅應該編譯,而且應該是絕對最乾淨,最好的解決方案。大約一半時間,粘貼的答案完全是廢話。我們甚至得到一個沒有粘貼整個片段的數字,錯過了一大塊!

拷貝傳送器在沒有編譯器檢查時往往會暴露。他們的工作方式是粘貼,編譯,調整,編譯。如果他們只是將網頁中的解決方案粘貼到另一個網頁並提交,他們沒有任何信息告訴他們需要修復它。

這工作得非常好 - 沒有人把它放到手機屏幕上,誰不應該。

0

你可以修改你的方法。做你的技術審查和手機屏幕,當然,只是你的編碼測試的挑戰。與其提出簡單的編程測試問題作爲預選屏幕,不如提出一個相當複雜的編程項目,他們可以解決這個問題 - 可以很快找出一些可以非常無法聯繫的項目。在面試結束後給他們一些時間來完成它,並要求他們做好文件並且易於理解。然後安排跟進,討論解決方案,並詢問候選人的事情,例如「你在這裏想什麼?!」

  • 編寫玩撲克的單手三名球員中的程序
  • 寫洪水填充程序所提供的隨機場:其中我想到了各類項目的

    例子用戶

  • 編寫一個小的支票註冊程序,該程序接受來自.CSV和起始餘額的輸入,並輸出當前餘額,允許用戶查看已讀取的交易。
5

我有兩種方法,並且總是使用它們兩種。他們總共花費15分鐘,我將它們用作入門級面試的最後三分之一。

  1. 從理論上提出一個非常簡單的問題。

    • 「您是否熟悉Java中的Vector類?使用僞代碼編寫支持add,get和clear類的實現。」如果他們不熟悉,詢問ArrayList。如果他們不熟悉,請解釋他們的工作。這個想法是,他們可以寫一個 鏈接列表,並知道是什麼。
    • 如果我不能確定在這一點上,要求他們寫一個方法來手動排序列表;沒有使用Arrays.sort()或類似的。讓他們解釋一個排序算法。我不在乎他們選擇哪一個,我不在乎它的效率如何,任何都行。
  2. 「你最後寫的東西是什麼讓你感到自豪?

4

我們寫了一個測試,基本上檢查是否有人知道/爲什麼要重構。

我們創建了一個簡單的樣機應用程序(允許用戶創建預定義的形狀和移動它們在屏幕上左右),但引入了許多類型的故意錯誤。

其中之一就是複製粘貼&編碼(在多處重複相同的功能)。另一種是將每種形狀的邏輯嵌入到事件處理程序中。可怕的,可怕的東西 - 我們可以想到的最糟糕的想法。

這讓我們看看候選人是否會認識到改進的機會以及他們將採取哪些方法來解決它們。

這是一個回家測試,考生可以重寫應用程序或提供他們將做出什麼樣的變化的筆記。

0

如果他們在現場,讓他們白板的東西。讓你看看他們將如何在抽象中對問題進行分而治之。觀察他們關注的內容,他們忽略了什麼,繼續提出問題,如果你想成爲一個小小的邪惡 - 半途中改變規則。

分解它的一部分並讓它們在白板上寫入僞代碼。