Czasami pytania podczas rozmowy kwalifikacyjnej są trudne, niezależnie od tego, czy osoba przeprowadzająca wywiad zamierza je mieć, czy nie. Może sprowadzać się do wyboru, czy wykorzystać ograniczony czas wywiadu, aby napisać brzydkie, nieefektywne, brutalne rozwiązanie, lub poświęcić czas na zrozumienie każdego aspektu problemu z ankieterem.
Na przykład problem 91 w Project Euler można rozwiązać za pomocą niezbyt trudnego rozwiązania z użyciem siły brutalnej polegającego na obliczeniu każdego możliwego trójkąta, napisaniu testu isRightTriangle () i wstawieniu wszystkich trójkątów, które przejdą test do zestawu. Ale dwie pary współrzędnych X / Y sprawiają, że rozwiązanie O (x ^ 4) ma wysoką stałą wartość. Razem z przyjacielem opracowaliśmy rozwiązanie, które jest o wiele bardziej eleganckie i wydajne, ale spędziliśmy na nim 3 godziny i narysowaliśmy dziesiątki diagramów, przetestowaliśmy wiele formuł, zbadaliśmy wiele podejść itp.
Nie każde pytanie w rozmowie kwalifikacyjnej jest uczciwe. To, co jest łatwe dla jednej osoby, może być trudne dla innej. Jeśli ktoś zmaga się z pytaniem, czy byłbyś pod wrażeniem brzydkiego rozwiązania brutalnej siły, które działa? A może doskonałe rozumienie problemu i na drodze do eleganckiego rozwiązania, ale bez kodowanego rozwiązania? Czy istnieje zasada, że po 20 minutach powinieneś zacząć kodować bez względu na wszystko?
źródło
Odpowiedzi:
Po pierwsze, pytanie, które elegancko zoptymalizowało dwóch doświadczonych programistów przez trzy godziny, jest kiepskim wyborem na pytanie do rozmowy kwalifikacyjnej. Jeśli o to poprosisz, nie powinieneś oczekiwać idealnych odpowiedzi.
Z drugiej strony, czasami dowiadujesz się najwięcej o kimś, kiedy zmuszasz go do przekroczenia swoich granic. Dlatego wiele kursów uniwersyteckich zwiększa trudność, a następnie ocenia na krzywej. Jeśli wszyscy zdobędą 100% na każdym egzaminie, pozostawiasz wiele możliwości uczenia się.
Mój idealny kandydat prawdopodobnie najpierw wyliczy złożoność, powie „Och, to tylko 6 milionów iteracji, co nie potrwa długo”, a następnie szybko napisze rozwiązanie brutalnej siły. Następnie dyskutowali o podejściach, które mogliby zastosować, aby je zoptymalizować, niekoniecznie wdrażając je, chyba że poprosił o to ankieter.
Częściowo dzieje się tak, ponieważ wiele problemów typu euler projektu, które pojawiają się w prawdziwym świecie, to problemy jednorazowe, które należy rozwiązać raz, a potem o nich zapomnieć. Chcę wiedzieć, że osoba, którą zatrudnię, będzie w stanie rozpoznać algorytm brutalnej siły, który zajmuje 2 minuty, a napisanie 10 minut jest bardziej wydajne niż algorytm, który zajmuje 3 godziny i 10 sekund, jeśli potrzebujesz uruchomić to raz.
źródło
Jako menedżer ds. Rekrutacji, jeśli proszę o rozwiązanie problemu z kodem tuż przede mną, nie robię tego tyle, aby zobaczyć sam kod (choć jest to ważne), ale raczej ustalić, jak i dlaczego zrobiłeś to, co zrobiłeś. Jedną z tych rzeczy, które możesz zrobić, nie jest kodowanie, a zamiast tego przesłuchuj mnie co do aspektów samego problemu, aby lepiej go rozwiązać. Jest to dla mnie znaczące i zwykle bardziej znaczące niż rozwiązanie przedstawione w kodzie. Jednak nie w ten sposób wszyscy to robią, nie wszyscy też chcą to zobaczyć (i w rzeczywistości rzadko pytam ludzi o kodowanie w rozmowie kwalifikacyjnej, ale kładę problemy na stole i rozmawiamy przez nie, a czasami pojawia się pseudokod , co jest dla mnie równie dobre ).
Masz rację, że nie każde pytanie na rozmowę kwalifikacyjną jest uczciwe, a to, co jest łatwe dla kogoś, jest trudne dla drugiego, w tym otoczeniu i przy tych ograniczeniach, i dlatego ci, którzy rozumieją, że zwykle nie szukają rozwiązania kodowego (chociaż znowu odgrywa to ważną rolę), ale raczej proces rozwiązania .
„Czy istnieje zasada, że po 20 minutach powinieneś zacząć kodować bez względu na wszystko?” Odpowiedziałbym na to, mówiąc, że w bardzo krótkim czasie myśląc o problemie, powinieneś przynajmniej coś zrobić - zadawać więcej pytań, szkicować ramy rozwiązania lub mówić, że po prostu nie możesz tego zrobić / nie wiem od czego zacząć.
Gdybym postawił przed tobą trudny problem, a rozwiązanie, które dostarczyłeś - biorąc pod uwagę ograniczenia czasu i tego, co masz - było brutalne i brzydkie, zadałbym ci szereg pytań, dlaczego tak było, a co zmieniłoby to w coś bardziej eleganckiego: więcej informacji? więcej czasu? inne środowisko? Będąc świadomym i w kontakcie ze dlaczego to, co zrobiłeś, a co już nie zrobione, i jest w stanie racjonalnie wytłumaczyć, jest wielką gwiazdą złoto w mojej książce, ale są to rodzaje programistów I szukać. Tak więc „doskonałe zrozumienie problemu i in-road w kierunku eleganckiego rozwiązania” również działałoby dla mnie, ale nie dla wszystkich.
źródło
Chciałbym mieć oba, ale mogą wyświetlać „kod, który po prostu działa” w jednym rozwiązaniu, a następnie ewentualnie omówić potencjalne rozwiązania dla poprawy tego lub innego problemu.
Jeśli poprosisz kogoś o napisanie kodu, a on po prostu chce porozmawiać o możliwych rozwiązaniach z zerowym kodem, byłoby to problemem.
Tak jak powiedziałeś, ktoś może z jakiegoś powodu mieć problem z konkretnym problemem, ale musisz nauczyć się, jak sobie z nim poradzić. Mogą mieć szczęście i już słyszeli o rozwiązaniu podobnego problemu. Zdarza się.
Obserwuj, jak ktoś pisze i dyskutuje o wystarczającej ilości kodu, i możesz dowiedzieć się, czy jest on odpowiedni do pracy.
źródło
Nie, ale jeśli poświęcisz 20 minut na analizę problemu, zanim zabierzesz się do pracy, prawdopodobnie już masz kłopoty. Pracodawca, który zadaje ci pytanie takie jak to, które zacytowałeś, jest najbardziej zainteresowany sposobem, w jaki podchodzisz do problemu, ale jeśli poprosi go o problem z kodowaniem, również będzie chciał zobaczyć kod. Omów je przez proces myślowy ...
Pisanie tych funkcji powinno zająć około trzech minut. Teraz, zaledwie kilka minut od pytania, pokazałeś już, że pamiętasz podstawową geometrię i że naprawdę umiesz pisać kod. Daje ci również coś do rozmowy:
Więc teraz piszesz funkcję, która używa zagnieżdżonych
for
pętli iisRightTriangle()
funkcję, którą właśnie napisałeś. Rozwiązałeś problem, ale pozwoliłeś ankieterowi zobaczyć, dokąd zmierzasz. Jeśli ich celem było po prostu sprawdzenie, czy umiesz pisać kod, mogą powiedzieć ci, żebyś przestał. Bardziej prawdopodobne jest, że z przyjemnością rozmawiają z kimś, kto wie, co robią, i będą chcieli zobaczyć, jak daleko się posuniesz. Więc kontynuuj ...I tak dalej. Ponownie, zazwyczaj nie chcą znaleźć idealnego rozwiązania, chcą zobaczyć, w jaki sposób można uzyskać rozwiązanie. Twój proces myślowy nie musi być podobny do powyższego - po prostu pewność, że będziesz głośno myśleć, będzie się bardzo liczył. Nie przejmuj się, jeśli popełnisz błąd - po prostu powiedz „hmmm, chyba zszedłem z torów - pozwól mi cofnąć się o krok ...”
źródło
Jako menedżer, jeśli poproszę Cię o kodowanie jako test, najbardziej interesują mnie:
Pierwszy przedmiot może wydawać się szalony, ale byłbyś zaskoczony ...
Styl kodowania - mam na myśli nie tylko to, gdzie umieszczasz szelki, ale takie rzeczy jak:
Oto, co naprawdę mnie nie obchodzi:
Szczerze mówiąc, nigdy nie byłem wielkim fanem testów kodowania - z wyjątkiem jako narzędzia do analizy stylu.
źródło
W takim przypadku dążenie do eleganckiego rozwiązania jest lepsze niż gorsze, ale kompletne rozwiązanie. Oba przypadki są dobre. Absolutnie dobrze jest zapisać pusdocode pokazujący, że rozumiesz problem i jak zamierzasz go rozwiązać, nawet jeśli nie miałeś czasu na napisanie kodu programu.
źródło
Myślę, że zadajesz pytanie, na które tak naprawdę nie ma odpowiedzi, a tym bardziej „właściwej” odpowiedzi. Mówię to dlatego, że zależy to całkowicie od tego, co osoba zadająca pytanie ceni.
Możliwe, że ankieter jest zapalonym pragmatykiem, który naprawdę chce zobaczyć, że coś szybko działa, a następnie zoptymalizować jako działanie o niższym priorytecie, jeśli masz czas. Równie możliwe jest, że osoba przeprowadzająca wywiad robi najlepsze wrażenie na temat praktyk rekrutacyjnych w Google i nie interesuje się niczym innym, niż najseksowniejszym, najbardziej eleganckim algorytmem i traktuje to jako oznakę słabości, jaką można by nazwać słowami „brutalny” i „ force ”w obrębie 5 słów od siebie. Jest również możliwe, że osoba przeprowadzająca wywiad przeszukała „pytania podczas rozmowy” i znalazła ten problem w Internecie na 5 minut przed twoim przybyciem i nie ma pojęcia, czego chce.
We wszystkich przypadkach najlepiej jest poprosić o wyjaśnienie, jeśli nie możesz wywnioskować na podstawie informacji kontekstowych, czego chce ankieter. Masz rację, że nie wszystkie pytania podczas rozmowy kwalifikacyjnej są uczciwe, a w rzeczywistości nie wszystkie z nich są dobrymi pytaniami lub nawet pytaniami, które mają sens. Wywiad jest z natury działaniem redukcjonistycznym, podobnie jak „szybkie randki”, w których spędzasz z kimś godzinę lub dwie, a twoja dwójka próbuje zgadnąć, na podstawie tej godziny, czy będzie dobrze współpracować przez następną godzinę 5 lat lub nie. Z tej perspektywy mam nadzieję, że wyjaśniono, dlaczego tak naprawdę nie ma odpowiedzi na pytanie dotyczące „reguły”.
Ktoś zadaje ci pytanie, które według nich da ci wgląd w twoje kompetencje i dopasowanie do ich zespołu. Musisz spojrzeć na ich zespół, to, co o nich wiesz, osobowość ankietera i dziesiątki innych czynników, i najlepiej zgadnąć, jakie odpowiedzi, podejście i proces będą prawdopodobnie cenić. Osobiście powiedziałbym, że powinieneś podejść do tego w sposób, który Twoim zdaniem jest najlepszym pomysłem. Jeśli nie zgadzają się z tobą, to i tak może nie być dobrym dopasowaniem - łatwiej to zrozumieć wcześniej niż później.
źródło
Ankieterzy i tak poprosą cię o ulepszenie twojego rozwiązania.
A podejście „najpierw brutalna siła” ma jedną niezaprzeczalną zaletę: jeśli nie uda ci się znaleźć idealnego rozwiązania, nadal masz coś ukończonego, aby je pokazać.
źródło