Z jakimi pytaniami z języka programowania PHP możesz się spotkać na rozmowie rekrutacyjnej? Poniżej przedstawiamy najczęściej pojawiające się pytania i odpowiedzi.
1. Czym jest OOP (programowanie obiektowe)?
To taki paradygmat programowania, w którym programy definiowane są za pomocą obiektów łączących atrybuty i procedury. Program obiektowy składa się ze zbiorów projektów komunikujących się ze sobą, w celu wykonywania konkretnych zadań. Metoda programowania obiektowego jest najbardziej naturalna, tj. zbliżona do przetwarzania informacji przez ludzki mózg. Programowanie obiektowe polega na definiowaniu obiektów oraz wywoływaniu ich metod, tak aby współdziałały ze sobą.
Pojęcia związane z programowaniem obiektowym:
- polimorfizm (nadpisywanie metod np. metoda klasy nadrzędnej może zostać nadpisana metodą klasy podrzędnej);
- hermetyzacja/enkapsulacja (ukrywanie metod i właściwości klasy, by były dostępne jedynie wewnątrz konkretnej klasy lub klas potomnych za pomocą słów kluczowych: private, protected, public);
- dziedziczenie (klasy mogą rozszerzać funkcje oraz właściwości przez dziedziczenie innych klas).
2. Jaka jest różnica między klasą abstrakcyjną a interfejsem?
Klasa abstrakcyjna – nie można z niej utworzyć obiektu, może być jedyne rozszerzana przez inne klasy. Może zawierać implementacje oraz deklaracje metod, które powinny zostać zaimplementowane klasie abstrakcyjnej przez klasę rozszerzającą za pomocą słowa kluczowego „extends”.
Interfejs – to instrukcja implementacji poszczególnych metod, która może zawierać metody publiczne oraz stałe. Konkretna klasa może implementować wiele interfejsów. Konkretny interfejs może rozszerzać inny interfejs za pomocą słowa kluczowego „implements”.
3. Jak działa sesja?
Sesja pozwala na przechowywanie stanu aplikacji pomiędzy poszczególnymi zapytaniami HTTP. Jeśli użytkownik strony, na której zaimplementowano sesję, loguje się np. na swoje konto, zostaje mu przypisany unikalny i losowy identyfikator przesyłany pomiędzy kolejnymi zapytaniami za pomocą plików cookie lub parametru PHPSESSID. Na podstawie tego identyfikatora ładują się odpowiednie zapamiętane dane na stronie np. ustawione przez zalogowanego użytkownika filtry, nawet po odświeżeniu strony.
4. Co to jest SOLID?
SOLID to pięć podstawowych zasad programowania obiektowego, które sprawiają, że kod jest bardziej wydajny i odporny na błędy oraz można go łatwiej rozszerzać.
[S] Single Responsibility Principle (SRP) [O] Open/Closed Principle (OCP) [L] Liskov Substitution Principle (LSP) [I] Interface Segregation Principle (ISP) [D] Dependency Inversion Principle (DIP)5. Jakie znaczące zmiany zaistniały w PHP w ciągu ostatnich lat?
- wykorzystanie eksperymentalnej gałęzi PHPNG jako bazy PHP 7, mającej na celu optymalizację wydajności przez refaktoryzację. Głównym punktem testowania PHPNG był Wordpress, który wskazał niemal 100% wzrost wydajności;
- ulepszenie składni zmiennych (jest bardziej spójna i kompletna) jako odpowiedź na najczęściej wskazywane problemy z PHP;
- wprowadzenie typów skalarnych: string, integer, float, boolean w typowaniu argumentów funkcji;
- dodanie kompilatora JIT (Just-In-Time) w PHP 8 z 2020 r.
- dodanie static jako typu zwracanej wartości;
- wprowadzenie mechanizmu do przechowywania referencji WeekMaps, który pozwala na ich usuwanie przy użyciu garbage collectora.
6. Opisz różnice między $_GET oraz $_POST.
Metody GET i POST to dwie odrębne metody wysyłania informacji przez komputer do serwera www. GET wysyła informacje, dołączając je do żądania strony. POST wysyła informacje przez HTTP.
Informacje zwracane w odpowiedzi na GET są ogólnodostępne dla każdego użytkownika. Ze względu na dostępność nie zaleca się wysyłania tą metodą wszelkich informacji poufnych np. haseł.
Informacje zwracane w odpowiedzi na POST nie są ogólnodostępne dla każdego użytkownika, nie wyświetlają się w pasku URL. Nie ma żadnego ograniczenia co do ilości przesyłanych danych, co więcej, POST obsługuje wieloczęściowe binarne dane wejściowe podczas przesyłania plików do serwera.
7. Czym jest polimorfizm?
Polimorfizm, czyli wielopostaciowość, to nadpisywanie metod np. metoda klasy nadrzędnej może zostać nadpisana metodą klasy podrzędnej.
8. Co to jest PSR?
PSR, czyli PHP Standard Recommendation – to zbiór dokumentów określających różne standardy używane w języku PHP np. PSR-1 oraz PSR-2, które określają ogólne standardy dotyczące kodowania w języku PHP.
9. Opisz ładowanie klas w PHP.
Automatyczne ładowanie klas w PHP trzeba zarejestrować przy użyciu funkcji spl_autoload_register(). Można używać również globalnej funkcji __autoload(), ale trzeba pamiętać o tym, że w ten sposób można zdefiniować tylko jedną funkcję na raz.
10. Na czym polega hermetyzacja/enkapsulacja?
Hermetyzacja/enkapsulacja to ukrywanie metod i właściwości klasy, by były dostępne jedynie wewnątrz konkretnej klasy lub klas potomnych za pomocą słów kluczowych: private, protected, public.
Wszystkie powyższe pytania zostały opracowane na podstawie rozmów z klientami TeamQuest, którzy prowadzili rozmowy rekrutacyjne na PHP Developerów.