Lista pytań rekrutacyjnych Java, Hibernate, Spring.
Poniżej znajduje się lista pytań rekrutacyjnych dla programistów języka Java. Jest to prawdopodobnie najbardziej kompleksowa tego typu lista w polskim Internecie, zwłaszcza, że wszystkie pytania pochodzą z realnych rekrutacji. Znajdują się tutaj pytania z tzw. core Javy, Hibernate oraz Springa.
Poniższa lista dostępna jest całkowicie za darmo i będzie systematycznie powiększana w oparciu o realne rozmowy rekrutacyjne. Te, w których udział bierzemy my sami oraz te, w których udział bierze grono naszych użytkowników.
A co z odpowiedziami? Solidne opracowanie każdego z poniższych pytań (oraz ponad 60 innych), a także zadania rekrutacyjne, możliwość dyskusji z autorami strony i innymi użytkownikami oraz wiele więcej, dostępne są w płatnej części naszej strony. Po więcej informacji zapraszamy tutaj.
Lista pytań rekrutacyjnych Java (111):
- Co to znaczy, że Java jest językiem obiektowym?
- Co to jest abstrakcja i jak możemy ją osiągnąć w Javie?
- Co to jest dziedziczenie?
- Co to jest enkapsulacja?
- Co to jest polimorfizm?
- Czy języka Java wspiera wielodziedziczenie?
- Dziedziczenie vs kompozycja? Co powinniśmy preferować?
- Jaka jest różnica między JDK, JRE oraz JVM?
- Czym jest JVM?
- Co to jest Garbage Collector?
- Jak działa Garbage Collector?
- Co oznaczają opcje/flagi -Xmx oraz -Xms?
- Co to jest JIT?
- Wymień najważniejsze zmiany w języku Java, które weszły w wersjach 8 – 17.
- Co to są typy proste? Co to są typy prymitywne?
- Czym są wrappery typów prostych?
- Jakie wartości domyślne przyjmują w Javie typy prymitywne, a jakie ich wrappery?
- Czym jest autoboxing oraz unboxing?
- Co się stanie jeśli przekroczymy dopuszczalny zakres typu int?
- Co to są typy referencyjne?
- Jak porównywać ze sobą typy proste?
- Jak porównywać ze sobą typy referencyjne?
- Jak porównywać ze sobą zmienne typów wyliczeniowych (enumy)?
- Czym są obiekty niemutowalne (immutable)?
- Jakie są zalety i wady obiektów niemutowalnych?
- Jak zaimplementować klasę, której obiekty będą niemutowalne?
- Co się stanie, gdy będziemy dziedziczyć po klasie String?
- Czym jest StringPool?
- Czy w StringPool możemy umieścić obiekt typu String, który został stworzony przy użyciu słowa kluczowego new?
- Ile obiektów typu String zostanie stworzonych w poniższym przykładzie?
- Jakie znasz metody, które można wywołać na obiektach typu String? Podaj kilka przykładów.
- String vs StringBuilder vs StringBuffer. Porównaj te 3 klasy.
- Czy przechowywanie wrażliwych danych (np. haseł) w zmiennych typu String to dobry pomysł? Tak/Nie i dlaczego?
- Czym są w Javie słowa kluczowe?
- Co to są modyfikatory dostępu? Jakie znasz modyfikatory dostępu?
- Czy elementy klasy wewnętrznej mają dostęp do prywatnych elementów swojej klasy zewnętrznej?
- Czy elementy klasy zewnętrznej maja dostęp do prywatnych elementów klasy wewnętrznej?
- Co oznacza słowo kluczowe static?
- Czy możemy użyć niestatycznego pola w statycznej metodzie? Czy w metodzie statycznej możemy wywołać metodę niestatyczną?
- Co oznacza słowo kluczowe final? Omów przypadek klasy, metody oraz zmiennej.
- Czy deklaracja konstruktora może posiadać słowa kluczowe final, static lub abstract?
- Omów metodę main. Jakie elementy się na nią składają i co oznaczają?
- Jaka jest różnica między final, finally oraz finalize?
- Co oznacza słowo kluczowe transient?
- Czy var jest słowem kluczowym?
- Co to jest metoda abstrakcyjna?
- Co to jest klasa abstrakcyjna?
- Po co są konstruktory w klasie abstrakcyjnej? Czy klasa abstrakcyjna posiada domyślny konstruktor?
- Co to jest interfejs?
- Po co są metody default w interfejsach? Czy powinniśmy ich używać?
- Jaka jest różnica między klasą abstrakcyjną, a interfejsem?
- Co to jest interfejs funkcyjny?
- Czy znasz pakiet java.util.function? Co on zawiera?
- Do czego służą interfejsy Comparable oraz Comparator?
- Jak w klasie pochodnej wywołać konstruktor lub metodę z klasy bazowej?
- Co to jest sygnatura metody?
- Czym się różni przesłanianie metod (overriding) od ich przeciążania (overloading)?
- Czy adnotacja @Override jest obowiązkowa w przypadku przesłaniania metod?
- Czy można w javie przesłonić (override) metodę prywatną?
- Czy można w javie przesłonić (override) metodę statyczną?
- Czy metodę main można przeciążyć?
- Powiedzmy, że klasa Parent posiada jeden prywatny konstruktor. Czy klasa dziedzicząca po niej będzie mogła przesłaniać wszystkie metody?
- Skoro w Javie nie możemy dziedziczyć po więcej niż jednej klasie, to jak to jest możliwe, że każda klasa dziedziczy również po java.lang.Object?
- Czy na pewno każda klasa dziedziczy po java.lang.Object? Może są jakieś wyjątki?
- Co to jest klasa anonimowa?
- Po co nam wyrażenie lambda? Jak je stosować?
- Co to są streamy? Co to jest Stream API?
- Co się stanie jeśli na danym streamie wykonamy w 2 osobnych instrukcjach operacje końcowe/finalne?
- Do czego służy operacja pośrednia map w Stream API?
- Co to jest Optional? Po co nam ta klasa?
- Jaka jest różnica między metodami orElse oraz orElseGet w klasie Optional?
- Do czego służy metoda equals?
- Do czego służy metoda hashCode?
- Omów kontrakt pomiędzy metodami equals i hashCode.
- Jakie problemy może powodować niedotrzymanie kontraktu metod equals oraz hashCode?
- Czy brak zachowania kontraktu pomiędzy metodami equals oraz hashCode powoduje błąd kompilacji?
- Co to są kolekcje?
- Co to jest lista?
- Porównaj ArrayList oraz LinkedList.
- W jaki sposób możemy iterować po liście?
- Czy tablica jest typem referencyjnym?
- Jakie są różnice między tablicą i listą?
- Co to jest Set? Czym się charakteryzuje?
- W jaki sposób HashSet zapewnia unikalność elementów?
- Jak można zmodyfikować obiekt znajdujący się w secie?
- Co to jest mapa?
- Jak działa HashMapa?
- Jakie obiekty mogą być kluczem w HashMapie? Jakie są dla nich wymagania?
- Którą implementację mapy wybrałbyś w środowisku wielowątkowym? HashMap, LinkedHashMap czy TreeMap?
- W jaki sposób można iterować po HashMapie?
- Czym są wyjątki w Javie?
- Czym się różnią wyjątki checked oraz unchecked?
- Omów konstrukcję try-catch-finally.
- Czy po każdym bloku kodu try musi występować blok kodu catch?
- Czy kod bloku finally zawsze się wykona?
- Jaki będzie efekt wywołania poniższej metody?
- Do czego służy konstrukcja try-with-resources?
- Czym się różnią słowa kluczowe throw oraz throws?
- Co to jest NullPointerException? Kiedy występuje?
- Co to jest race condition?
- Co wiesz o słowie kluczowym synchronized?
- Do czego służy modyfikator volatile?
- Jakie znasz sposoby na tworzenie nowych wątków?
- Jaka jest różnica między interfejsami Runnable i Callable?
- Jaka się różnica między metodami sleep oraz wait?
- Czym jest refleksja?
- Co to są adnotacje?
- Co to jest typ wyliczeniowy? Co to jest enum?
- Co to są typy generyczne?
- Czym jest rekord wprowadzony w Javie 14?
- Co oznaczają trzy kropki przy typie parametru metody? Co to jest varargs?
Lista pytań rekrutacyjnych Hibernate (17):
- Co to jest JDBC? Czy możemy z niego korzystać jeśli używamy w aplikacji Hibernate?
- Czym jest Hibernate? Jakie są jego zalety i wady?
- Co to jest JPQL?
- Do czego służy JPA Criteria API?
- Czy klasa @Entity do poprawnego działania musi posiadać konstruktor oraz settery dla pól?
- W jaki sposób możemy ustawić własną nazwę tabeli?
- Jaka jest różnica między SEQUENCE oraz IDENTITY w kontekście generowania klucza głównego?
- Jakie relacje między encjami możemy ustawić za pomocą Hibernate?
- Co się stanie, jeśli nie użyjemy @JoinColumn dla jednokierunkowej relacji @OneToMany?
- Czym się różni FetchType.EAGER od FetchType.LAZY?
- Jakie wady i zalety ma FetchType.LAZY?
- Na czym polega problem N+1? Jak go rozwiązać?
- Co ustawia się za pomocą CascadeType? Jakie ryzyko się z tym wiąże?
- Czym jest EntityManager?
- Omów cykl życia encji (entity lifecycle).
- Co to jest dirty checking? Czy ma wpływ na wydajność?
- Jaka jest różnica między cache L1 oraz L2?
Lista pytań rekrutacyjnych Spring (36):
- Czym jest Spring?
- Czy Spring i Spring Boot to to samo?
- Na jakim porcie uruchamiana jest domyślnie springbootowa aplikacja? Czy można go zmienić?
- Co to jest bean?
- Jaki scope może mieć bean w Springu?
- Jaki jest domyślny scope dla beanów springowych?
- Czy bean mający scope Singleton jest bezpieczny w środowisku wielowątkowym/jest thread-safe?
- Co to jest wstrzykiwanie zależności (dependency injection)?
- Jakie znasz sposoby wstrzykiwania zależności? Który jest preferowany?
- Jaka jest różnica między adnotacjami @Autowired oraz @Inject?
- Czy adnotacja @Autowired jest obowiązkowa w przypadku wstrzykiwania przez konstruktor?
- W jaki sposób możemy wstrzyknąć wartość jakiegoś property, np. spring.datasource.url?
- Do czego służy adnotacja @PostConstruct?
- Do czego służy adnotacja @Profile?
- Co dają nam profile springowe?
- Jaka jest różnica między adnotacjami @Qualifier oraz @Primary? Która ma pierwszeństwo?
- Co to jest DispatcherServlet?
- Czy możemy mieć w controllerze dwie metody z adnotacją @GetMapping i taką samą ścieżką, np. /number?
- Jaka jest różnica między adnotacjami @PathVariable i @RequestParam?
- Czy możemy zmapować metodę HTTP DELETE na dodawanie użytkowników w bazie danych?
- Czym się różnią Filter oraz HandlerInterceptor?
- Do czego służy adnotacja @ExceptionHandler? Czy możemy użyć jej globalnie dla wszystkich controllerów?
- Czy przechwytywanie wyjątków w komponencie z adnotacją @ControllerAdvice dotyczy wszystkich controllerów?
- Po co nam mechanizm migracji bazy danych? Jakie narzędzia do tego celu wspiera Spring Boot?
- Czy interfejs JpaRepository jest parametryzowany? Jeśli tak, to jakie parametry typu wymaga?
- Do czego służy klasa JdbcTemplate?
- Co to są poziomy izolacji transakcji? Wymień je i krótko omów.
- Jakie rodzaje propagacji transakcji są dostępne w springu?
- Jeśli w trakcie procesowania metody oznaczonej adnotacją @Transactional zostanie rzucony wyjątek, to będzie miał miejsce rollback czy nie?
- Czy adnotacja @Transactional może być użyta z metodą prywatną?
- W jaki sposób możemy opublikować zdarzenie w springu?
- Czy metoda oznaczona adnotacją @EventListener może coś zwracać czy musi być void? Jakie to ma konsekwencje?
- Z jakiego CacheManagera domyślnie korzysta Spring?
- Do czego służy klasa RestTemplate?
- Do czego służą adnotacje takie jak @Before, @Around, @After?
- Czy kojarzysz adnotacje takie jak @Email, @Max, @Min, @Null, @Pattern? Do czego one służą?