Jak mogę sprawdzić umiejętności PHP w wywiadzie? [Zamknięte]

58

Moja firma musi zatrudnić programistę PHP, ale w mojej firmie nikt nie ma znajomości języka PHP i trudno jest nam sprawdzić umiejętności PHP. Gdyby był programistą C / Java, poprosiłbym go o napisanie szybkiej implementacji Game of Life, ale PHP to zupełnie inny język.

Z zainteresowaniem widziałem ten test:

http://vladalexa.com/scripts/php/test/test_php_skill.html

Czy ktoś jeszcze ma więcej sugestii?

Mascarpone
źródło
3
Ciekawy test, nie obejmuje jednak wstrzyknięcia SQL, ale z pewnością bym to obejmował. Sądzę, że ten test jest dobrym sposobem na sprawdzenie ich zdolności do określania ich znajomości sposobu, w jaki PHP traktuje zmienne i niewiele więcej.
Ben Brocka,
6
Cokolwiek robisz, nie zadawaj pytań dotyczących pisowni standardowych nazw funkcji. Nazwy funkcji PHP są tak niespójne.
Chris C
1
Możliwy duplikat programistów.stackexchange.com
Adam Lear
16
Mniej martwiłbym się o swoje kotlety PHP i więcej, gdyby mogli programować, współpracować z zespołem, rozumieć bezpieczeństwo w sieci itp.
Peter Loron
12
Jeśli nikt z Twojej firmy nie zna dobrze PHP, to najlepszym sposobem jest skorzystanie z usługi testowania umiejętności. http://tests4geeks.com/test/php-mysql - Podoba mi się ten. A jeśli wynik będzie dobry, możesz poprosić go o napisanie kodu PHP. Na przykład w bazie danych znajdują się studenci i przedmioty. Poproś go, aby napisał formularz HTML, w którym reżyser edytuje znaki w tabeli (Uczniowie są w lewej kolumnie, Tematy są w górnym rzędzie, Znaki są na skrzyżowaniu).
Joseph

Odpowiedzi:

71

Kod

  • Poproś kandydata o napisanie kodu
  • Poproś kandydata o przeczytanie kodu

Jeśli poprosisz kandydata o napisanie kodu, upewnij się, że:

  • Kod nie jest trywialny, ale mały
  • Zezwalasz na dostęp do instrukcji i Internetu

Jeśli poprosisz kandydata o przeczytanie kodu, upewnij się, że:

  • Kod zawiera kilka trywialnych błędów
  • Kod zawiera pewne nietrywialne błędy
  • Kod działa dobrze, ale można go łatwo zoptymalizować

Możesz użyć trzech lub więcej różnych fragmentów kodu, zacznij od prostszego i przejdź do następnego, jeśli zauważysz, że kandydat radzi sobie z łatwością. Dodaj trochę rekurencji, aby urozmaicić wszystko.

Zasoby

Poproś o szczegółową listę zasobów PHP używanych przez kandydata. Książki, blogi, fora, czasopisma itp. W ten sposób moi obecni pracodawcy dowiedzieli się o StackOverflow .

Jeśli kandydat wspomina o StackOverflow lub Programmers, NIE powinieneś pytać ani próbować znaleźć ich nazwy użytkownika. Gdyby chcieli reklamować swoją reputację, zamieściliby link kariery w CV.

Ramy

Każdy programista PHP powinien znać najpopularniejsze frameworki PHP:

i bądź biegły w co najmniej jednym z nich. Możesz przygotować kilka próbek kodu dla każdego z nich i poprosić kandydata o przeczytanie i wyjaśnienie, po tym, jak powie ci, z którym bardziej się zna.

Debugowanie i profilowanie

Zawsze czułem, że programistom PHP brakuje umiejętności debugowania i profilowania (być może tylko programistów PHP, z którymi pracowałem). Jeśli podczas dyskusji dowiesz się, że kandydat aktywnie korzysta z xdebug , nie zawracaj sobie głowy resztą rozmowy i po prostu ich zatrudnij. ;)

Wejściowa dezynfekcja

To jest ważne. Możesz zacząć od dyskusji na temat tego, dlaczego jest to ważne, a następnie poprosić o najczęstsze metody osiągnięcia tego celu. Ta dyskusja pomoże ci zapytać.

Kilka wskazówek:

Snafus PHP

W tej doskonałej dyskusji można znaleźć wiele snafusów PHP . Jeśli rozmawiasz na wyższym stanowisku, zdecydowanie powinieneś zapytać o niektóre z nich. Kilka przykładów:

Obsługa wartości liczbowych w łańcuchach przez PHP:

"01a4" != "001a4" // true
"01e4" == "001e4" // also true

Prawidłowy kod PHP :

System.out.print("hello");

W PHP ciąg znaków jest tak dobry, jak wskaźnik funkcji:

$x = "foo";
function foo(){ echo "wtf"; }
$x(); # "wtf"   

Testów jednostkowych

Czy muszę powiedzieć więcej?

Wniosek

Dobry programista PHP powinien łączyć różnorodne umiejętności i talenty:

  • Dobre zrozumienie HTTP
  • Dobra znajomość konfiguracji Apache (nawet jeśli używasz innego serwera WWW w swojej firmie)
  • Przynajmniej podstawowa znajomość JavaScript
  • Świetna znajomość HTML / CSS

Lista jest długa. Upewnij się, że dostosujesz rozmowę do konkretnych potrzeb związanych z otwarciem pracy, nie chcesz zatrudniać tylko dobrego programisty, ale dobrego programistę, który jest świetny w tym, czego od razu potrzebujesz.

Yannis
źródło
22
Dobra odpowiedź ogólnie, ale nie zgadzam się co do części „frameworks” i „basic performance”. To, czy znasz jakiś framework, czy nie, nie mówi wiele o twoich umiejętnościach jako programisty. O części dotyczącej wydajności: jeśli optymalizujesz na tym poziomie, prawdopodobnie nie powinieneś używać PHP. Dokonuję wyboru między alternatywami, które wymieniasz dziesiątki razy dziennie, ale zawsze w oparciu o czytelność i funkcjonalność, a nie wydajność. Prawidłowa odpowiedź na te pytania dotyczące wydajności brzmi: „nie ma to większego znaczenia”.
tdammers
1
@YannisRizos: Chociaż najprawdopodobniej ułatwia integrację w zespole, zakładasz, że w firmie PO używają one jednego z tych popularnych frameworków, ale jeśli nie są, wówczas znajomość któregokolwiek z frameworków nic nie udowodni. Może chodziło o tę część jako sposób, aby sprawdzić jego zdolność do pracy z pomocą ram zamiast z tych ram? (Przypadek: w firmie, dla której pracuję, korzystamy z opracowanego przez nas frameworka)
Purefan
2
@Pahah To w ogóle nie ma sensu, szczególnie na etapie rozmowy kwalifikacyjnej i unikałbym pracy w firmie, która prosi ludzi o ujawnienie takich informacji podczas rozmowy kwalifikacyjnej. Całe rozumowanie „ukrywania czegoś” jest przewrotne, imho, nie dbam o to, aby mój pracodawca wiedział, jak spędzam swój wolny czas i to wszystko. Jeśli jestem zainteresowany opublikowaniem własnego konta programisty, to inna historia ...
yannis
1
@Petah Cóż, mam szczerą nadzieję, że przyszli pracodawcy nie będą próbować poznać mojej osobowości poprzez działania programistów (którzy chcieliby spędzić 25% -35% swojego czasu ze złym nazistowskim modem);
yannis
1
Nie zgadzaj się z ramami. Dobrą, nowoczesną praktyką jest używanie odpowiednich komponentów z frameworków przy użyciu wymaganego kompozytora, a nie z całego frameworka. W rzeczywistości to samo można teraz powiedzieć w świecie JS ..
John Hunt
44

Test jesteś związana jest ciekawa, i Yannis Rizos za odpowiedź jest wielki, ale myślę, że to, co jest równie ważne jest to:

Jeśli potrzebujesz dobrego programisty, nie szukaj programisty PHP. Poszukaj dobrego programisty, który zna PHP. Oznacza to, że przynajmniej połowa wywiadu powinna zawierać pytania, które nie mają wiele wspólnego ze składnią PHP lub funkcjami PHP.

Zapytaj go, co to jest MVC, co to jest AJAX, jak działa HTTP, jak działa REST, jak łączy się SQL, niektóre struktury danych, niektóre podstawy wydajności (jak mierzysz, jak poprawiasz), podstawy testowania, podstawy bezpieczeństwa (XSS, XSRF, zastrzyki, jak się bronić), podstawowa wiedza na temat programowania w typowych domenach PHP - sieć, sieci, transformacje danych itp.

Jeśli jest w tym dobry, poproś go o napisanie prostego kodu, wybranie łatwego zadania, które nie powinno zająć dużo czasu - na przykład znalezienie słów z największą liczbą samogłosek w wierszu tekstu lub odwrócenie każdego słowa w tekście lub pomnożenie dwóch matryce. Możesz również poprosić go o wdrożenie Game of Life w PHP, jeśli chcesz :)

Jeśli to przejdzie, możesz przejść do trudniejszych pytań PHP, ale nie przykładaj do tego zbytniej wagi. Potrafi przeczytać większość tego podręcznika, a tego, czego nie potrafi przeczytać, nauczy się dość szybko, jeśli będzie dobry. PHP jest zbudowany tak, aby był prosty, więc jeśli jest dobrym programistą i ma pewną praktyczną znajomość PHP, prawdopodobnie będzie w stanie go dogonić. Jeśli on wie, jak programować w ogóle, to nauka programowania w PHP jest łatwiejsza niż odwrotna - znajomość minuta składni PHP nie jest ważna, jeśli nie rozumiesz, do czego służą testy jednostkowe lub jak pozbyć się problemów XSS.

StasM
źródło
13

Choć Yannis Rizos za odpowiedź jest dobry - wiem, że nie przejdzie ten test i może używać tę odpowiedź jako zasób, aby określić, gdzie się skupić, aby poprawić moje kotlety PHP, myślę, że warto byłoby poświęcić chwilę, aby znaleźć programowania kumpel, który zna PHP, aby uczestniczyć w procesie wywiadu. Wszystkie pytania z poprzedniej odpowiedzi są dobre, ale bez pewnej wiedzy na temat domeny trudno będzie ocenić jakość odpowiedzi.

To powiedziawszy, w zależności od tego, czego potrzebujesz, jak powiedzieli inni, ogólne możliwości programowania i dopasowanie do zespołu są prawdopodobnie ważniejsze niż znajomość języka.

cori
źródło
5
+1 za I think it would be worth your while to find a programming buddy who knows PHP to sit in on the interview process., świetna sugestia.
yannis,