Absolutnie chcę, żebyś przetestował kod tablicy, o którą proszę napisać. Chcę, żebyś mówił głośno podczas pisania, przeglądał go, dostrzegał większość popełnianych błędów składniowych i wskazywał, w jaki sposób może być bardziej wydajny. Właściwie to taki punkt na tablicy. To nie jest jednorazowe, napisać to wszystko, uh-huh-you-get-70/100. To rozmowa, w której pośredniczy kod i odbywa się na tablicy zamiast na moim biurku.
Oto kilka świetnych sposobów na niepowodzenie testu „Kodowania tablicy”:
- odrzuć to
- nie zadawaj ani jednego wyjaśniającego pytania (język, platforma, coś na temat wymagań) ORAZ nie mów mi swoich założeń na temat któregokolwiek z nich ORAZ nie rób założeń, które są dalekie od tego, na co odpowiedziałbym
(np .: napisz to w Fortranie, zinterpretuj „wyświetl” lub „drukuj” jako „napisz do dziennika zdarzeń”, tego rodzaju rzeczy. Mogę na to pozwolić, jeśli wcześniej powiesz mi, jakie były twoje założenia)
- zapytaj mnie, w jakim języku chcę, otrzymaj odpowiedź, która jest w opisie stanowiska, a następnie napisz w innym języku, ponieważ nie czujesz się komfortowo w języku, o który prosiłem.
(Jesteśmy tutaj konsultantami. Testuję zachowanie konsultanta tak samo jak kodowanie. Pytanie klienta jest poprawne tylko wtedy, gdy klient rzeczywiście ma wybór. Kontrolowanie rozmów z ludźmi, którzy ci zapłacą, jest trudne. To lekcja 1. To jest zaznacz przeciwko tobie na dowolny temat, ale dla konkretnego „zatrudniasz programistę X, ale nie chcę pisać w X dla ciebie”, masz teraz dwa duże czarne znaki).
- pokaż mi, jakim jesteś astronautą architektury, wypełniając dwie tablice interfejsami, wzorami fabrycznymi, abstrakcjami, zastrzykami i testami, kiedy chciałem, abyś „wydrukował liczby od jednego do 5”.
(myślisz, że przesadzam, ale miałem faceta, który dramatycznie uogólnił mój problem - trzymając się powyższego przykładu powiedzmy, że zamiast 1 do 5 jego rozwiązanie wykonałoby dowolną sekwencję liczb całkowitych (skąd? Zastanawiałem się) i było 5 razy tak długo, jak ktokolwiek inny - i zapomniał faktycznie zadzwonić do funkcji, która wykonała tę pracę. Powtarzające się podpowiedzi i sugestie, aby przejść przez nią tak, jakby był debuggerem, nie spowodowały, że zauważył, że funkcja nigdy nie została wywołana).
Zawsze mówię „lubisz to?” „czy możesz to poprawić?” „poprowadź mnie przez to” i tym podobne. Zazwyczaj w tej rozmowie zauważany jest brakujący dwukropek lub osobno. Jeśli nie, zwykle oceniam to na nerwy.
Inne rzeczy, które mogą nie mieć znaczenia na tablicy, które są dla mnie ważne:
- kiedy skończysz, czy nadal mogę to przeczytać? Czy rozmazałeś się, nabazgrałeś, zmieniłeś kolory, narysowałeś strzały, przekreśliłeś i ogólnie zostawiłeś bałagan, którego nie można teraz użyć? A może zdajesz sobie sprawę, że tablice są kasowalne, wskazują linie kodu w powietrzu zamiast krążyć / arroryzują je i pozostawiają mi coś, co mógłbym zrobić zdjęcie i zachować w pliku projektu?
- ile mnie zapytałeś, gdy to zrobiłeś? Czy lubisz być sam i nie dyskutować o swoim kodzie, czy widzisz kod jako coś wspólnego? Jak zareagowałeś, kiedy pytałem cię o to, pisząc jeszcze?
- szydziłeś z „łatwego” zadania, czy zemdlałeś z „trudnego” zadania? Czy byłeś niegrzeczny z powodu poproszenia Cię o pokazanie, że umiesz pisać? Czy łatwo Cię zastraszy problem techniczny, czy arogancka umiejętność wymyślenia dobrego algorytmu?
- pracujesz nad tym w swojej głowie, czy pamiętasz rozwiązanie, które gdzieś przeczytałeś? Zwykle potrafię rozpoznać trudne problemy.
- czy planowałeś z wyprzedzeniem, gdzie zacząłeś pisać? Ludzie, którym kończy się tablica, zwykle zaczynają za mało lub piszą za dużo - mogę powiedzieć, że nie wiedzieli, że to będzie 20 linii kodu, więc zostawiłem tylko miejsce na 5 - wierzcie lub nie, ten drobny szczegół jest odzwierciedlony w większe zadania szacowania.
- obejrzałeś to zanim powiedziałeś, że skończyłeś? Czy widziałem, jak wskazujesz lub stukasz swoją drogę i testujesz to, zanim cię o to poprosiłem? Kiedy zapytałem cię lub zadałem ci konkretne pytania, czy spojrzałeś na to ponownie, czy po prostu odszedłeś z pamięci? Czy chcesz wziąć pod uwagę, że Twój pierwszy szkic może nie być kompletny?
Zdecydowanie polecam ćwiczenie kodowania na tablicy. Zawsze ostrzegam rozmówców, że zostaną o to poproszeni. Jeśli masz dostęp do rzeczywistej tablicy, postaw sobie kilka prostych problemów i poćwicz je tam. Pomoże to w osiągach i zaufaniu.
Przepraszam, wiem, że jestem na terytorium TL; DR, ale o to chodzi - kodowanie na tablicy to coś więcej niż kodowanie . To test na więcej niż znajomość składni. Istnieje wiele zachowań dobrych programistów, które zostały przedstawione w odpowiedzi na to zadanie. Jeśli uważasz, że chodzi tylko o kodowanie, nie rozumiesz sedna sprawy.
W innych rozmowach na temat testowania tablicy ludzie mówią mi, że mogę odrzucić dobrego kandydata. Szczerze mówiąc, to ryzyko, które chętnie podejmę. Każda runda zatrudniania zawiera kilka osób, które mógłbym zatrudnić. Niektóre osoby ze świetnymi życiorysami, które dobrze sobie radzą w części wywiadu z pytaniami i odpowiedziami, rozpadają się na tablicy i najwyraźniej nie mogą (bez żadnej zachęty) pisać prostego kodu w języku, który, jak twierdzą, znają. Mogłem zatrudnić niektóre z nich. Każde narzędzie, które temu uniemożliwia, będzie narzędziem, którego będę nadal używać. Nigdy nie znalazłem nikogo, kto wynająłby łódź, ponieważ wszyscy moi kandydaci zawiedli przy tablicy i nie oczekuję, że kiedykolwiek to zrobię.