Pytanie:
Nie wolno używać Google podczas testów programowania
Stupid_Intern
2020-01-07 17:56:02 UTC
view on stackexchange narkive permalink

Mam test programowania online na stanowisko konsultanta ds. analityki na poziomie podstawowym. Podczas programowania zawsze odnosiłem się do kodu lub dokumentacji online, ale w teście nie wolno mi tego robić. Teraz nie wiem, jaki jest sens testowania pamięci, jeśli mogę kodować za pomocą google.

Jaki jest sens nadzorowanych testów programistycznych, jeśli można je dobrze wykonać z pomocą dokumentacji lub kodu online fragmenty? Czy uczciwe jest testowanie w ten sposób? Jak mogę pokazać, że potrafię dobrze kodować, to po prostu nie jestem dobry w zapamiętywaniu wszystkich rzeczy, aby nie musieć szukać w Internecie?

Mógłbym zrozumieć, gdyby był to podstawowy test programistyczny, ale jest to test programowania na poziomie umiarkowanym do trudnego, który w prawdziwym życiu nawet doświadczony profesjonalista skorzystałby z pomocy dokumentacji lub Google.

Uwaga: test będzie na platformie hackerrank i nie jestem pewien, czy logika lub implementacja będą miały znaczenie, jeśli Nie zdaję wszystkich przypadków testowych.

Aktualizacja:

Przed rozpoczęciem testu ma pole wyboru z notatką: „Nie będę sprawdzać / kopiować kodu z żadnego źródła, w tym strony internetowej, książki lub znajomego / współpracownika, aby ukończyć te testy, chociaż mogę odwoływać się do dokumentacji języka lub używać środowiska IDE z funkcjami uzupełniania kodu”.

Jak korzystać ze środowiska IDE lub dokumentacji, jeśli nie mogę wyjść z trybu pełnego ekranu? Czy powinienem wyraźnie zapytać, co jest dozwolone, a co nie?

Czy mógłbyś podać więcej informacji na temat testu?Mam wątpliwości, czy test jest naprawdę „na poziomie umiarkowanym do trudnego” jak na rozmowę kwalifikacyjną bez Google.
Jedenaście odpowiedzi:
NegativeFriction
2020-01-07 18:11:33 UTC
view on stackexchange narkive permalink

Parafrazując „Cracking the Coding Interview”: większość firm zdaje sobie sprawę, że ich testy spowodują fałszywie negatywne wyniki. Szczególnie w większych firmach, które mają setki kandydatów - nie przeszkadza im to. To, czego chcą uniknąć bardziej niż czegokolwiek, to fałszywe alarmy. Fałszywy alarm oznacza, że ​​marnują pieniądze na kogoś, kto nie pomoże, który może potencjalnie wprowadzić więcej błędów do bazy kodu niż wykwalifikowany kandydat i który ostatecznie kosztuje firmę więcej, niż wnosi do stołu.

Krótko mówiąc: masz całkowitą rację. To nie jest prawdziwy scenariusz i testuje Cię poza to, czego należy się spodziewać, zwłaszcza od młodszego kandydata. Ale to nie jest ich zmartwieniem - ich zmartwieniem jest upewnienie się, że dostaną najlepszego kandydata z najmniejszym prawdopodobieństwem popełnienia jakichkolwiek błędów.

edycja: Oto proponowany scenariusz. Mamy trzy firmy o identycznym udziale i reputacji na rynku. Allare postrzegana jest jako bardzo atrakcyjne perspektywy pracy. Dokładnie taka sama pula 10 000 kandydatów dotyczy każdej firmy.

Spośród 10 000 kandydatów 100 to wykwalifikowani i doskonali kandydaci. 9 900 z nich nie nadaje się na to stanowisko i może potencjalnie uszkodzić infrastrukturę firmy.

Firma A decyduje, że bardzo ważne jest, aby spojrzała na wszystkich kandydatów i wybrała tylko tych, których chcą. W pierwszej rundzie wywiadów używają podstawowego testu FizzBuzz i od razu znokautują 5000. W drugiej rundzie wysyłają pytanie na rozmowę kwalifikacyjną o poziomie trudności, jakiego spodziewają się w pracy, i zawężają je do około 300 kandydatów. Przeprowadzają osobiste rozmowy kwalifikacyjne z ostatnimi 300 kandydatami i zawężają je do 100 kwalifikujących się kandydatów. Porównują tych kandydatów ze sobą i wybierają swoich faworytów.

Firma B decyduje, że tak naprawdę zależy jej tylko na dwóch rzeczach - szybkim zatrudnieniu i znalezieniu wykwalifikowanego kandydata. Wysyłają bezosobowy, kompletny test FizzBuzz przez e-mail, aby go ukończyć pocztą elektroniczną, i wyeliminowali te same 5000 osób, które nie wiedziały, co robią. Druga runda wywiadów wymaga operatorów bitowych, przesunięć bitowych i wszelkiego rodzaju niszowych pytań tylko do rozmowy kwalifikacyjnej, z którymi 99,999% osób w tej roli nigdy nie musiałoby się zajmować, co ogranicza ich poszukiwania do 23 kandydatów. Firma B jest przekonana, że ​​którykolwiek z 23 kandydatów dobrze wykona swoją pracę. Mogą przeprowadzić z nimi indywidualną rozmowę kwalifikacyjną, aby znaleźć odpowiednią osobowość, a następnie przejść do właściwej pracy.

Firma C po prostu wysyła podstawowy quiz FizzBuzz i ma 5000 kandydatów, których uznają za pasujących ( wiele fałszywych alarmów). Wybierają jedną na chybił trafił, bo czas to pieniądz, do cholery - jestem pewien, że wszyscy mogą wykonać robotę! Po pełnym procesie rekrutacji, ustaleniu świadczeń itp. Zdają sobie sprawę, że ich kandydat właśnie wpisał w Google odpowiedź do quizu FizzBuzz i nie wie nic o odpowiednich obowiązkach na danym stanowisku.

Firmy A i B mogą w końcu dojść do tego samego końcowego punktu wyboru jednego wykwalifikowanego kandydata - ale firma B zrobiła to w znacznie krótszym czasie i przy znacznie niższym koszcie siły roboczej do wyszukiwania kandydatów. Tak, wyrzucili kilka osób niesprawiedliwie - ale szczególnie w przypadku czegoś niskiego lub średniego poziomu nie potrzebują genialnego programisty. Potrzebują tylko programisty - kogoś, kto będzie działał mniej więcej tak dobrze, jak następny facet.

Kiedy nadejdzie koniec roku i firmy A, B i C będą musiały porównać ze sobą, jeśli wszystko inne będzie równe, firma B zatrzyma więcej pieniędzy i będzie miała więcej czasu i energii na projekty niż Firma A. Firma C, która wybrała fałszywie pozytywny wynik, musi teraz wrócić do procesu rekrutacji, tracąc zarówno pieniądze, jak i czas. Odsiewanie kandydatów z minimalną obawą o fałszywie negatywne wyniki ma sens biznesowy, o ile nadal można zachować rozsądną liczbę prawdziwych pozytywów.

Kwestia fałszywych alarmów> plus 1.
Tak, ryzyko związane z zatrudnieniem kogoś, kogo nie powinieneś, jest znacznie większe niż ryzyko związane z niezatrudnieniem kogoś, kogo powinieneś.
Ale ten test wydaje się nie mieć związku z tym, czy dana osoba będzie pozytywna, czy negatywna, ponieważ nie jest tak naprawdę związana z codzienną pracą.Jeśli pozytywy i negatywy nie przejdą tego testu w tym samym tempie, w ogóle nie pomoże to w selekcji - równie dobrze możesz rzucić monetą, aby zobaczyć, kto dostanie się na drugi wywiad.Nie rozumiem, dlaczego miałbyś chcieć testu, w którym wszystkie negatywy zawodzą, a wiele pozytywów, kiedy można zaprojektować test, w którym wszystkie negatywy zawodzą, a tylko niektóre pozytywne.Dlaczego szczególnie ten test jest lepszy w usuwaniu negatywów niż egzamin bardziej praktyczny?
@NuclearWang, ponieważ to * JEST * testem, że wszystkie negatywy zawodzą, a niektóre pozytywne.Jeśli chcesz włożyć wymagany wysiłek, aby przygotować się na tak absurdalną rozmowę kwalifikacyjną, to na pewno będziesz pasować. Spójrz na to w ten sposób.Mam 10 000 kandydatów.Z tych 10 000 100 z grubsza poradzi sobie z tym zadaniem równie dobrze, a 9900 nie.Jeśli 100 wypadnie równie dobrze, nie obchodzi mnie, czy mój test się nie powiedzie 75 z nich;Muszę tylko znaleźć 1 z tych 100, a ten proces oszczędza czas i $.
+1: Mój szwagier pracuje w Google i wielokrotnie powtarzał to samo.Jedynym priorytetem jest powstrzymanie złych ludzi, zawsze będzie więcej dobrych ludzi ubiegających się o tego rodzaju stanowiska, więc odrzucenie świetnego kandydata, który miał zły dzień lub nieco inne oczekiwania, wcale nie zaszkodzi firmie.
Stephan Branczyk
2020-01-07 18:01:05 UTC
view on stackexchange narkive permalink

Czy takie testowanie jest uczciwe?

Czy to rozsądne? Nie wiem.

Czy to sprawiedliwe? Tak, to sprawiedliwe. Jeśli inni zostaną poproszeni o zrobienie tego samego. To sprawiedliwe.

W końcu celem testu nie jest koniecznie osiągnięcie asa. Ma na celu porównanie twoich wyników z wynikami innych. W tym sensie to sprawiedliwe.

Jeśli ktoś przywykł do kodowania w Google i może po prostu wszystko zapamiętać, tego rodzaju testy nie są sprawiedliwe. Testują większą zdolność zapamiętywania wielu rzeczy niż umiejętności programowania. - Andrei Suvorkov

To nie do końca prawda. Nie sprawdzają tylko pamięci kandydata. Sprawdzają również zdolność kandydata do zadawania pytań ankieterowi.

Poza tym umiejętność programowania polega po części na zapamiętywaniu wielu rzeczy. Lepsi programiści, ci, którzy mają mnóstwo niedawnych doświadczeń, zapamiętają więcej. Po prostu tak jest.

Zupełnie jak w szachach. Lepsi szachiści zapamiętają pozycje na szachownicy znacznie lepiej niż całkowicie początkujący.

Im więcej ćwiczysz w czymś. Im lepiej potrafisz organizować i gromadzić te informacje w swojej pamięci. Ponadto, im więcej ćwiczysz, część z tego może nawet przedostać się do pamięci mięśniowej.

W każdym razie proponuję poćwiczyć stosowanie techniki powtarzania z odstępami. Im mniej będziesz musiał polegać na Google w przypadku każdego małego pytania składniowego (szczególnie w przypadku podstawowej składni), tym wydajniejszy staniesz się jako programista.

Tak naprawdę powinieneś włożyć swój wysiłek, ponieważ naprawdę nie zmienisz ich zdania. Lub inną alternatywą jest rozmowa z innymi firmami, które są mniej rygorystyczne w rozmowach technicznych.

A w dniu testu nie chodzi o to, żeby się zdenerwować. W razie potrzeby użyj wymyślonych nazw funkcji lub pseudokodu. Po prostu powiedz ankieterowi, co robisz. Nie bój się powiedzieć, że czegoś nie wiesz i zadawać pytania, kiedy tego potrzebujesz.

A jeśli chcesz poćwiczyć rozmowę kwalifikacyjną w czasie rzeczywistym, proponuję spróbować następujących rozwiązań: http://pramp.com/ i http://interviewing.io

Jeśli ktoś przywykł do kodowania w google i może po prostu wszystko zapamiętać, takie testy nie są uczciwe.Testują większą zdolność zapamiętywania wielu rzeczy niż umiejętności programowania.
-1
@AndreiSuvorkov mówi, że masz obliczyć średnią wartość tablicy „foo”.Ci, którzy „po prostu pamiętają wszystko”, muszą znać prawie całą dokumentację MATLAB-a, aby napisać „mean (foo, 'all') '.Ci, którzy po prostu zapomnieli, że takie polecenie istnieje, mogą napisać `sum (foo (:)) / numel (foo)` lub funkcję opartą na jeszcze bardziej prymitywnych funkcjach.
Musiałem wejść i wyczyścić o wiele za dużo kodu spaghetti, który pochodzi z wyszukiwarki Google.
Stycznie do punktu Richarda, jeśli kopiujesz kod z wyszukiwarki Google, nie okradaj się z możliwości nauki.Prowadź dziennik, w którym zarysowujesz główne koncepcje kodu, który kopiujesz (używając własnych słów / rysunków).I sam wpisz ten kod, możesz użyć autouzupełniania, ale nie używaj wycinania i wklejania.To dla twojej pamięci mięśniowej.Na marginesie, w przypadku techniki powtarzania z odstępami, o której już wspomniałem, oprzyj się również pokusie używania kart Anki innych osób.Twoje własne karty Anki będą początkowo kiepskie, ale będą się poprawiać, im więcej będziesz nad nimi pracować.
Jako ktoś, kto używał ponad 10 języków w tym samym dniu / tygodniu, trudno mi przypomnieć sobie, jak używać powszechnie używanych metod, takich jak zamiana ciągów znaków, mimo że mam ponad 7 lat doświadczenia zawodowego i ponad 25 lat całkowitego doświadczenia w programowaniu.Te testy są skierowane do specjalistów w kilku językach / frameworkach / bibliotekach, podczas gdy używałem ponad 35 i nie zawsze pamiętam, jaki język potrzebuje jakich parametrów lub formatu do wszystkiego.
@computercarguy, Całkowicie się zgadzam.Tego rodzaju testów nie należy stosować na każdym stanowisku dewelopera.Ale niestety, gdy używasz codziennie 10 różnych języków, nadal w twoim najlepszym interesie jest utrzymanie co najmniej jednego języka, który dobrze znasz (nawet jeśli zmienia się z roku na rok), na wszelki wypadekw pewnym momencie znaleźć pracę gdzie indziej.
@StephanBranczyk, dobrze, jako twórca stron internetowych, używałem 3-5 dziennie tylko do tej pracy, kolejnych 3-5 języków na mojej własnej stronie internetowej w domu, Android używa kolejnych 2 języków, a Arduino używa innego, a kilka z nich się pokrywa.Masz rację, jeśli chodzi o „główne zainteresowania”, ale naprawdę łatwo jest się rozwijać, gdy wykonujesz więcej niż tylko codzienną pracę.Zwykle super specjalizacja jest niekorzystna, IME.Zmiana głównego języka co roku nie zapewni ci takiego testu specjalizacyjnego / zapamiętywania, jak ten.
@StephanBranczyk +1 Mój dziadek, nauczyciel RIP, kazał nam wyszukiwać nieznane słowa w słowniku * papierowym * i pisać oryginalne zdanie, używając tego słowa.Kopiowanie / wklejanie to oszczędność czasu, ale to bzdura do nauki.
@computercarguy Osobom próbującym znaleźć pracę lepiej jest wybrać „ulubiony” język do testów, podczas gdy doświadczeni programiści powinni nadążać za większą liczbą języków, aby zachować elastyczność.Różne priorytety na różnych etapach kariery.
@MandisaW, jako „programista o ugruntowanej pozycji”, muszę szukać nowej pracy znacznie częściej niż mi się podoba, a jeśli nie szukam pracy w różnych językach, wybór jest niewielki.Jeśli zamiast tylko patrzeć na oferty pracy w C #, dołączę Java, PHP, JavaScript, a nawet C / C ++, mam znacznie większe szanse na rozmowę kwalifikacyjną, nie mówiąc już o pracy, nawet jeśli moje C / C ++ jest zardzewiałe.Zawsze mogę go przywrócić, ale test z zamkniętej książki nie pokaże moich umiejętności programistycznych, a wykonanie testu w PHP prawdopodobnie nie pokaże, co mogę zrobić w programowaniu Arduino w C ++.
"To tak jak w szachach."Naprawdę nie.Obecnie języki i frameworki są * zaprojektowane * do użytku w połączeniu ze wszystkimi narzędziami dostępnymi dla programisty.Jeśli spotkasz programistę C ++, który od czasu do czasu nie wyszukuje żadnych odniesień, możesz być pewien, że gdzieś są błędy.
@computercarguy Zgadzam się z zasadą „nigdy nie przestawaj się uczyć” i „aplikuj na wszystkie oferty pracy”.Mimo to powinien istnieć co najmniej jeden język / kontekst, w którym najlepiej znasz się i który jest najbardziej aktualny (oczywiście może się on zmieniać w czasie).Udowodnienie, że jesteś solidnym, kompetentnym programistą, jest kluczowe i powinno trafić do ankieterów niezależnie od drobnych błędów składniowych.
@MandisaW, w idealnym świecie, tak, miałbyś rację.Niestety nie zawsze tak jest.A dzięki systemowi testowania online, który wykorzystuje przypadki testowe do weryfikacji poprawności wyników, drobne błędy składniowe uniemożliwiają działanie kodu, więc nie otrzymasz uznania za pracę nad testem.Zrobiłem już takie testy online i spędziłem zbyt dużo czasu próbując uruchomić składnię, że nie ukończyłem testu zamkniętej książki.Nie potrafię powiedzieć, jakie to frustrujące.Oprogramowanie informuje, że może wykryć zmiany w kartach / rozmycie okien, więc oszukiwanie nie jest tolerowane.
@computercarguy, który nadal często zawodzi, ponieważ wiele osób ma więcej niż jeden komputer - zwłaszcza informatyków.Kiedy miałem do czynienia z takimi ograniczeniami, sprawdzałem rzeczy na swoim laptopie lub tablecie.
@AndrewDavie, I to działa dobrze w wywiadzie przesiewowym, ale potem powtarzają kolejny test podczas rozmowy osobistej.
@AndrewDavie,, więc możesz oszukiwać, jeśli naprawdę tego potrzebujesz?Myślę, że to sprowadza się więc do moralności.Tak, osoba może użyć swojego telefonu lub czegokolwiek, ale to nadal jest oszustwo.A jeśli później ponownie sprawdzą cię z podobnym problemem, możesz mieć go świeżo w pamięci lub nie.Jeśli nie możesz powtórzyć sukcesu, wiedzą, że nie zrobiłeś tego sam.
Romeo Ninov
2020-01-07 18:05:24 UTC
view on stackexchange narkive permalink

Ten test jest OK. Nie chcą sprawdzać twoich umiejętności wyszukiwania rzeczy w Internecie. Chcą przetestować Twój sposób myślenia. Ponieważ programowanie polega na zrozumieniu wymagań i zaimplementowaniu algorytmów (IMHO).

Błędy w źródle można poprawić później, ale jeśli nie możesz myśleć jak programista, (prawdopodobnie) nie nadajesz się na to stanowisko.

Nawet jeśli pamiętasz jakieś struktury, kody, to niewiele ci pomoże, jeśli nie możesz ich zrozumieć.

A jeśli wszyscy kandydaci są testowani według tych samych zasad, tak, test jest uczciwy. To inna historia, jeśli to dobry test (i dobry dla kogo).

Nie chcą sprawdzać twoich umiejętności wyszukiwania rzeczy w internecie.- Cóż, powiedziałbym, że ta umiejętność jest również niezbędna w naszej pracy.
Ale platforma testowa to hackerrank i zakładam, że zaznaczają ją na podstawie tego, czy przypadki testowe przejdą, czy nie, na podstawie logiki lub implementacji
@AndreiSuvorkov, tak, to ważne.Ale nie tyle, co myślenie :)
@Stupid_Intern, Nie znam tej platformy.A moja odpowiedź brzmi tak, jak widzę sprawę.
@RomeoNinov Twój punkt widzenia jest jasny.Ale jak zrozumiałem, kandydaci powinni przesłać swój kod do Hackerrank, a tam kod zostanie zweryfikowany maszynowo.Nie obchodzi go, jak myślisz, tylko czy wszystkie testy zostały zaliczone, czy nie.Później pewnie człowiek zajmie się poddaniem (pomyślnie), ale kto wie…
W jaki sposób testowanie zdolności przypominania sobie nazw i interfejsów setek funkcji i innych elementów w bibliotekach kilku języków sprawdza sposób myślenia kandydata?
@RosieF,, jak już wspomniałem w komentarzu, nie znam tej konkretnej platformy.Ale zastosowałem podobne podejście podczas przeprowadzania wywiadów i wiele mi to pokazuje o cechach osoby.
@Stupid_Intern Jak więc odfiltrować kogoś, kto szuka w Google dokładnych rozwiązań testu?Googlowanie nie jest złe;ale nie powinieneś całkowicie na nim polegać.Jeśli nie możesz znaleźć rozwiązania problemu z zabawkami z kompilatorem pod ręką bez Google, prawdopodobnie nie chciałbym cię zatrudnić.Nie mam sposobu, aby uzyskać choćby wgląd w twoje umiejętności programowania (jeśli cokolwiek, to pokazuje, że masz problemy).Biblioteki i frameworki są w porządku, ale naprawdę powinieneś być w stanie użyć prostszych konstrukcji, aby rozwiązać problem, jeśli to konieczne - jeśli nie pamiętasz właściwej klasy, której chcesz użyć, po prostu napisz własną.
@Luaan Myślę, że przynajmniej terminal powinien mieć możliwość odniesienia się do podręcznika lub pomocy w zakresie składni lub przykładu użycia.
@Stupid_Intern Jasne.Ale jeśli potrzebujesz pomocy ze składnią, byłbym ostrożny - chyba że jesteś zmuszony używać języka programowania, z którym nie czujesz się komfortowo, naprawdę powinieneś mieć całą przydatną składnię przysiadów w dół.Jeśli nie możesz napisać algorytmu (tj. Nie rzeczy takich jak wysyłanie żądań HTTP itp., Który opiera się na metodach bibliotecznych) bez pomocy, to jest problem.Osobiście nie obchodzi mnie, czy napiszesz to w C, Javie czy Perlu, niezależnie od tego, czego faktycznie wymaga praca;ale jeśli nie możesz tego zrobić w jakimkolwiek języku, to źle.
motosubatsu
2020-01-07 18:13:35 UTC
view on stackexchange narkive permalink

Muszę podkreślić, że nie jestem fanem testów w tego typu warunkach, nie są one szczególnie dobrym sprawdzianem prawdziwych umiejętności kandydata, ponieważ rzadko zdarza się, aby nie móc możliwość odniesienia się do Google lub podobnych zasobów podczas wykonywania rzeczywistej pracy.

To powiedziawszy, nie musi oznaczać, że test jest niesprawiedliwy - jeśli wszyscy kandydaci podlegają tym samym warunkom testowym, jest to sprawiedliwe. Jeśli chcesz pracować, musisz podejść do testu najlepiej, jeśli potrafisz, tak samo jak wszyscy inni. Jeśli chcą zatrudnić kogoś z dobrą pamięcią do tego rodzaju wiedzy, to chyba ich prerogatywa. Tak jak możesz nie pracować gdzieś, jeśli nie lubisz ich praktyk zatrudniania.

Widziałem kandydatów, którzy miażdżyli test, ale przychodzili do prawdziwego świata i nie byli w stanie kodować wyjścia z mokrej papierowej torby ...
@MisterPositive Jest to raczej wina zbyt dużego polegania na testach (i przygotowaniu do testów) niż dokładnych wywiadów.
@MisterPositive Jak tacy ludzie wyjaśniają, dlaczego radzą sobie tak słabo „w prawdziwym świecie”?Może test nie sprawdzał umiejętności, które powinien był przetestować?
@RosieF Widząc, że wielu kandydatów wyszukuje w Google dokładne pytanie w teście w _wywiadzie na żywo przez Skype_, nie jestem zdziwiony.Testy zwykle mają na celu szybkie oszacowanie, ile rzeczywistej pracy programistycznej wykonał kandydat.Możesz szybko stwierdzić, czy ktoś pracował np.Pętle wiadomości systemu Windows lub AJAX za pomocą jednego pytania.Często można łatwo odpowiedzieć na to samo pytanie, korzystając z szybkiego wyszukiwania w Google;ale to czyni go całkowicie bezużytecznym zgodnie z jego przeznaczeniem - nie widzisz, czy kandydat może rozwiązać ten konkretny problem - po prostu, jak podszedłby do podobnego problemu.
user81330
2020-01-07 18:14:32 UTC
view on stackexchange narkive permalink

Czy uczciwe jest testowanie w ten sposób?

W dowolnej części wywiadu; jest to całkowicie sprawiedliwe, o ile nie jesteś wybierany. Cokolwiek firma myśli, że dostarczy informacji potrzebnych do podjęcia świadomej decyzji o zatrudnieniu, jest sprawiedliwe, aby poprosiła Cię o to.

Zawsze jednak warto o tym pamiętać; zawsze możesz odrzucić jakąkolwiek część rozmowy kwalifikacyjnej - akceptując prawdopodobny wynik, że zostaniesz usunięty z procesu w tym momencie. Wywiady dotyczą w równym stopniu tego, że chcesz dla nich pracować, jak oni chcą cię zatrudnić.

Jaki jest sens nadzorowania testów programistycznych, jeśli można je dobrze wykonać z pomocą dokumentacji lub kodu online fragmenty?

Chociaż spekulowanie na temat motywów innych firm jest zawsze grą w zgadywanie. Oto kilka prawdopodobnych powodów:

  • Myślą, że dzięki temu zrozumieją Twoją podstawową wiedzę

  • Myślą, że jeśli pracowałeś w języku przez dłuższy czas, będziesz pamiętać, jak to działa,

  • Chcą zobaczyć, jak pracujesz w nieznanym środowisku, lub w dziedzinie, w której nie ma dokumentacji (np. podczas pracy na krawędzi)

  • To był sposób, w jaki zostali przesłuchani, więc tak po prostu będziesz poddać się rozmowie kwalifikacyjnej

  • Obawiają się zatrudniać kandydata, który zda test, łącząc istniejące wyniki online, bez posiadania wymaganej wiedzy - czy jest to rzeczywiście prawdziwy problem, czy nie.

Jak mogę pokazać, że potrafię dobrze kodować, ale po prostu nie jestem dobry w zapamiętywaniu wszystkich rzeczy, aby nie musieć szukać w Internecie?

Chociaż będzie to zależeć od pracodawcy, jeśli jest on skłonny faktycznie przeczytać Twój kod (powinien), zamiast przepychać go przez automatyczny system „jaki procent przeszedł” - zawsze możesz użyć pseudokodu dla obszary, które wiesz, jak rozwiązać, ale brakuje Ci wiedzy na temat składni do wykonania (lub gdzie musisz przyjąć założenia dotyczące działania określonego interfejsu API).

Na przykład, jeśli wiesz, że „istnieje sposób na wysłanie fałszywe naciśnięcie klawisza ", ale nie wiesz, jak to zrobić w rzeczywistym API Win32 bez szukania go, możesz napisać kod w następujący sposób:

  if (realLogic) {SendWindowsKeyPress ( "PRZYCISK ENTER"); // Jest sposób na zrobienie tego w Win32 API, ale nie mam pod ręką odnośnika. Zastosowano tutaj podpis funkcji zastępczej.}  

Zauważenie, że komentarze są cenne i wyjaśnienie rzeczy, dla których trzeba by odwiedzić odniesienie - jest całkowicie poprawne.

Oczywiście, jeśli nie chcą czytać twojego kodu lub mają twarde wytyczne na temat „musi faktycznie działać, bo cię nie zatrudnimy” - po prostu nie masz szczęścia i odpisujesz to jako firma, którą byś prawdopodobnie nie chciałbym pracować w pierwszej kolejności.

To.Miałem rozmowę kwalifikacyjną na stanowisko inżyniera oprogramowania i mam bardzo ograniczoną wiedzę programistyczną.Napisałem kod najlepiej, jak potrafiłem (na pewno nie zadziała). Poprosili mnie o omówienie tego, co zrobiłem i wyjaśnienie, dlaczego.Krótko mówiąc, dostałem pracę.Szukali logiki i podstawowego zrozumienia, aby tam być
AleksandrH
2020-01-08 02:16:37 UTC
view on stackexchange narkive permalink

Chciałbym się wycofać z tego, co @Romeo Ninov powiedział w swoim poście:

Chcą przetestować Twój sposób myślenia.

To jest w 100% poprawne. Niedawno odbyłem wywiad techniczny za pośrednictwem wideokonferencji, podczas którego poproszono mnie o rozwiązanie dwóch problemów z kodowaniem. Pozwolono mi używać mojego preferowanego języka.

Nie pamiętałem składni do robienia określonej rzeczy w tym języku i zapytałem ankietera, czy mogę szybko go wygooglować. Powiedzieli, że nie powinienem się tym martwić i w porządku jest po prostu wyszydzać / użyć pseudokodu zamiast dowolnej składni, której nie pamiętam. Wyraźnie uzasadniali to również, mówiąc, że byli bardziej zainteresowani przyjrzeniem się moim procesom myślowym, a niekoniecznie mojej zdolności do 1) prawidłowego rozwiązywania problemów i 2) przypomnienia sobie semantyki języka.

Ale to oczywiście trochę inne niż korzystanie z Hackerrank. W tym celu po prostu musisz ćwiczyć, aż tego typu problemy staną się drugą naturą.

(Albo dopóki nie staną się przestarzałe jako mechanizm odchwaszczania - możemy marzyć, prawda?)

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

Odnośniki i podręczniki offline

Czy w zależności od tego, czego faktycznie potrzebujesz, możesz (i możesz!) korzystać z podręczników offline dotyczących funkcji API, nazw parametrów itp.? W wielu przypadkach byłyby one nawet zintegrowane z platformami IDE.

To powinno być rozsądne i to powinno wystarczyć.

tak.Chociaż miałem jeden taki test programowania, w którym wszystko, co było dostępne, to VI, nawet kompilator, który próbowałby skompilować kod.Oczywiście nie obchodziło ich, czy faktycznie się skompiluje, tylko czy wybrana struktura kodu i algorytm mają sens i czy został on przejrzyście ułożony z częściowo przyzwoitymi komentarzami.
Crowley
2020-01-07 19:23:27 UTC
view on stackexchange narkive permalink

Ten test nie ma na celu oceny Twoich umiejętności wyszukiwania rozwiązań w Google ani zadawania pytań na temat przepełnienia stosu. Ma na celu przeanalizowanie, w jaki sposób osobiście rozwiązujesz problem bez pomocy. Oczekuje się, że będziesz popełniać błędy. Oczekuje się, że poniesiesz porażkę.

Oni tak naprawdę chcą zobaczyć, kiedy i jak ponosisz porażkę. Jakie błędy popełniasz. W ten sposób mają porównać wszystkich kandydatów i wybrać tę, która zawodzi z najmniejszymi stratami ubocznymi.

Pomyśl o tym jak o testowaniu materiałów do konstrukcji - takich jak mosty, elektrownie itp. Materiały te są poddawane działaniu warunków które są daleko poza warunkami standardowych operacji. Jesteś zmuszony do pracy w trudniejszych warunkach niż zwykle, aby łatwiej było dostrzec twoje mocne i słabe strony.

Oczekuje się, że będziesz popełniać błędy.Oczekuje się, że poniesiesz porażkę.- Nie wtedy, gdy musisz przesłać swoje rozwiązanie na Hackerrank z automatyczną weryfikacją testów.
WGroleau
2020-01-08 10:27:21 UTC
view on stackexchange narkive permalink

Koder, który rozumie, co robi, może działać wolniej bez wyszukiwania w sieci, ale taki, który nie może ukończyć pracy bez kopiowania i wklejania, wkrótce wklei niewłaściwą rzecz i jej nie zrozumie. Myślę, że ta firma może być w coś.

P.S.Celowo nie użyłem nazwy największego konkurenta NSA - tego, który mówi ci, co według nich chcesz zobaczyć, zamiast tego, o co prosiłeś.
masz na myśli amazonkę?:)
flexi
2020-01-07 19:40:58 UTC
view on stackexchange narkive permalink

Pracodawca wie, jaką pracę potrzebujesz i jakich umiejętności potrzebujesz, aby wykonywać tę pracę, więc myślę, że jest to całkowicie uzasadnione.

Rozumiem, co mówisz, ale raczej jest to część zepsutego procesu rekrutacji, a nie niesprawiedliwego. Wielu rekruterów, z którymi rozmawiałem, zgadza się z tym.

Pracodawca musi wiedzieć, co zrobisz, jeśli ktoś jeszcze nie rozwiązał problemu. W tym celu testy techniczne online nie działają, ponieważ dają tylko wynik pozytywny / negatywny i nie pozwalają na odpowiedzi poza polem. Muszą przedstawić Ci rzeczywisty problem i przyjrzeć się Twojemu podejściu.

Techniczny test online sprawdza tylko twoją pamięć składni i arbitralnych pytań programistycznych, które są celowo zaciemniane w sposób, w jaki nikt nigdy nie napisałby kodu. - Chciałbym wiedzieć, kiedy to zastąpiło portfolio i dobre referencje.

Więc rozumiem i częściowo się zgadzam, ale widzę to również z punktu widzenia pracodawcy. Może zasugeruj, aby zamiast przystąpić do testu online, zaproponuj spotkanie twarzą w twarz i udzielenie odpowiedzi na wszelkie pytania techniczne. - To jest to, co robie. Odmawiam testów online i cieszę się, że odchodzę od każdej pracy, która nie jest wystarczająco elastyczna, aby się dostosować, ale wiem, że nie każdy ma taki luksus.

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

Nie wspomniałeś, czy wymagają one kodu, który faktycznie działałby, czy też takiego, który niekoniecznie działałby tak, jak jest, ale po prostu pokazałby im, jak rozwiązać zadanie.

Myślę, że to druga opcja. Chodzi o to, aby pokazać swoje umiejętności w zakresie projektowania oprogramowania i nie zależy to od tego, czy poprawnie przeliterujesz funkcję biblioteki.

Mogą też obawiać się, że użyjesz Google w nieuczciwy sposób (oszukiwanie, kopiowanie całych rozwiązań / uzyskiwanie pomocy od ludzi).

PS: Prawdopodobnie też nie nalegają na zapamiętywanie funkcji biblioteki (to nie miałoby sensu): jeśli nie pamiętasz funkcji biblioteki , po prostu nazwij hipotetyczny.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...