Wszystko zależy od tego gdzie aplikujesz, jedni wymagają więcej inni mniej. Na pewno będzie to coś takiego:
- koncepcja SOLID
- ogólne pojęcie na temat obiektowości, polimorfizmu, dziedziczenia, kompozycji, interfejsów
- Dependency Injection - tyle o tym słyszałem, a na dobrą sprawę każdy z tego korzysta, a o tym nie wie :D
- Z javy SE must know: kolekcje, operacje na plikach, sockety, wątki choć trochę, garbage collector, klasy wewnętrzne, operacje na łańcuchach znaków (StringBuilder), hermetyzacja danych, modyfikatory dostępu
- Co jeszcze z Javy SE? Najlepiej jak wejdziesz sobie na javastart.pl i przejrzysz co darmowy kurs oferuje. Dużo zagadnień, które trzeba poznać
- Wzorce projektowe: dobrze jest wiedzieć czym są, jakie są i do czego służą. A jeszcze lepiej jeśli potrafisz go zaimplementować, dobrze wykorzystać.
Poznaj wzorce takie jak: MVC, Facade, Strategy( bardzo ciekawy wzorzec), Singleton, NullObject, Factory. Znacznie ułatwiają prace, gdy trafiasz na pewien problem. Znając teoretyczne wykorzystanie możesz łatwo wybrnąć z problemu
pozostałe mniej wymagane (choć zawsze na plusie):
- Maven/Gradle do budowania projektu
- Git lub coś innego do kontroli wersji
- Znajomość IDE
Z reguły jeśli uderzysz do jakiejś firmy na staż to na rozmowie kwalifikacyjnej będą Cię najpierw maglować z zagadnień teoretycznych. Jedni zapytają czym się różni LinkedList od ArrayListy, albo kiedy używać tych kolekcji. Inni będą pytać Cię o konstruktory i hermetyzacje. Do tego coś praktycznego, ale nic zaawansowanego (choć nie zawsze). Wypisz liczby od 0 do 100 podzielne przez 5 i 10, etc. Połącz ze sobą stringi, albo wyciągnij coś z nich. Tego typu rzeczy:)