Zmieniam pracę – TOP 5 pytań na rekrutacji

Hej hej, dziś popiszę o rekrutacji i jakie są najczęściej zadawane pytania rekrutacyjne odnośnie PHP. A wiem, bo ostatnio trochę ich przeszedłem 😉

Zmiana pracy w karierze programisty jest czymś normalnym, potrzebujemy bowiem rozwoju i nowych wyzwań. Często też większych pieniędzy i nowych możliwości. Tak też stało się w moim wypadku i po roku pracy w radomskiej firmie outsourcingowej jako programista php, postanowiłem ruszyć dalej. Co więcej, przeprowadziłem się do Krakowa, gdzie możliwości są znacznie większe. A i do gór blisko 🙂

Z każdą (prawie) rekrtuacją wiąże się pewien proces, a w nim też pytania zarówno badające umiejętności twarde jak i miękkie. W tym wpisie chciałbym podzielić się z Wami pytaniami, które sam otrzymałem na każdej rozmowie, którą odbywałem miesiąc temu.

Co to jest SOLID?

Pytanie może mieć dwa wymiary. Czym ogólnie jest SOLID (czy też KISS, DRY itp) oraz rozwinąć poszczególne litery akronimu. Osoby, które prowadziły moje interview raczej pytały ogólnie, raz zdażyło się, że była potrzeba rozwinięcia i opisania, w tym wypadku litery o (Open-Closed Principle). Dla tych, którzy jeszcze nie wiedzą czym jest SOLID, to zasady, dobre praktyki jeśli chodzi o programowanie i to nie tylko w PHP. O SOLID napiszę jeszcze artykuł w bliskiej przyszłości.

Czym różni się interfejs od klasy abstracyjnej?

Podstawa programowania obiektowego. Odpowiedź, że w interfejsie mamy tylko metody abstrakcyjne, które nie mają swojej implementacji, a klasa abstrakcyjna może posiadać zwykłe metody jak i metody abstrakcyjne może być niewystarczająca. Warto dodać, że w PHP możemy dziedziczyć po jednej klasie (bezpośrednio), a implementować interfejsów możemy dowolną ilość. Interfejsy mogą mieć stałe oraz publiczne metody, klasa abstrakcyjna może mieć wszystko, co normalna klasa. Warto dodać, że interfejsy mogą się rozszerzać. Z obu też nie tworzymy konkretnej instacji.

Metody magiczne w PHP

Metod magicznych w PHP mamy 14, ja dostałem pytanie o 5, które są najpopularniejsze chyba. Są to __get(), __set(), __invoke(), __toString(), __clone(). Myślę, że nie ma potrzeby kopiować dokumentacji, która doskonale mówi, co poszczególne metody robią: http://php.net/manual/en/language.oop5.magic.php

Co to jest PSR?

Brak tego pytania może źle wróżyć. Dlaczego? PSR to PHP Standard Recommendation, a więc coś, co warto znać i się tego trzymać. Oczywiście firma może mieć swój standard kodowania, ale najgorsza możliwa opcja, to brak standardów.

PSR obejmuje też inne dziedziny tworzenia w PHP prócz tzw. Code Style (PSR-1, PSR-2). To również standard dot. np autoloadingu klas (PSR-0, PSR-4) i tu też może padać pytanie czym się różnią od siebie te dwa standardy prócz tego, że jeden jest starszy, drugi młodszy. Otóż, PSR-0 działa na zasadzie struktury katalogowej, która odzwierciedla namespace’y, PSR-4 pozwala na dostosowanie tego.

Znajomość wzorców projektowych

To też standard i myślę, że dobrze znać kilka wzorców. Ogólnie, nawet jeśli się ich nie zna, często nieświadomie się je stosuje. My jednak chcemy być świadomymi programistami. Warto więc zapoznać się z kilkoma podstawowymi jak na przykład wzorzec strategia, budowniczy, fabryka czy dekorator, o którym pisałem tutaj. W przypadku wzorców, padało też pytanie o singleton, raz wystarczyła odpowiedź, że to antywzorzec (tak naprawdę od tego zaczynałem odpowiedź, chcąc rozwinąć). Raz tylko zapytano mnie jak go zaimlpementować w PHP. To taka wyjątkowa sytuacja. Normalnie implementując singleton wystarczy prywatny konstruktor i statyczna metoda dostępowa. W PHP trzeba jeszcze zapobiec klonowaniu przez metodę magiczną __clone().

To wszystko?

Oczywiście pytania padały różne, m.in. czym jest MVC, co to jest iterator, o co chodzi z indeksami w bazie danych, różnice między joinami, różnica między pdo a mysql(i), czym jest metoda finalna i tak dalej. Ja wymieniłem TOP5 tematów, które pojawią się niemal napewno na każdej rozmowie.

Na dziś to wszystko. Stay tuned 🙂