Java HR: ściąga na rozmowę rekrutacyjną

Java HR: ściąga na rozmowę rekrutacyjną

Pierwszy post na blogu postanowiłem poświęcić na najbardziej podstawowe informacje dotyczące tego, czym zajmuję się zawodowo i co znam z technologii w największym stopniu – Javy (przede wszystkim w wersji 8).
Właściwie będzie to raczej wpis agregujący właściwe artykuły dotyczące poszczególnych zagadnień, w postaci aktualizowanej na bieżąco listy pytań z rozmów rekrutacyjnych i prawidłowych odpowiedzi.

Dla jednych może to być forma wprowadzenia w programowanie ogółem, dla innych pomoc przy zajęciach z pierwszego semestru na studiach, ale piszę to też dla takich osób jak ja – jako ściągawkę do odświeżenia sobie pamięci przed rozmową rekrutacyjną. Zwłaszcza, że dotyka to często zagadnień na tak podstawowym poziomie, że nie wykorzystujemy tej wiedzy na co dzień w pracy, przez co łatwo jest zapomnieć jak to w teorii działa.
Nie oszukujmy się – jak często jako, przykładowo, programista aplikacji webowych, musimy policzyć złożoność obliczeniową algorytmu korzystając z notacji big-O?
Albo jak często przy tego typu pracy użyjemy metody finalize()? A są to jedne z częstszych pytań, z jakimi trzeba się zmierzyć przy aplikowaniu na takie właśnie stanowisko. Dlatego nawet pracując wiele miesięcy dokładnie w tych samych technologiach, jakich będziemy używać w nowej pracy, bez wcześniejszego przygotowania wciąż można mieć problem z odpowiedzią na niektóre pytania.
 

Pytania zgromadziłem z własnego doświadczenia, głównie z wakacji w 2017 r. gdy odbyłem we Wrocławiu kilkanaście rozmów rekrutacyjnych na stanowisko Junior Java Developer. Oczywiście niekoniecznie muszą one dotyczyć samego języka – jako programista Javy, a właściwie jako jakikolwiek programista, powinno się znać też ogólne wzorce programistyczne i architektoniczne, a także technologie poboczne, ale wykorzystywane na podobnym stanowisku w prawie każdym przypadku – takie jak Spring, SQL czy jakiś inny HTML i CSS.

Wiele z nich powtarzało się wielokrotnie, na różnych rozmowach, dlatego należy na nie zwrócić szczególną uwagę i opanować je w największym stopniu – te zagadnienia pogrubiłem na mojej liście.
W przyszłości lista będzie rozszerzana o kolejne pytania, wraz z nabywaniem nowego doświadczenia w tym zakresie, być może dodam też najpopularniejsze pytania znalezione w internecie. Zależy mi przede wszystkim na tym, żeby były one realne i aktualne, takie których faktycznie można się w praktyce spodziewać w czasie procesu rekrutacji.

Należy jednocześnie zaznaczyć, że nie będę się zbytnio pochylać nad każdym zagadnieniem, kompleksowo opisując wszystko co się da na jego temat – takich artykułów jest już w internecie całe mnóstwo. Nie zawsze jednak ma się ochotę na czytanie wielkich ścian tekstu. Dla osoby początkującej nieraz wystarczy powierzchowne i skrótowe zrozumienie tematu, tak aby nie utopić się w oceanie nowych informacji. Natomiast dla osoby bardziej zaawansowanej, taki format swoistego cheatsheetu pozwoli na szybkie odświeżenie pamięci, skoro pełniejszą wiedzę posiadła już wcześniej.
 

W opracowaniu niniejszych zagadnień opierałem się w dużym stopniu na takich tytułach jak [tytuł] oraz [tytuł]

Java:
  • Metody equals()hashCode()
  • Zależności między klasami i metodami – przeciążanie i przesłanianie
  • Polimorfizm w Javie
  • Generyczność w Javie
  • Struktury danych w Javie
  • Wyjątki w Javie (runtime vs exception, checked vs unchecked)
  • Immutable – niezmienialne
  • StringBuffer i StringBuilder
  • Wielowątkowość
  • Wewnętrzne klasy w Javie
  • Czy kod w finally zawsze się wykona?
  • Final vs finally vs finalize
Java 8:
  • Interfejsy funkcyjne
  • Wyrażenia lambda
  • Optional
Architektura:
  • Metodologia SOLID
  • Wzorce projektowe: Fabryka i fabryka abstrakcyjna
  • Wzorce projektowe: Singleton
  • Wzorce projektowe: Budowniczy
  • Wzorce projektowe: pozostałe
  • Inversion of Control
  • MVC
  • Notacja Big-O
  • Wątek vs proces
  • Metody testowania oprogramowania
  • Mockowanie w testach
Web:
  • SOAP vs REST
  • HTTP vs HTTPS
  • Wstrzykiwanie zależności – różne sposoby
  • Co pojawiło się nowego w HTML5?
SQL:
  • SQL Join i jego wszystkie rodzaje
  • SQL Union

Jeśli macie przykłady innych pytań, z którymi mieliście do czynienia na rozmowach, będę wdzięczny za każdą taką propozycję w komentarzu 🙂

Informatyk, programista. Obecnie Java Developer (Web Fullstack), właściciel studia Berrygames oraz prezes koła TK Games na Politechnice Wrocławskiej.

Wszystkie artykuły autora>>

Dodaj komentarz