題:
編程測試期間不允許使用Google
Stupid_Intern
2020-01-07 17:56:02 UTC
view on stackexchange narkive permalink

我有一個針對入門級分析顧問角色的在線編程測試。在編程過程中,我總是引用在線代碼或文檔,但是在測試中,我不允許這樣做。現在,我不知道是否可以在Google的幫助下進行代碼測試。

如果可以在文檔或在線代碼的幫助下做得很好,可以督促編程測試的目的是什麼?片段?這樣測試是否公平?我該如何表達我的代碼很好,只是我不擅長記住所有內容,因此不必在線查找?

我可以理解它是否是基本的編程測試,但是它是中級到硬水平的編程測試,在現實生活中,即使是經驗豐富的專業人士,也會在文檔或Google的幫助下進行。

請注意,該測試將在hackerrank平台上進行,並且我不確定邏輯或實現是否對您有影響我沒有通過所有測試用例。

更新:

在測試開始之前,它有一個帶註記的複選框: “雖然可能會參考語言文檔或使用具有代碼完成功能的IDE,但我不會通過任何來源(包括網站,書籍或朋友/同事)來查閱/複製代碼,儘管它們可能參考語言文檔或使用具有代碼完成功能的IDE。”

如果不允許我全屏轉義,我將如何使用IDE或文檔?我應該明確詢問允許什麼和不允許什麼嗎?

您能否提供更多測試背景知識?我懷疑對於沒有Google的採訪,該測試真的是“中等至中等水平”。
十一 答案:
NegativeFriction
2020-01-07 18:11:33 UTC
view on stackexchange narkive permalink

解釋破解編碼面試:大多數公司都知道,他們的測試會導致一些假陰性。特別是在擁有數百名申請人的大型公司中,他們對此表示滿意。他們要比其他任何事情都想要避免的是誤報。誤報表示他們將錢浪費在了無濟於事的人身上,與合格的候選人相比,這些人可能在代碼庫中引入更多的錯誤,並且最終使公司付出的代價比他們帶來的要多。 / p>

簡而言之:您絕對正確。這不是現實情況,它正在對您進行超出預期的測試,尤其是對於初中級候選人。但這並不是他們真正關心的問題,他們關心的是確保他們找到最可能犯錯誤的最佳人選。

編輯:這是一個建議的方案。我們擁有三家在市場上擁有相同股份和聲譽的公司。所有人都被認為是非常有吸引力的工作前景。每家公司完全一樣的10,000名候選人適用於所有公司。

在10,000名候選人中,有100名是合格和優秀的候選人。其中9,900人不適合該職位,並可能損壞公司的基礎架構。

A公司認為,考慮所有候選人並只挑選他們想要的候選人是至關重要的。在採訪的第1輪中,他們使用了基本的FizzBu​​zz測試,並立即淘汰了5,000個。在第二輪中,他們發出了一個面試問題,涉及他們對工作的期望程度,然後將問題縮小到大約300名候選人。他們對最後300名候選人進行面試,然後將其範圍縮小到100名合格候選人。他們將這些候選人相互比較,然後選擇自己喜歡的人。

B公司決定,他們實際上只關心兩件事-快速招聘和找到合格的候選人。他們通過電子郵件發送了一個非個性化的FizzBu​​zz電子郵件完整測試,並淘汰了5000名不知道自己在做什麼的人。第二輪面試需要按位運算符,位移位和各種利基,僅面試的問題,這個職位中99.999%的人將永遠不必處理這些問題,這使他們的搜索範圍縮小到23個候選人。乙公司有信心這23名候選人中的任何一個都能做好。他們可以分別面試以找到適合自己的個性,然後繼續實際工作。

C公司僅發出了一個基本的FizzBu​​zz測驗,他們有5000名候選人都認為他們很適合(許多誤報)。他們會隨機選擇一個,因為時間就是金錢,該死-我敢肯定,他們都能做到!他們意識到,在完成整個入職流程,獲得福利等之後,他們的候選人只是用Google搜索了FizzBu​​zz測驗的答案,而對工作的相關職責一無所知。

公司A並且B最終可以到達選擇一個合格候選人的同一最終點-但是B公司用了更少的時間,並且以更少的人力搜索候選人。是的,他們不公平地解雇了一些人-但特別是對於中低端的人才,他們不需要出色的開發人員。他們只需要一個開發人員,一個人的表現就可以和下一個人差不多。

到年底時,A,B和C公司必須相互比較,如果其他條件都相等,那麼B公司將保留更多的資金,並有更多的時間和精力投入項目。公司A。選擇了誤報的公司C現在已經浪費了金錢和時間,現在不得不回到招聘過程。只要您仍然可以保留合理數量的真實陽性,將候選者剔除而對假陰性的擔憂就很小,這具有很好的商業意義。

誤報問題>加1。
是的,與不應該僱用某人相關的風險遠大於不應當僱用某人相關的風險。
但這測試似乎與該人是正面還是負面無關,因為它與日常工作並沒有真正的關係。如果正面和負面的測試均以相同的速度通過測試,那麼這完全無助於選擇-您最好擲硬幣以查看誰參加了第二次面試。我不明白為什麼要設計一個所有否定都失敗而只有一些肯定卻失敗的測試,為什麼所有負數都失敗了,許多正數都失敗了。為什麼該測試對消除負面影響尤其比實際考試更好呢?
@NuclearWang,因為這是所有負值都失敗而某些正值都失敗的測試。如果您願意為這種荒謬的採訪做好準備,那麼他們肯定會適合您。 這樣看。我有10,000名申請人。在這10,000人中,有100人會做得差不多,而9900人會失敗。如果這100人能同樣出色地完成這項工作,那麼我不在乎我的測試是否有75個失敗。我只需要查找這100個中的1個,此過程可以節省時間和$。
+1:我的姐夫在Google工作,他多次說過同樣的話。唯一的優先考慮就是將壞人拒之門外,總會有更多的好人申請這類職位,因此,拒絕表現糟糕或期望稍有不同的優秀候選人根本不會對公司造成傷害。
Stephan Branczyk
2020-01-07 18:01:05 UTC
view on stackexchange narkive permalink

像這樣測試是否公平?

明智嗎?我不知道。

公平嗎?是的,這很公平。如果要求其他人做同樣的事情。這是公平的。

畢竟,測試的重點不一定要使其成功。這是將您的表現與其他人的表現進行比較。從這個意義上講,這很公平。

如果有人曾經使用google進行編碼,而有人只能記住所有內容,那麼這種測試是不公平的。他們測試了更多的功能來記住很多東西,而不是編程技能。 – Andrei Suvorkov

那不是完全正確。他們不只是測試候選人的記憶。他們還測試了候選人向面試官提出​​問題的能力。

此外,編程技巧在一定程度上記住了很多事情。擁有大量最新經驗的更好的程序員會記住更多。就是這樣。

就像國際象棋一樣。更好的棋手會記住棋盤上的位置比起一個完整的初學者要好得多。

您在某事上練習得越多。您越會組織這些信息並將其聚集到您的內存中就越好。同樣,練習的次數越多,其中一些甚至可能會進入您的肌肉記憶。

無論如何,我建議您練習使用間隔重複技術。每個小語法問題(尤其是基本語法)對Google的依賴越少,您成為一名程序員的效率就越高。

這確實是您應該努力的地方,因為您實際上不會改變主意。或者另一種選擇是與技術面要求不嚴格的其他公司面談。

考試的那天,重點不是要慌張。如果需要,使用偽造的函數名稱或偽代碼。只要告訴面試官你在做什麼。

如果您需要實時練習面試,我建議您嘗試以下操作: http://pramp.com/ http://interviewing.io

如果有人曾經使用google進行編碼,而別人卻只能記住一切,那麼這種測試是不公平的。他們測試了記住很多東西的能力,而不是編程技能。
-1
@AndreiSuvorkov說您應該計算數組foo的平均值。“只記得一切”的人必須了解幾乎整個MATLAB文檔才能編寫“ mean(foo,'all')”。那些剛剛忘記存在此命令的人可能會寫成sum(foo(:))/ numel(foo)或基於更多原始函數的函數。
我不得不進去清理源自Google搜索的太多意大利麵條代碼。
與理查德的觀點相切,如果您從Google搜索中復制代碼,請不要失去學習機會。維護一份日記,在其中概述要復制的代碼的主要概念(使用您自己的文字/繪圖)。並自己鍵入該代碼,您可以使用自動完成功能,但不要使用剪切和粘貼功能。那是為了您的肌肉記憶。附帶說明一下,對於我已經提到的間隔重複技術,也請抵制使用其他人的Anki卡的誘惑。您自己的Anki卡一開始會很爛,但是隨著您使用它們的增多,它們會有所改善。
作為在同一天/一周內使用超過10種語言的人,即使我擁有+7年的專業經驗和+25年的總體編程經驗,我也很難記住如何使用常用的方法,例如字符串替換。這些測試是針對幾種語言/框架/庫的專家而設計的,而我已經使用了35種以上的語言,並且無法始終記住什麼語言需要所有參數或格式。
我完全同意@computercarguy,。這種測試不應用於每個開發人員職位。但是不幸的是,當您每天使用10種不同的語言時,維護您所熟悉的至少一種語言(即使它每年都在變化)仍然符合您的最大利益,以防萬一您需要在某個時候找到其他地方的工作。
作為一名Web開發人員,@StephanBranczyk,很好,我每天只用3-5種語言來完成這項工作,在家中自己的網站又用3-5種語言,Android使用另外2種語言,而Arduino使用另一種語言,其中一些重疊。您對擁有“主要興趣”是正確的,但是當您完成的工作不僅僅是日常工作時,就很容易擴展。通常,超級專業化是一種不利因素,IME。每年更改主要語言並不會獲得像這樣的專業化/記憶化測試。
@StephanBranczyk +1我的祖父是一位RIP老師,曾經讓我們在* paper *詞典中查找所有不熟悉的單詞,然後使用該單詞寫出原始句子。複製/粘貼雖然很節省時間,但對學習來說卻很糟糕。
@computercarguy試圖找到工作的人們最好選擇一種“喜歡的”語言用於測試,而成熟的開發人員最好保持更多的語言以保持適應性。不同職業階段的工作重點不同。
作為@MandisaW,的“老牌開發人員”,我需要尋找新工作的頻率比我喜歡的更多,並且,如果我不尋找使用多種語言的工作,那麼選擇的機會就很小。如果我不僅查看C#工作,還包括Java,PHP,JavaScript甚至C / C ++,那麼即使我的C / C ++生鏽了,我也更有可能獲得面試機會,更不用說一份工作了。我總是可以將其備份,但是閉卷考試不會顯示我的編程技能,並且使用PHP進行測試不太可能顯示我可以在C ++中進行Arduino編程。
“就像下象棋一樣。”真的不是。如今,語言和框架已“設計”為可與開發人員可用的所有工具結合使用。如果您遇到的C ++程序員不時查找一些參考,則可以確定某個地方有bug。
@computercarguy我同意“永不停止學習”,並“適用於所有工作”。但是,仍然至少應該有一種您最精通和最新的語言/上下文(當然,它會隨著時間而改變)。證明自己是一個紮實,知識淵博的開發人員是關鍵,無論是否有輕微的語法錯誤,訪問員都應證明這一點。
@MandisaW,在一個完美的世界中,是的,你會是對的。不幸的是,情況並非總是如此。借助使用測試用例來驗證您的代碼是否獲得正確結果的在線測試系統,較小的語法錯誤將阻止代碼正常工作,因此您不會因測試工作而獲得榮譽。我之前曾參加過這樣的在線測試,但是我花了太多時間試圖使語法正常工作,而我沒有完成閉卷測試。我不能告訴你那是多麼令人沮喪。該軟件告訴您可以檢測到選項卡的更改/窗口模糊,因此不容作弊。
@computercarguy仍然經常失敗,因為許多人擁有不止一台計算機,尤其是IT人員。當我不得不處理此類限制時,我會在筆記本電腦或平板電腦上查找內容。
@AndrewDavie,在篩選訪談中效果很好,但隨後他們在面對面訪談中重做了另一項測試。
@AndrewDavie,,所以如果真的需要,可以作弊嗎?我想這歸結為道德。是的,一個人可以使用他們的電話或其他任何東西,但這仍然在作弊。而且,如果他們以後再次對您進行類似問題的重新測試,您可能會腦中浮現,也可能不會。如果您不能重複自己的成功,他們會知道您不是一個人做。
Romeo Ninov
2020-01-07 18:05:24 UTC
view on stackexchange narkive permalink

此測試正常。他們不想測試您在互聯網上搜索事物的能力。他們想測試您的思維方式。因為編程是為了理解需求並實現算法(IMHO)。

源代碼中的錯誤可以在以後進行糾正,但是如果您不能像程序員一樣認為您(很可能)不適合該職位。 / p>

即使記住一些結構,如果您不了解這些內容,編寫代碼也將無濟於事。

如果所有候選人都在相同規則下進行測試,是的,測試是公平的。如果這是一個很好的測試(對誰也很好),那就另當別論了。

他們不想測試您在互聯網上搜索事物的能力。-好吧,我想說這種能力對我們的工作也至關重要。
但是測試平台是hackerrank,我認為他們基於邏輯或實現根據測試用例是否通過進行標記。
@AndreiSuvorkov,是的,這很重要。但是不如思考:)
@Stupid_Intern,我不知道這個平台。我的回答是我看情況的方式。
@RomeoNinov您的觀點很明確。但是據我了解,申請人應將其代碼提交給Hackerrank,然後該代碼將由機器進行驗證。不管您是否通過了所有測試,它都不在乎您的想法。稍後可能是人類會調查提交(成功),但是誰知道..
回憶多種語言庫中數百個函數和其他項的名稱和接口的測試能力如何測試候選人的思維方式?
正如我已經在評論中提到的@RosieF,,我不知道這個特定的平台。但是在進行面試時我使用了類似的方法,它向我展示了很多有關人格特徵的信息。
@Stupid_Intern那麼,如何過濾搜索到準確解決方案的人員呢?谷歌搜索還不錯;但您不應該完全依賴它。如果您在沒有Google的情況下無法通過手頭的編譯器解決玩具問題的解決方案,那麼我可能不想僱用您。我什至無法瞥見您的編程能力(如果有的話,那說明您有問題)。庫和框架很好,但是如果有必要,您實際上也應該能夠使用更簡單的結構來解決問題-如果您不記得要使用的正確類,只需編寫自己的類即可。
@Luaan我認為至少終端應該能夠參考手冊或語法或用法示例的幫助。
@Stupid_Intern當然可以。但是,如果您需要語法方面的幫助,我會很警惕-除非您被迫使用一種您不熟悉的編程語言,否則您應該真正將所有有用的語法都放下。如果您在沒有幫助的情況下無法編寫算法(即不發送依賴於庫方法的HTTP請求之類的東西),那將是一個問題。我個人不在乎您是用C,Java還是Perl編寫的,而不管作業實際需要什麼。但是,如果您無法使用_any_語言進行操作,那就不好了。
motosubatsu
2020-01-07 18:13:35 UTC
view on stackexchange narkive permalink

我必須強調,我不是在這種條件下的考試愛好者,它們並不是對候選人真實能力的特別好的考試,因為很少有人無法勝任能夠在進行實際工作時參考Google或類似資源。

那並不表示考試不公平-如果所有候選人都經受相同的考試條件,那就公平了。如果您想從事這項工作,則您需要與其他所有人一樣,力求最好地進行測試。如果他們想聘請具有良好回憶能力的人來獲取此類知識,那麼我猜這就是他們的特權。就像您不喜歡他們的聘用習慣一樣,您可以自由地不在某處工作。

我見過考生們壓碎了測試,但進入了現實世界,無法以編碼的方式從濕紙袋裡出來。
@MisterPositive這更多的是過分依賴測試(和測試準備)而不是進行全面的採訪。
@MisterPositive這樣的人如何解釋他們在“現實世界”中做得這麼差的原因?也許測試不是在測試應該測試的能力?
-1
user81330
2020-01-07 18:14:32 UTC
view on stackexchange narkive permalink

像這樣進行測試是否公平?

接受采訪的任何部分;只要您不被單挑,這是完全公平的。無論企業認為什麼,它都會為做出明智的招聘決定提供所需的信息,這對於他們向您提出的要求是公平的。

儘管如此,仍然值得記住;您始終可以拒絕接受采訪的任何部分-接受您可能會在此時離開流程的可能結果。面試與您想為他們工作以及想要雇用他們一樣重要。

如果可以藉助文檔或在線代碼來完成編程測試,那麼監督編程的目的是什麼?代碼段?

儘管推測其他公司的動機始終是一種猜測遊戲。可能的原因可能是:

  • 他們認為這將使他們對您的核心知識有所了解

  • 他們認為如果您使用該語言已有相當長的時間,您會記得它的大量工作方式

  • 他們想了解您在陌生環境中的工作方式,或者在一個不存在文檔的領域(例如,當在流血邊緣工作時)

  • 這是他們被採訪的方式,所以這就是您將要使用的方式接受面試

  • 他們會警惕地招聘一名通過考試的候選人,該候選人通過在線將現有結果匯總到一起,而沒有必要的知識-這是否是一個真正的問題。

我該如何表達我的代碼很好,只是我不擅長記住所有內容,因此不必在線查找?

儘管這將取決於雇主,但如果他們願意實際閱讀您的代碼(他們應該),而不是通過自動的“他們通過了多少百分比”系統來推送它-您始終可以使用偽代碼您知道如何解決但缺少語法知識的領域(或者您需要對某個API的工作原理進行假設的領域)。

例如,如果您知道“有一種方法可以發送假按鍵”,但是如果不查找就不知道如何在實際的Win32 API中進行操作,您可以按照以下方式編寫代碼:

  if(realLogic){SendWindowsKeyPress( “回車鍵”); //在Win32 API中有一種方法可以做到這一點,但是我沒有手工的參考。此處使用的佔位符功能簽名。}  

注意到註釋是有價值的,並且解釋您需要訪問其引用的內容-完全正確。

當然,如果他們不願意閱讀您的代碼或對“它必須實際運行,否則我們不會僱用您”有嚴格的指導方針-您簡直不走運,並將其註銷為一家您願意的公司可能根本不想工作。

這個。我接受了軟件工程師工作的面試,並且我對編程的知識非常有限。我以自己的最佳能力編寫了代碼(它肯定不會運行),他們要求我講講我做了什麼並解釋原因。長話短說,我找到了工作。他們一直在尋找邏輯和核心理解
AleksandrH
2020-01-08 02:16:37 UTC
view on stackexchange narkive permalink

我想背誦@Romeo Ninov在他的帖子中所說的話:

他們想測試您的思維方式。

這是100%正確的。最近,我通過視頻會議進行了一次技術面試,要求我解決兩個編碼問題。我被允許使用我的偏好語言。

我不記得用這種語言來做特定事情的語法,並問面試官對我快速谷歌瀏覽是否可以。他們說我不應該擔心它,可以模擬它/使用偽代碼代替我不記得的任何語法都可以。他們還通過說他們對查看我的思維過程更感興趣,從而明確地證明了這一點,並不一定是我的能力:1)正確解決問題,以及2)回憶語言語義。

但這顯然有所不同比使用Hackerrank。為此,您只需要練習,直到這些類型的問題成為第二自然。

(或者直到它們成為除草機制已經過時了-我們可以做夢,不是嗎?)

Peteris
2020-01-08 02:26:51 UTC
view on stackexchange narkive permalink

離線參考手冊和手冊

根據您的實際需求,是否允許(並且能夠使用)離線參考手冊中的API函數,參數名稱等?在許多情況下,它們甚至可以集成在IDE平台中。

這應該是合理的,並且應該足夠了。

對。儘管我曾經進行過這樣的編程測試,其中所有可用的都是VI,但甚至沒有編譯器來嘗試編譯代碼。當然,他們並不關心它是否真的可以編譯,僅是所選擇的代碼結構和算法是否合理,以及是否用恰當的中途註釋將其整潔地佈局。
Crowley
2020-01-07 19:23:27 UTC
view on stackexchange narkive permalink

此測試的目的不是評估您是否有能力通過Google搜索解決方案或在堆棧溢出問題中提出問題。它旨在分析​​您如何無需幫助即可親自解決問題。您應該犯錯誤。您應該失敗。

他們真正想要看到的是何時以及如何失敗。您犯什麼類型的錯誤。這樣,他們將比較所有候選者,並選擇那些附帶損害最小的失敗者。遠遠超出了標準操作的條件。您被迫在比平常更惡劣的條件下工作,這樣才能更容易看出自己的長處和短處。

您應該犯錯誤。您將失敗。-不是,當您必須通過自動測試驗證在Hackerrank上提交解決方案時。
WGroleau
2020-01-08 10:27:21 UTC
view on stackexchange narkive permalink

如果沒有網絡搜索,就會知道自己正在做的事情的程序員可能會比較慢,但是如果不進行剪切粘貼就無法完成工作,那麼不久之後就會粘貼錯誤的內容並且不理解。我認為這家公司可能正在發展。

附言我故意沒有使用NSA最大的競爭對手的名字-告訴您他們想看到的東西而不是您想要的東西。
你的意思是亞馬遜?:)
flexi
2020-01-07 19:40:58 UTC
view on stackexchange narkive permalink

雇主知道這份工作以及您需要什麼技能來完成這項工作,所以我認為這是完全合理的。

我理解您在說什麼,但這是不完整的招聘過程的一部分,而不是不公平的。我已經說過許多招聘人員的同意。

如果其他人還沒有解決問題,雇主需要知道您會怎麼做。為此,在線技術測試不起作用,因為它們僅給出通過/失敗,並且不允許在開箱即用的答案之外進行。他們需要給您一個現實世界的問題,並研究您的方法。 -我想知道什麼時候可以取代它,並擁有良好的投資組合和良好的參考。也許建議您建議不參加在線考試,而建議面對面開會並回答他們的任何技術問題。 -這就是我所做的。我拒絕在線測試,並且很高興擺脫任何不夠靈活的工作,但我知道並不是每個人都有這種奢侈。

Tomas
2020-01-08 14:44:01 UTC
view on stackexchange narkive permalink

您沒有提到他們是否需要實際運行的代碼,或者不一定需要按原樣運行的代碼,只是向他們展示如何解決任務。

我想這是第二個代碼選項。 重點是要顯示您的軟件設計能力,並且不取決於您是否正確拼寫了庫函數。

他們可能還會擔心您以不公平的方式使用Google (作弊,複製整個解決方案/獲得人們的幫助)。

PS:他們可能也不會堅持記住庫函數(這沒有意義):如果您不記得庫函數,就叫一個虛偽的人。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...