Na przestrzeni kilku ostatnich lat zostałem zwerbowany do zespołu, który odpowiadał za rozmowy techniczne z kandydatami na stanowisko Frontend Developera. Poziomy wszelakie – od juniorów, przez midów, po seniorów. Nie było schematów. Musiałem wypracować sobie co będę pytał, dlaczego i czy będę robić jakieś zadanie testowe.
Wszystko to zebrałem w tym wpisie. Luźne przemyślenia na temat samej rekrutacji, wiedzy kandydatów, o co pytam, dlaczego. Rekrutowałem w czasie przed boomem AI jak i teraz. Dużo się nie zmieniło jeśli chodzi o kandydatów.
Zanim przejdę do pytań, opiszę swoje spostrzeżenia na temat pierwszego procesu rekrutacji.
Etap pierwszy – przeglądanie CV
Nie wierzcie, w to co piszą w internatach. AI nie odsiewa CV. Każde CV trzeba przejrzeć i zdecydować czy zaprosić na rozmowę. Trochę to trwało, bo trzeba było każde CV potem porównać z innym. Czy zakres technologii pasuje, czy robił podobne rzeczy które robi przyszły zespół kandydata.
Tutaj rada dla kandydatów: twórzcie CV pod konkretne oferty firm. Wysyłając to samo CV do wielu firm zwiększasz swoją szansę na odpadnięcie w już na pierwszym etapie.
Ale… są przypadki, gdzie dana firma ma podpisaną umowę z firmą outsourcingową (czasami na wyłączność). Następnie wiąże się to z tym, że bez względu na „jakość” kandydata trzeba było go przepytać. W przeciwnym razie będzie szła reklamacja.
Potężny rozstrzał wiedzy, superlatywy, duże ambicje, przereklamowane CV
Jeżeli ktoś kiedyś pisał, że kandydaci lubią wyolbrzymiać swoją rolę i zasługi w firmie/projekcie – to jest to zdecydowana prawda. Przeglądając CV od razu można było wyczuć, że kandydat specjalnie podkręcił swoje CV. Wiecie, jak widzisz takie zwroty jak lead developer czy key developer, to wiedz, że jest coś na rzeczy. Kandydatów z konkretami w CV mógłbym policzyć na palcach jednej ręki.
Firmy outsourcingowe, to inny poziom CV
Mistrzami takich CV są różnej maści tzw. kontraktornie (firmy outsourcingowe), które potrafią przesłać CV kandydata na 8-9 stron. Znaczna część tych stron to słowa kluczowe technologii o które otarł się kandydat w danym projekcie. A właściwie jego koledzy z zespołu. Potem taki kandydat dostaje pytanie o opowiedzenie o którymś projekcie, to okazuje się, że robił jakieś proste rzeczy, a za resztę rzeczy opisanych w CV odpowiadał kolega z zespołu.
Pytania rekrutacyjne dla frontend developera
Rozmowa techniczna z frontend developerem często wygląda podobnie. Pojawiają się pytania o JavaScript, React, wydajność czy architekturę aplikacji.
Dobry rekruter nie sprawdza jednak tylko wiedzy. Sprawdza sposób myślenia, rozumienie problemów i doświadczenie projektowe.
Poniżej znajdziesz 10 pytań, które często pojawiają się na rozmowach frontendowych. Przy każdym pytaniu pokazuję też:
- czego oczekiwać od Juniora
- czym powinien wykazać się Mid
- jak odpowiada Senior
To podejście pomaga szybko ocenić poziom kandydata.
0. Opowiedz o ostatnim problemie jaki napotkałeś i jak go rozwiązałeś
Pytanie na rozluźnienie, bo zawsze są emocje i stres. To pytanie pozwala mi też sprawdzić jak ktoś podchodzi to rozwiązywania problemów. W czym czuje się mocniejszy, jak myśli, jak tłumaczy. Jeżeli ktoś wysyła CV na frontenda, a jest fullstackiem i mówi jakie problemy na backendzie rozwiązywał, no to można się domyślić z czego jest mocniejszy. To pytanie weryfikuje też trochę CV, zakres obowiązków jakie kandydat miał w poprzednich projektach.
1. Czym różni się var, let i const?
To jedno z klasycznych pytań o podstawy JavaScript.
Junior
Powinien znać podstawowe różnice.
varma zakres funkcjileticonstmają zakres blokowyconstnie pozwala zmienić referencji zmiennej
Mid
Powinien rozumieć dodatkowe aspekty:
- hoisting
- temporal dead zone
- różnice w zachowaniu w pętlach
- mutowalność obiektów w
const
Senior
Powinien umieć wyjaśnić konsekwencje architektoniczne:
- dlaczego
varjest problematyczny w dużych aplikacjach - jak
constpoprawia czytelność kodu - jak reguły lintera wymuszają dobre praktyki
2. Co to jest closure w JavaScript?
Closure to jedno z najważniejszych pojęć w JavaScript.
Junior
Powinien wiedzieć, że: funkcja ma dostęp do zmiennych ze swojego zakresu zewnętrznego.
Mid
Powinien podać praktyczne przykłady:
- prywatne zmienne
- funkcje fabrykujące
- debounce / throttle
Senior
Powinien rozumieć:
- wpływ closure na zarządzanie pamięcią
- problemy z stale closures w React
- wzorce projektowe oparte o closure
3. Jak działa Virtual DOM?
Pytanie popularne przy rekrutacji do pracy z React.
Junior
Powinien wiedzieć, że:
- Virtual DOM to reprezentacja DOM w pamięci
- React porównuje zmiany i aktualizuje tylko potrzebne elementy
Mid
Powinien rozumieć:
- reconciliation
- diffing algorithm
- znaczenie
keyw listach
Senior
Powinien wyjaśnić:
- kiedy Virtual DOM nie poprawia wydajności
- jak działa batching
- różnice między Virtual DOM a podejściem np. signals
4. Co powoduje re-render komponentu w React?
Junior
Powinien wskazać:
- zmianę state
- zmianę props
Mid
Powinien wiedzieć:
- jak działa React reconciliation,
- czym jest
memo, - kiedy zmiana referencji powoduje render.
Senior
Powinien umieć analizować:
- problemy z render storms
- optymalizację z
useMemo,useCallback - strukturę komponentów w dużych aplikacjach
5. Co to jest event loop w JavaScript?
To pytanie sprawdza zrozumienie asynchroniczności.
Junior
Powinien wiedzieć, że JavaScript jest jednowątkowy i używa kolejki zdarzeń.
Mid
Powinien rozumieć:
- różnice między microtasks i macrotasks
- kolejność
PromisevssetTimeout
Senior
Powinien znać:
- wpływ event loop na wydajność UI
- mechanizmy takie jak scheduler w React
- strategie optymalizacji długich zadań
6. Jak optymalizować wydajność aplikacji frontendowej?
Junior
Powinien wskazać podstawy:
- lazy loading
- kompresję obrazów
- code splitting
Mid
Powinien znać:
- tree shaking
- bundle analysis
- caching
Senior
Powinien rozumieć:
- Core Web Vitals
- strategie SSR / SSG
- monitoring wydajności produkcyjnej
7. Co to jest CORS i dlaczego istnieje?
Junior
Powinien wiedzieć:
- że przeglądarka blokuje zapytania między domenami
Mid
Powinien wyjaśnić:
- nagłówki CORS
- preflight request
Senior
Powinien rozumieć:
- implikacje bezpieczeństwa
- konfiguracje w architekturze microservices
8. Jak zarządzać stanem w dużej aplikacji?
Junior
Powinien znać:
useState,useContext.
Mid
Powinien używać:
- Redux i znać paterny stosowane w nie np. featured based architecture,
- Zustand
- React Query – np. jak działa cache’owanie danych
Senior
Powinien mówić o:
- separacji server state i client state,
- architekturze store,
- strategiach skalowania aplikacji.
9. Jak testować frontend?
Junior
Powinien znać:
- testy jednostkowe
- narzędzia jak Jest
Mid
Powinien stosować:
- React Testing Library
- testy integracyjne
Senior
Powinien rozumieć:
- strategię testów
- testy E2E
- trade-off między testami a szybkością developmentu
10. Nietypowe pytanie: „Dlaczego czasem nie warto optymalizować kodu?”
To pytanie potrafi zaskoczyć kandydatów.
Junior
Często odpowiada: bo kod może być trudniejszy do czytania.
Mid
Powinien zauważyć:
- optymalizacja przed czasem jest błędem
- ważniejsza jest czytelność
Senior
Powinien powiedzieć coś w stylu: „Najpierw mierzymy problem”, „optymalizujemy tylko tam, gdzie są realne bottlenecks”.
To pokazuje dojrzałość inżynierską.
Jak widać, nie są to jakieś ciężkie pytania. W większości przypadków były one początkiem dyskusji.
Zadania live coding.
W zależności od zapotrzebowania w firmie przeprowadzaliśmy godzinne sesje live codingu. Kandydat dostawał zadanie w formie pliku md z wymaganiami, api, kontraktem itp. Trzeba było zaimplementować prosty feature, wiecie jak w normalnej pracy. Dostajesz zadanie, czytasz, dopytujesz o szczegóły itp. Podczas takiej sesji pojawiało się wiele ciekawych dyskusji jak i momentów, że już wiedzieliśmy, że kandydat mocno podkręcił swoje CV.
Jak oceniać odpowiedzi kandydatów?
Najlepsi frontend developerzy:
- tłumaczą dlaczego, a nie tylko co
- podają przykłady z projektów
- potrafią mówić o trade-offach
Dlatego podczas rozmowy warto zadawać pytania pogłębiające, np.:
- „Dlaczego tak uważasz?”
- „Jak rozwiązałeś to w poprzednim projekcie?”
Dzięki temu szybko zobaczysz rzeczywisty poziom doświadczenia kandydata.