Niedawno dowiedziałem się, że Facebook miał wyzwanie programistyczne, które po prawidłowym ukończeniu automatycznie powoduje rozmowę telefoniczną.
Istnieje przykładowe wyzwanie, w którym należy napisać algorytm, który może rozwiązać problem typu Wieża Hanoi . Biorąc pod uwagę liczbę kołków i dysków, początkową i końcową konfigurację; Twój algorytm musi określić jak najmniej kroków, aby dojść do ostatecznej konfiguracji i wygenerować kroki.
To przykładowe wyzwanie daje ci 45-minutowy limit czasu, ale pozwala ci nadal przetestować kod, aby sprawdzić, czy upłynie on po wygaśnięciu limitu czasu.
Nie wiedziałem o żadnym uroczym rozwiązaniu matematycznym, które mogłoby go rozwiązać, i nie chciałem szukać takiego, ponieważ uważam, że byłoby to oszustwo. Starałem się więc rozwiązać to wyzwanie najlepiej, jak mogłem.
Byłem w stanie stworzyć algorytm, który zadziałał i przeszedł. Jednak zajęło mi to ponad 4 godziny, znacznie dłużej niż 45 minut. Ponieważ zajęło mi to znacznie więcej czasu niż mi przydzielono, nie podjąłem rzeczywistego wyzwania.
Zastanawiam się jednak, czy w rzeczywistości to naprawdę ważne, że zajęło mi to tak długo? Mam na myśli to, że jest to znak, że nie będę w stanie znaleźć pracy w takim miejscu (nie tylko Facebook, ale Google, Fog Creek itp.) I muszę obniżyć swoje aspiracje, czy też fakt, że faktycznie zdałem przy mojej pierwszej próbie, mimo że zajęło to zbyt długo, aby być uznanym za dobry?
źródło
Odpowiedzi:
W praktyce nie ma znaczenia, jak długo to zajmie. Problem, który może rozwiązać problem w 45 minut, jest - wszystko inne równy - pięć razy bardziej produktywny niż taki, który zajmuje 4 godziny, a zatem jest bardziej atrakcyjny dla pracodawcy.
To powiedziawszy, nie mówisz, dlaczego zajęłeś cztery godziny, aby rozwiązać ten problem.
Każda z tych rzeczy może mieć wpływ na czas, który ci zajmuje, a właściwie ważniejsze jest, aby móc rozwiązać problem pod presją, bez mówienia wszystkiego i przy pomocy dostępnych narzędzi, ponieważ BĘDZIE to miało miejsce podczas twojej kariery i zwykle jest to moment, w którym bardzo ważne jest dla kogoś, czy odniesiesz sukces, czy nie.
źródło
Ma to znaczenie dla firmy, która szuka ogólnych programistów z dobrym przepływem środków pieniężnych , ponieważ szybsze oznacza więcej pracy. Jednak w wielu innych przypadkach (w rzeczywistości twierdziłbym w większości przypadków), nie ma to znaczenia tak bardzo, jak twoja umiejętność rozwiązywania problemów i umiejętność ich rozwiązywania .
Mogę wymyślić pięć różnych rodzajów rozwiązań problemów:
Ci, którzy...
Test w stylu Facebooka wyraźnie eliminuje kandydatów nr 3, 4 i 5, ponieważ wiąże się to z ograniczeniem czasowym, dlatego wiemy, że ten test jest przeznaczony dla pracodawców, którzy ustalili, że powinni zatrudnić tylko kandydatów nr 1 lub ewentualnie 2 ( w zależności od dalszego badania).
Kilka przykładów:
źródło
Wieża Hanoi? To było jedno z pierwszych zadań programistycznych, jakie miałem na studiach pierwszego roku na uniwersytecie (zaraz po Fibonacci - tak, miałem zajęcia z jednym z tych funkcjonalnych maniaków programowania :). I nawet nie jestem informatyką, jestem inżynierem informatyki.
Mimo to większość tak zwanych „programistów” nie potrafi poprawnie napisać tego rodzaju algorytmu, ponieważ większość programistów jest okropna. (wyszukaj Fizzbuzz dla dodatkowej zabawy)
W każdym razie, kiedy przekroczysz pewien próg, myślę, że twoje umiejętności programistyczne nie mają tak dużego znaczenia, jak twoja zdolność do kończenia projektów, twoja odporność na trudności itp. I wydaje się, że na pewno przekroczyłeś ten próg.
Facebook chce zatrudnić najlepszych deweloperów, jasne, ale nie wiem, ile z nich ma nadzieję uzyskać przy tego rodzaju grach. Myślę, że po prostu nie chcą tracić czasu z okropnie złymi programistami.
Wskazówka, którą zawsze słyszę, to to, że jeśli chcesz zostać zatrudniony przez fajną firmę technologiczną, spróbuj zaangażować się w projekty open source. Spróbuj także zdobyć staż.
źródło
Przy dużej podaży (wielu potencjalnych programistów) i niewielkim popycie (kilka zadań programistycznych) pracodawcy mogą być tak wymagający, jak tylko chcą. W rzeczywistości muszą być wymagający, inaczej spędziliby nadmierną ilość czasu na przeprowadzaniu wywiadów z ludźmi zamiast wykonywania jakiejkolwiek pracy. Dają więc kandydatom wyjątkowo ciężkie testy, aby jak najszybciej uzyskać krótką listę i upewnić się, że będą przeprowadzać wywiady z ludźmi, którzy są nie tylko dobrzy, nie bardzo dobrzy, ale w rzeczywistości charyzmatyczni .
Zatem fakt, że nie ukończyłeś testu w wyznaczonym czasie, nie oznacza, że jesteś złym programistą; po prostu nie pasujesz do definicji tego, co Facebook uważa za charyzmatyczny. Moim zdaniem jest w porządku.
źródło
Czas ma znaczenie, ale nie rozumiem, że jesteś głupi, jeśli zajmuje ci to więcej czasu. Wiele osób ma rzeczy „zapamiętane”. Ćwiczą stosowanie technik takich jak rekurencja tak bardzo, że staje się to naturą 2CD. Nie chodzi o to, że są mądrzejsi, po prostu ćwiczyli do rzeczy 2cd i ty też możesz!
Rozważ następujący problem matematyczny: 2 + 2 =?
Jeśli od razu wiedziałeś, że odpowiedź brzmi 4, to nie dlatego, że jesteś sprytny, ale dlatego, że to natura 2cd. Dziecko uczące się dodawać może zostać zmuszone do wykonania najbardziej podstawowych operacji liczenia, aby uzyskać odpowiedź. Ale to dziecko może potencjalnie przewyższyć dorosłego.
źródło
Ludzie tak naprawdę nie dbają o to, ile czasu spędzasz na robieniu czegoś; po prostu dotrzymuj swoich terminów i wszystko jest w porządku.
źródło
Jest dość napięty, wymagałoby to przeczytania o tym, czym jest wieża Hanoi -15min, uruchomienia IDE, stworzenia pustego rozwiązania -5min, więc to tylko 25 minut na rozwiązanie problemu. Po prostu napisanie kodu z wszystkimi instalacjami wodnymi, takimi jak bezpieczne klasy z dobrym projektem interfejsu, również wymagałoby czasu - 10 minut, więc na sam pomysł pozostało 15 minut. W zależności od wieży na Hanoi może to wystarczyć, ale może nie być. Czasami muszę po prostu pozwolić, aby problem sam się rozwiązał, gdy pracuję nad innymi problemami, ponieważ nie widzę rozwiązania na miejscu. Więc rozwiązuje się za darmo w równoległym wątku, ale nie dzieje się to natychmiast.
W każdym razie jest to jedna z największych firm, więc mogą robić, co chcą. Ale limit czasu jest jednym z najgorszych czynników w wywiadach IMHO, zawsze czuję się naciskany, popędzony, nie mogę zrobić wszystkiego czystego i nie mogę skoncentrować się na wszystkich szczegółach, które są bardzo ważne podczas faktycznej pracy. :) Pewnie, że możesz szybko rozwiązywać rozwiązania, na przykład ustawić dostęp do administratora, aby wszystko działało +
'SELECT * FROM pass WHERE usr == ' + user_input
, ale dla każdego bezpiecznego i dobrze napisanego zadania, z którego byłbym dumny, potrzebowałbym trochę czasu, a 45 minut jest naprawdę dość intensywne.źródło