17.10.20227 min

Redakcja Bulldogjob

PHP Developer – pytania rekrutacyjne + odpowiedzi

Dowiedz się, jak przygotować się do rozmowy kwalifikacyjnej PHP Developera i poznaj przykładowe pytania rekrutacyjne!

PHP Developer – pytania rekrutacyjne + odpowiedzi

PHP, choć nie brakuje języków i technologii, które mogłyby go zastąpić, trzyma się mocno – dziś jego znajomość deklaruje 17% wszystkich ankietowanych, którzy wzięli udział w Badaniu Społeczności IT przeprowadzonym przez Bulldogjob. Jest to także czwarty najpopularniejszy język wykorzystywany do budowania backendu aplikacji webowych. 

To nie powinno dziwić. Choć szczyt popularność PHP ma już raczej dawno za sobą, to jednak nadal jest aktywnie rozwijany i w kolejnych dużych wersjach zyskuje kolejne usprawnienia, np. liczne mechanizmy przekładające się na optymalizację czy dodane w wydanej w 2020 roku wersji 8.0 interpretacji Just-In-Time. 

W takim kontekście warto zastanowić się, jak przebiegać może rozmowa kwalifikacyjna na stanowisko PHP Developera oraz prześledzić przykłady najczęściej zadawanych pytań. Oczywiście wraz z odpowiedziami.


PHP Developer w Polsce

Jak już wspomniano, choć najlepsze lata pod względem popularności PHP ma już raczej za sobą, to jednak w Polsce nadal cieszy się relatywnie dużą popularnością. Co prawda nadal nie jest już językiem „pierwszego wyboru”, to jednak pod względem popularności języków backendowych plasuje się tuż poza podium.

Zanim zatem przejdziemy do omawiania potencjalnych scenariuszy, według których potoczyć może się rozmowa kwalifikacyjna, warto wyjaśnić, jak w ogóle prezentują się zarobki PHP Developera w Polsce. W przypadku zatrudnienia na podstawie umowy o prace liczyć można średnio 6709 zł netto. Jeśli zaś chodzi o współpracę na bazie umowy B2B średnia to już 14473 zł, przy czym należy zaznaczyć, że jest to kwota netto na fakturze, z której należy opłacić jeszcze podatki oraz ubezpieczenie. Freelancerzy zatrudniani najczęściej na podstawie umów cywilnoprawnych mogą zaś liczyć średnio na 5587 zł netto.

Rzecz jasna należy zauważyć, że mowa tutaj o kwotach stanowiących średnie arytmetyczne zarobków wszystkich ankietowanych programistów PHP – od świeżo upieczonych juniorów po najbardziej doświadczonych dla developerów. Warto więc przytoczyć dane dotyczące mediany zarobków. Ta w przypadku przykładowego mida z trzyletnim doświadczeniem zatrudnionego na podstawie UoP wynosi ok. 10 tys. zł, zaś w ramach B2B - ok. 12 tys. zł.


Frameworki PHP

Bez wątpienia jednym z elementów przygotowania do rozmowy kwalifikacyjnej na stanowisko PHP Developera jest przypomnienie sobie najważniejszych informacji tak o samym języku, jak i najpopularniejszych narzędziach developerskich, na czele z frameworkami. Przyjrzyjmy się czołówce tych aktualnie najpopularniejszych. 

  • Symfony – zdecydowanie najpopularniejszy w tej chwili framework PHP, z którego korzystanie deklaruje aż 41% wszystkich PHP Developerów. Bazujący na wzorcu Model-View-Controller opensource’owy framework cieszy się wielką popularnością od lat i pozostaje głównym wyborem, jeśli chodzi o tworzenie backendu aplikacji webowych. Symfony w dużej mierze tworzone było na podobieństwo javowego frameworku Spring. Wśród najważniejszych cech należy wymienić elastyczny routing URI, wygodne mechanizmy pozwalające na ponowne wykorzystanie kodu i ułatwiające jego utrzymanie, sprawne logowanie błędów. Symfony jest cenione przede wszystkim za wydajność, ale trudno także przecenić aktywną i pomocną społeczność użytkowników. 
  • Laravel – kolejny framework PHP odl wielu lat znajdujący się w ścisłej czołówce najpopularniejszych narzędzi developerskch programisty PHP. Realizowany jest model MVC wzorowany na implementacji znanej z Symfony. Wśród najważniejszych cech należy wymienić różnorakiego sposoby obsługi relacyjnych baz danych czy autorski menedżer zależności pomiędzy paczkami. Będąc już przy paczkach, nie sposób nie wspomniec o Bundles – mocnej stronie Laravela w postaci modularnego systemu zarządzania paczkami. Zaletą jest także ścisła integracja frameworka z modułem pozwalającym na wygodne przeprowadzanie testów jednostkowych. Całość udostępniania jest na licencji MIT, a kod źródłowy znaleźć można na GitHubie.
  • Laminas/Zend – framework przez wiele lat rozwijany przez organizację, która ma duży udział w rozwoju samego PHP, jak i prowadzi bodaj najbardziej uznany program certyfikacji dla PHP Developerów. Od jakiegoś czasu pieczę nad Laminas (wcześniej Zend) trzyma Linux Foundation i framework dystrybuowany jest na licencji BSD. Poskutkowało to tym, że nie mamy do czynienia z jednolitym wersjonowaniem, lecz z modelem, w którym każdy z licznych komponentów roziwjany jest w dużej mierze niezależnie. Laminas obsługuje w zasadzie wszystkie najpopularniejsze bazy danych, wykorzystuje architekturę use-at-will dzięki wspomnianym luźno związanym ze sobą komponentom. Całość działa w modelu MVC.
  • Yii – relatywnie młody framework, który rozwijany jest z naciskiem na prostotę,  szybkość działania i bezpieczeństwo. Oferuje on liczne narzędzia przyśpieszające prace nad aplikacjami, jak np. komponent Gii pozwalający na automatyzację pracy z kodem. Yii zapewnia także ochronę przed atakami XSS czy mechanizm walidacji ciasteczek, który skutecznie zapobiega wstrzykiwaniem w nie złośliwego kodu. Wpływ na wyróżniającą szybkość Yii mają natomiast mechanizmy cache’owania, który zwiększa responsywność i wydajność aplikacji webowych rozwijanych z użyciem Yii.


Przykładowe pytania

Kolejnym etapem rozmowy kwalifikacyjnej mogą być już konkretne pytania rekrutacyjne. Tutaj warto wyróżnić dwa rodzaje – te teoretyczne, które będą wymagać mniej lub bardziej rozbudowanej odpowiedzi, oraz praktyczne. 

W przypadku tych drugich kandydat może mieć do czynienia np. z przykładem kodu i zostanie poproszony o to, jak zostanie on zinterpretowany przez serwer. Zazwyczaj zwierać on będzie podchwytliwy element charakterystyczny dla PHP, na który należy zwrócić uwagę – warto więc zwracać uwagę na szczegóły.

Jeśli zaś chodzi o pytania teoretyczne, to mogą one dotyczyć zarówno ogólników, jak i bardziej szczegółowych informacji. Poniżej prezentujemy wybrane, najczęściej wykorzystywane podczas rozmów kwalifikacyjnych przykłady. 


Jakie są typy danych w PHP?

W PHP wyróżnia się 8 głównych typów danych, które nie odbiegają znacząco od tego, co znamy z innych języków programowania. Przypomnijmy jednak:

  • String – tekstowy tryb danych,
  • Integer – liczby całkowite,
  • Float – typ danych dla liczbowych wartości zmiennoprzecinkowych, 
  • Boolean – logika Boole’a, czyli prawda lub fałsz,
  • Array – tablice pozwalające przechowywać wiele wartości w jednej zmiennej,
  • Object – obiekt stanowiący instancję klasy i dziedziczą jej właściwości, ale właściwości każdego obiektu mogą mieć inne wartości,
  • NULL – typ danych dla zmiennych, które nie mają przypisanej wartości,
  • Resource – nietypowy quasi-typ dla danych stanowiących referencję do funkcji i zasobów zewnętrznych, np. wywołanie danych z bazy danych.


Jakie rodzaje tablic można wykorzystywać w PHP?

W PHP wykorzystywać można trzy rodzaje tablic:

  • Tablice indeksowane – najprostszy rodzaj tablicy, w której kolejne elementy są po prostu numerowane, zwizualizować można to sobie jako dwuwierzową tabelę, w której w górnym wierszu będą kolejne liczby n+1, zaś w dolnej dowolne wartości przypisane do tych liczb. W takim wariancie tablica przechowuje po prostu kolejne zmienne, np.

<?php
$tablica=array(16,20,1,50,8)
?>

  • Tablice asocjacyjne –w tym przypadku indeks zamiast znanego z tablic indeksowanych kolejnych liczb mamy dowolne wartości typu string. Nie mamy tu już zatem liczb, dzięki którym z tablicy można wywołać konkretną wartość, ale tzw. klucze, czyli właśnie wartości typu tekstowego. Przykład:

<?php
$tablica=array(
“pierwszy_klucz” => “wartosc pierwszego klucza”
“setny_klucz” => “jakaś sobie wartość”
?>


  • Tablice wielowymiarowe – jak wskazuje sama nazwa, mamy tu już do czynienia z tablicą bardziej złożoną niż posiadającą tylko dwa wiersze. Stosować można tutaj dowolną liczbę kolumn i wierszy, zaś aby uzyskać dostęp do danej wartości, trzeba wskazać jej położenie w tablicy, używając dwóch wymiarów.


Jak w PHP zhaszować hasła?

Najpopularniejszą metodą przetworzenia hasła przez funkcję skrótu jest wykorzystanie funkcji crypt(). Wariantywnie można tu wykorzystać parametr salt, wraz z określeniem długości. Obsługiwanych jest wiele funkcji skrótu, jak np. DES, MD5, Blowfish, SHA-256 czy SHA-512.


Co to jest PDO?

PDO w PHP to skrót od PHP Data Object. Jest to rozszerzenie języka PHP, dzięki któremu uzyskać można jednolity interfejs pozwalający na nawiązywanie połączeń z różnorakimi bazami danych. Kluczowe jest to, że niezależnie od tego, z jaką bazą danych mamy do czynienia, PHP Data Object pozwala na wykorzystanie tych samych, jednolitych metod. Wśród baz danych obsługiwanych przez PDO można wymienić w zasadzie wszystkie najpopularniejsze: PostgreSQL, MySQL, MS SQL i wiele innych.


Czym jest i do czego służy cURL?

cURL to biblioteka pozwalająca na transfer danych i na ułatwienie zarządzania URL-ami w PHP i wielu innych językach programowania. Działa ona po stronie klienta i pozwala na wysyłanie zapytań przez HTTP oraz wiele innych protokółów: pobieranie danych różnych rodzajów z wielu różnych źródeł, a także wysyłanie danych z formularzy. Możliwe jest wykorzystywanie serwerów proxy, wykorzystanie SSL czy wykorzystywanie ciasteczek.


Co to jest type hinting?

Type hinting pozwala na wskazanie oczekiwanego typu danych. Robi się to w odniesieniu do argumentów podczas deklarowania funkcji. Jeśli dany argument nie będzie przechowywał wartości o określonym typie danych, wówczas w toku interpretacji wyświetlony zostanie błąd. Eliminuje to konieczność każdorazowego sprawdzania jakiego typu jest dana wartość.

Jakie są rodzaje błędów w PHP?

W PHP mamy do czynienia z czterema różnymi rodzajami błędów:

  • Warning – jest to raczej komunikat ostrzegający o problemach, niż stricte komunikat o błędzie. Warning Error nie przerywa bowiem interpretacji skryptu, a jedynie sygnalizuje problem, który w przyszłości może eskalować.
  • Fatal – fatal error to krytyczny błąd, który uniemożliwia działania programu i go crashuje. Najczęściej powodem takiego stanu rzeczy jest wyorzystanie w skrypcie niezdefiniowanej klasy lub fumkcji. Można tu wyróżnić trzy podgrupy: startup error (brak możliwości rozpoczęcia interpretacji skryptu), compile time fatal error (wyświetlany, gdy wykorzystywane mają być nieistniejące dane) oraz runtime fatal error (błąd napotkany już po poprawnej interpretacji, w dalszej części intepretacji kodu).
  • Notice – pomniejsze błędy, które – podobnie jak warning errors – nie zatrzymują wykonywania skryptu. Występuje najczęściej, gdy wywołana jest niezdefiniowana zmienna.
  • Parse – parse error w PHP to po prostu efekt błądu w składni. Po rozpoznaniu takiego błędu przez silnik, skrypt jest zatrzymywany.


Przydatne linki

Tradycyjnie zamiast podsumowania, wszystkich zainteresowanym rozwojem w kierunku PHP polecamy artykuły, które mogą okazać się bardzo przydatne:

<p>Loading...</p>