Masz wrażenie, że nikt nie czyta Twojego CV? Nie dostajesz zaproszeń na rozmowy rekrutacyjne?
Sprawdź swoje umiejętności techniczne a MockIT pomoże Ci znaleźć pracę w IT!
Rozmowa kwalifikacyjna Java - zagadnienia o których musisz pamiętać
Przygotowujesz się do rozmowy kwalifikacyjnej z Javy? Jeżeli tak, to świetnie trafiłeś - przedstawimy Ci dziś zbiór zagadnień, które każda osoba przygotowująca się do rozmowy rekrutacyjnej na poziomie Mid lub Junior powinna sobie przypomnieć.
Intro
Mogę cię zapewnić, że solidna znajomość podstaw Javy to przepustka do udanej rozmowy rekrutacyjnej. Rekruter będzie mógł zadawać coraz to trudniejsze pytania, a to właśnie poprawne i obszerne odpowiedzi na te zagadnienia pozwolą Ci wyróżnić się spośród tłumu kandydatów.
Zbiór przedstawionych zagadnień możesz potraktować jako checklistę do której warto zajrzeć przed każdą rozmową rekrutacyjną na pozycję Java Developera. W liście zostały umieszczone zagadnienia tylko z Javy - Spring, Hibernate, SQL, git oraz przykładowe pytania rekrutacyjne wraz z odpowiedziami zostaną omówione w osobnym artykule.
Rozmowa rekrutacyjna na stanowisko Junior Java Developer - lista tematów, które trzeba sobie przypomnieć przed rozmową rekrutacyjną.
Java Core
Na początek coś na rozgrzewkę - podstawowe koncepty języka Java. Jest ich wiele, jednakże w kontekście rekrutacji najważniejsze z nich to:
programowanie obiektowe (omówione poniżej),
przeciążanie (overloading) oraz nadpisywanie (overriding) metod,
wyjątki (omówione później)
przekazywanie przez wartość (Pass-by-Value) i przez referencję (Pass-By-Reference),
prymitywne i nie prymitywne typy danych (konstruktory, autoboxing oraz unboxing),
słowo kluczowe final (czy możemy zadeklarować final konstruktor?),
zmienne (statyczne, globalne, lokalne)
Kolekcje
Bez dobrej znajomości kolekcji, nie ma co do rekrutacji nawet startować - w końcu przechowywanie obiektów i manipulowanie grupami obiektów to podstawowa czynność w programowaniu.
Z totalnych must have to na pewno listy, sety, mapy (które teoretycznie nie implementują interfejsu Collection, aczkolwiek należą do Java Collection Framework), ale na pewno nie zaszkodzi również przypomnienie sobie czym są kolejki, jakie są złożoności obliczeniowe oraz do jakich celów najlepiej jest używać poszczególnych kolekcji.
Kolekcje oparte na hashowaniu
Ten temat zdecydowanie zasługuje na osobny podpunkt. Kolekcje hashujące to takie, które do efektywnego wyszukiwania i manipulowania elementami wykorzystują funkcje hashującą. Oprócz znajomości najbardziej popularnych kolekcji jak np. HashMapa czy HashSet trzeba pamiętać o metodach hashCode i equals oraz o kontrakcie pomiędzy nimi.
Na pewno przydatne będzie przypomnienie sobie jak wygląda implementacja HashMap’y oraz czym są kolizje czy efekt 'gubienia' się obiektów w HashMapie
Wyjątki
Pytania o wyjątki pojawiają się bardzo często - w końcu praca z nimi jest chlebem powszednim dla każdego programisty, więc i Ty, nawet na poziomie Juniora musisz sprawnie się w tym temacie poruszać. O wiedzy na temat checked i unchecked exceptions oraz o obsłudze wyjątków przy pomocy try lub throws chyba nie muszę przypominać, ale nie daj się zaskoczyć też trudniejszym pytaniom choćby o wyjątki w wyrażeniach lambda.
Wielowątkowość
Temat z którym może nie każdy developer ma styczność na co dzień, jednakże na rozmowach rekrutacyjnych cieszy się on popularnością. Wielowątkowość otwiera oczy na wiele aspektów wytwarzania oprogramowania, dlatego warto się z nią zapoznać, niezależnie od tego, czy ma się z nią codzienny kontakt, czy też nie. Na sam początek poczytaj o: zakleszczeniu i zagłodzeniu wątków, race condition oraz o tym jak wielowątkowość jest wspierana w Javie - synchronized, thread, volatile.
Programowanie obiektowe
Wiedza z programowania obiektowego jest kluczowa - w końcu język Java to język obiektowy. Z zamkniętymi oczami powinieneś móc wymienić paradygmaty programowania obiektowego, czym jest SOLID oraz jaka jest różnica pomiędzy interfejsem a klasą abstrakcyjną. Niezbędna jest również wiedza na temat dziedziczenia, nadpisywania metod, deklarowania zmiennych oraz czym są modyfikatory dostępu w Javie.
Obiekty immutable
Pytania odnośnie obiektów immutable pojawiają się na rozmowach często, a pytanie jak stworzyć obiekt immutable, jest jednym z bardziej cieszących się popularnością. Oprócz odpowiedzi na nie, nie zapomnij także o takich podstawach jak to, kiedy i po co takich obiektów używamy.
Zarządzanie pamięcią i Garbage Collector
Znajomość tych zagadnień jest niezbędna do świadomej pracy z JVM. Niestety, w tych tematach możesz się spodziewać od rekrutera pytań z bardzo szerokiego zakresu. Z takich must have to na powinieneś wiedzieć czym jest stos (stack), sterta (heap) i na co się ona dzieli, typy Garbage Collectorów i algorytmy wykorzystywane przez Garbage Collector (te dwa ostatnie zagadnienia zahaczają już o poziom midowy).
Wzorce projektowe
Temat wzorców projektowych jest bardzo rozległy i w ogólności nie dotyczy on tylko Javy. Na poziomie juniorskim warto zaznajomić się z podziałem wzorów na grupy oraz zapoznać się przynajmniej z kilkoma najpopularniejszymi wzorcami takimi jak np. singleton, builder, factory czy strategy.
Warto zastanowić się nad podstawowym pytaniem: dlaczego wzorców projektowych się w ogóle uczymy? Odpowiedź na to pytanie jest prosta - aby móc stosować sprawdzone i efektywne rozwiązania do powtarzających się problemów, które są zrozumiałe dla wszystkich programistów.
Java Stream API
Temat obecny w świecie JVM od wersji 8 i każdy programista Java powinien biegle się w nim poruszać. Na pewno warto wiedzieć na jakie grupy dzielą się operacje na strumieniach oraz znać przynajmniej kilka metod z każdej z nich. Od siebie dodam, że wiele osób kojarzy tylko dwie główne grupy operacji na strumieniach - terminalne oraz pośrednie, natomiast mało kto kojarzy, że wewnątrz operacji pośrednich istnieją jeszcze dwie podgrupy - stateless oraz stateful. Przygotowanie się ze stream API nie tylko pomoże Ci w odpowiedzi na pytania od rekrutera, ale kto wie, może wykorzystasz tą wiedzę także podczas live codingu?
Interfejsy funkcyjne i wyrażenia lambda
Choć temat ten nie jest tak popularny na rozmowach jak kolekcje czy wielowątkowość, to nieznajomość tych zagadnień, może skutkować negatywną oceną ze strony rekrutera. Warto zaznajomić się chociaż z kilkoma podstawowymi interfejsami funkcyjnymi (np. Function, Predicate czy Supplier) oraz czym są i do czego służą wyrażenia lambda.
Testy
Pisanie testów pozwala tworzyć nam niezawodne oprogramowania, dlatego są one stałym elementem pracy programistów. Na pewno musisz wiedzieć jak tworzyć dobre testy, po co w ogóle je piszemy, czym testy integracyjne różnią się od jednostkowych oraz czym jest piramida testów - to są absolutne podstawy. Jeżeli chcesz zaskoczyć rekrutera swoją wiedzą sprawdź czym jest TDD oraz jakie są jego zalety.
JRE, JVM, JDK
Jako świadomy programista Java powinieneś dobrze je rozróżniać i wiedzieć do czego służą. Pomimo tego, że wiedza na ich temat nie jest raczej wykorzystywana w codziennej pracy, to są to przecież podstawowe koncepty związane z językiem Java.
Dodatkowo możesz sobie przypomnieć czym jest język maszynowy (bytecode; warto sobie przypomnieć jak to się dzieję, że aplikacja skompilowana na jedną platformę, może być bezproblemowo uruchamiana na innych systemach operacyjnych i platformach sprzętowych) oraz jak kompilować oraz wykonywać kod javowy.
Java String
Temat Stringów w Javie bardzo lubi pojawiać się na rekrutacjach. Niekoniecznie jest to must-have, ale ich nieznajomość na pewno zadziała na Twoją niekorzyść. Warto przypomnieć sobie jak tworzymy Stringi, czym jest String pool, jakie są różnice pomiędzy String, StringBuffer i StringBuilder oraz w jaki sposób możemy porównywać Stringi.
Czy te zagadnienia to wszystko co musisz wiedzieć przed rozmową rekrutacyjną?
Zagadnienia wymienione powyżej stanowią tylko podstawę, a brak wiedzy z tych obszarów, nawet przy znajomości bardziej zaawansowanych tematów, może skutkować negatywną oceną ze strony rekrutera.
Pamiętaj, że oprócz wiedzy teoretycznej, od kandydata wymagana jest umiejętność pisania dobrego kodu. Rekruter sprawdzi jakość wytwarzanego przez Ciebie oprogramowania patrząc na Twoje projekty na githubie oraz poprzez praktyczne zadanie rekrutacyjne. Pamiętaj, że nie musi ono polegać tylko na implementacji konkretnego zadania. Czasami rekruter może zaprezentować Ci istniejący kod i poprosić o wskazanie w nim błędów lub po prostu porozmawiać z Tobą na jego temat.
Nie zapomnij również przygotować się do dyskusji na temat swoich projektów i doświadczeń.
Co muszę wiedzieć przygotowując się do rozmowy na Mid Java Developera?
Jeżeli przygotowujesz się do rozmowy na stanowisko Mid'a, pamiętaj, że Twoja wiedza z przedstawionych zagadnień powinna być rozległa - rekruter będzie wymagał od Ciebie większej bezbłędności oraz bardziej dogłębnego zrozumienia tematów. Na zadawane pytania musisz odpowiadać pewnie i obszernie.
Dla porównania poziomów posłużę się przykładem dosyć popularnego pytania na rozmowach - czym są kolekcje zsynchronizowane oraz współbieżne. Jeżeli na poziomie juniorskim kandydat będzie miał tylko częściową wiedzę na temat tych kolekcji (np. będzie wiedział co to jest, ale nie będzie znał detali implementacyjnych) to najprawdopodobniej zostanie to ocenione w miarę neutralnie. Natomiast jeżeli na poziomie Mid'a, kandydat nie będzie znał charakterystyk tych kolekcji, to może już to mieć negatywny wpływ na ocenę.
Jak osiągnąć sukces?
Aby osiągnąć sukces w rozmowie na stanowisko Junior lub Mid Java Developera, kluczowe jest nie tylko dogłębne zrozumienie języka Java i związanych z nim technologii, ale również umiejętność ich praktycznego zastosowania. Dlatego, oprócz przypomnienia sobie wymienionych zagadnień, konieczne jest regularne ćwiczenie kodowania i rozwiązywanie technicznych problemów. Nie zapomnij również przygotować się do dyskusji na temat swoich projektów i doświadczeń, które mogą zainteresować rekrutera.
Pamiętaj, że Twoja pasja do programowania i chęć rozwoju są równie ważne, co techniczne aspekty Twojej wiedzy. Jeżeli chcesz odbyć próbną rozmowę rekrutacyjną z Javy, zdobyć certyfikat i dodatkowo dostać się do bazy udostępnianej pracodawcom wejdź tutaj.
Powodzenia!