Do rekrutacji na juniora przygotowujesz się praktyką, nie wkuwaniem. Zacznij wtedy, gdy myślisz już o wysłaniu CV: uzupełnij teorię i sprawdź, co może Cię czekać w trakcie procesów rekrutacyjnych. Jak wyglądają poszczególne etapy, opisałem w artykule Proces rekrutacji programisty. Tutaj skupiam się na tym, jak się do nich przygotować i jakie pytania padają najczęściej.

Rozmowy rekrutacyjne znam z obu stron stołu, więc wiem, na co firmy patrzą. Poniżej to, na czym warto skupić czas, i to, na co szkoda go tracić.

Nauka „na pamięć”

Wkuwanie definicji na pamięć mija się z celem. Na rozmowie rekrutacyjnej szybko widać, czy rozumiesz temat, czy tylko nauczyłeś się go na pamięć. Zwykle wystarczy jedno pytanie dopytujące. Dlatego najważniejsza jest praktyka. Gdy przerobisz zagadnienie w kodzie, rozumiesz je dużo lepiej. A te nieliczne rzeczy, które trzeba po prostu pamiętać, zostają w głowie znacznie dłużej, jeśli dużo programujesz.

Czego uczyć się pod kątem procesów rekrutacyjnych?

Pierwszym etapem w procesie rekrutacyjnym na stanowiska juniorskie i staże jest często test. Czasem zawiera pytania o konkretne zagadnienie, a czasem fragment kodu, przy którym trzeba wskazać, co wypisze się na ekranie. Przerób typowe pytania rekrutacyjne z technologii, w której się rozwijasz. Przykłady znajdziesz poniżej.

Skup się na fundamentach języka, a nie na tematach zaawansowanych czy niszowych. Szansa, że w rekrutacji pojawią się najbardziej sztampowe zagadnienia, jest dużo większa. Nie trać czasu na próbę nauczenia się „wszystkiego”. Tematów jest za dużo, żeby ogarnąć wszystkie, więc wybieraj.

Na niektórych testach mogą pojawić się pytania (prawdopodobnie) dość mocno oderwane od tego, czym zajmowałbyś się jako programista, np. o sieciach. Łatwiej będzie wtedy osobom po studiach technicznych. Jeśli ich nie masz, nie przejmuj się i postaw na fundamenty związane stricte z programowaniem. Sam nie mam studiów technicznych, a pierwszą pracę jako Java Developer dostałem po pół roku nauki w domu.

Oprócz samego języka poznaj ogólne koncepty projektowe, takie jak SOLID, KISS, DRY czy YAGNI. Możesz się spodziewać, że te tematy pojawią się w rekrutacji. Co ważniejsze, mają duże znaczenie w praktyce i trudno bez nich wyobrazić sobie „czysty” kod.

Przykładowe pytania rekrutacyjne dla juniora

Poniższe pytania pojawiają się na rozmowach juniorskich bardzo często. Nie ucz się odpowiedzi na pamięć. Spróbuj odpowiedzieć własnymi słowami i pokazać to na prostym przykładzie w kodzie.

Java

  • Czym różni się == od equals()? Dlaczego nadpisując equals(), trzeba nadpisać też hashCode()?
  • Czym różnią się ArrayList, LinkedList, HashSet i HashMap?
  • Na czym polegają filary programowania obiektowego: hermetyzacja, dziedziczenie, polimorfizm i abstrakcja?
  • Czym różni się klasa abstrakcyjna od interfejsu?
  • Dlaczego String jest niemutowalny i kiedy warto użyć StringBuilder?
  • Czym różnią się wyjątki checked i unchecked?

Python

  • Czym różni się lista od krotki (tuple)? Kiedy użyjesz słownika, a kiedy zbioru?
  • Które typy są mutowalne, a które nie? Dlaczego lista jako domyślna wartość argumentu funkcji to zły pomysł?
  • Co to jest list comprehension?
  • Co oznaczają *args i **kwargs?
  • Czym jest dekorator?
  • Czym różni się is od ==?

JavaScript i frontend

  • Czym różnią się var, let i const?
  • Czym różni się == od ===?
  • Co to jest domknięcie (closure)?
  • Jak działa asynchroniczność w JavaScripcie? Czym są Promise i async/await?
  • Czym różnią się props od state w React?
  • Jak zrobić responsywny układ strony (flexbox, grid, media queries)?

SQL i bazy danych

  • Czym różnią się INNER JOIN i LEFT JOIN?
  • Do czego służy GROUP BY i czym HAVING różni się od WHERE?
  • Czym jest klucz główny, a czym klucz obcy?
  • Co to jest indeks i kiedy warto go dodać?
  • Napisz zapytanie, które zwróci 3 najlepiej zarabiające osoby z tabeli pracowników.

Pytania ogólne

  • Czym różnią się metody HTTP GET, POST, PUT i DELETE? Co oznaczają kody odpowiedzi 200, 404 i 500?
  • Co to jest REST API?
  • Czym różni się git merge od git rebase? Jak rozwiązujesz konflikty?
  • Co oznaczają zasady SOLID, DRY i KISS?
  • Po co pisze się testy jednostkowe?

Pytania o projekty i pracę z AI

  • Opowiedz o swoim projekcie: co było najtrudniejsze i co zrobiłbyś dziś inaczej?
  • Dlaczego wybrałeś taką technologię lub bazę danych?
  • Jak korzystasz z AI przy programowaniu? Jak sprawdzasz kod, który wygenerowało?
  • Kiedy świadomie nie korzystasz z AI?

Jak przygotować się do live codingu?

Na live codingu stres potrafi zablokować nawet osobę, która dobrze zna podstawy. Najlepszy sposób, żeby temu zapobiec, to regularna praktyka w warunkach podobnych do rozmowy:

  • Rozwiązuj proste zadania na platformach takich jak Codewars, Exercism czy LeetCode (na juniora zwykle wystarczą zadania z poziomu „easy”). Bez pomocy AI i z limitem czasu, np. 30 minut.
  • Mów na głos, co robisz, nawet jeśli ćwiczysz sam. Na rozmowie przyjdzie Ci to dużo naturalniej.
  • Poproś znajomego programistę o próbną rozmowę albo nagraj się podczas rozwiązywania zadania.
  • Wróć do swoich projektów i dopisz do nich małą funkcję od zera, bez podpowiedzi AI.

Jak opowiadać o swoich projektach?

Projekty z portfolio to często główny temat rozmowy z juniorem. Przygotuj krótką (2–3 minuty) historię każdego z nich: jaki problem rozwiązuje, z jakich technologii korzysta i dlaczego, co było najtrudniejsze i czego się przy nim nauczyłeś. Bądź gotowy na pytania o konkretne fragmenty kodu. Jeśli przy projekcie pomagało Ci AI, musisz umieć wyjaśnić każdą linijkę. To w tej części rozmowy najszybciej widać, czy projekt jest naprawdę Twój. Przećwicz też taką historię po angielsku, bo część rozmowy może odbyć się w tym języku.

Próbna rozmowa z AI

Dobrym treningiem jest też próbna rozmowa z ChatGPT, Claude lub innym asystentem AI. Możesz zacząć np. tak:

„Przeprowadź ze mną rozmowę rekrutacyjną na stanowisko Junior [Java] Developer. Zadawaj mi pytania po jednym i czekaj na moją odpowiedź. Po każdej odpowiedzi oceń ją i powiedz, czego zabrakło.”

Jeśli Twój asystent ma tryb głosowy, skorzystaj z niego. Odpowiadanie na głos to lepszy trening niż pisanie. Szybko zobaczysz, gdzie masz braki. Weryfikuj jednak to, co odpowiada, bo AI też się myli.

Podsumowanie

Etap nauki teorii pod testy i rozmowy nie powinien być długi. Praktycznie równolegle możesz zacząć wysyłać CV i cały czas szlifować wiedzę. Skup się na tematach, które w rekrutacji pojawiają się z największym prawdopodobieństwem, i regularnie ćwicz pisanie kodu na żywo. Na start to w zupełności wystarczy.