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):

  1. Co to znaczy, że Java jest językiem obiektowym?
  2. Co to jest abstrakcja i jak możemy ją osiągnąć w Javie?
  3. Co to jest dziedziczenie?
  4. Co to jest enkapsulacja?
  5. Co to jest polimorfizm?
  6. Czy języka Java wspiera wielodziedziczenie?
  7. Dziedziczenie vs kompozycja? Co powinniśmy preferować?

  8. Jaka jest różnica między JDK, JRE oraz JVM?
  9. Czym jest JVM?
  10. Co to jest Garbage Collector?
  11. Jak działa Garbage Collector?
  12. Co oznaczają opcje/flagi -Xmx oraz -Xms?
  13. Co to jest JIT?
  14. Wymień najważniejsze zmiany w języku Java, które weszły w wersjach 8 – 17.

  15. Co to są typy proste? Co to są typy prymitywne?
  16. Czym są wrappery typów prostych?
  17. Jakie wartości domyślne przyjmują w Javie typy prymitywne, a jakie ich wrappery?
  18. Czym jest autoboxing oraz unboxing?
  19. Co się stanie jeśli przekroczymy dopuszczalny zakres typu int?
  20. Co to są typy referencyjne?
  21. Jak porównywać ze sobą typy proste?
  22. Jak porównywać ze sobą typy referencyjne?
  23. Jak porównywać ze sobą zmienne typów wyliczeniowych (enumy)?

  24. Czym są obiekty niemutowalne (immutable)?
  25. Jakie są zalety i wady obiektów niemutowalnych?
  26. Jak zaimplementować klasę, której obiekty będą niemutowalne?

  27. Co się stanie, gdy będziemy dziedziczyć po klasie String?
  28. Czym jest StringPool?
  29. Czy w StringPool możemy umieścić obiekt typu String, który został stworzony przy użyciu słowa kluczowego new?
  30. Ile obiektów typu String zostanie stworzonych w poniższym przykładzie?
  31. Jakie znasz metody, które można wywołać na obiektach typu String? Podaj kilka przykładów.
  32. String vs StringBuilder vs StringBuffer. Porównaj te 3 klasy.
  33. Czy przechowywanie wrażliwych danych (np. haseł) w zmiennych typu String to dobry pomysł? Tak/Nie i dlaczego?

  34. Czym są w Javie słowa kluczowe?
  35. Co to są modyfikatory dostępu? Jakie znasz modyfikatory dostępu?
  36. Czy elementy klasy wewnętrznej mają dostęp do prywatnych elementów swojej klasy zewnętrznej?
  37. Czy elementy klasy zewnętrznej maja dostęp do prywatnych elementów klasy wewnętrznej?
  38. Co oznacza słowo kluczowe static?
  39. Czy możemy użyć niestatycznego pola w statycznej metodzie? Czy w metodzie statycznej możemy wywołać metodę niestatyczną?
  40. Co oznacza słowo kluczowe final? Omów przypadek klasy, metody oraz zmiennej.
  41. Czy deklaracja konstruktora może posiadać słowa kluczowe final, static lub abstract?
  42. Omów metodę main. Jakie elementy się na nią składają i co oznaczają?
  43. Jaka jest różnica między final, finally oraz finalize?
  44. Co oznacza słowo kluczowe transient?
  45. Czy var jest słowem kluczowym?

  46. Co to jest metoda abstrakcyjna?
  47. Co to jest klasa abstrakcyjna?
  48. Po co są konstruktory w klasie abstrakcyjnej? Czy klasa abstrakcyjna posiada domyślny konstruktor?
  49. Co to jest interfejs?
  50. Po co są metody default w interfejsach? Czy powinniśmy ich używać?
  51. Jaka jest różnica między klasą abstrakcyjną, a interfejsem?
  52. Co to jest interfejs funkcyjny?
  53. Czy znasz pakiet java.util.function? Co on zawiera?
  54. Do czego służą interfejsy Comparable oraz Comparator?

  55. Jak w klasie pochodnej wywołać konstruktor lub metodę z klasy bazowej?
  56. Co to jest sygnatura metody?
  57. Czym się różni przesłanianie metod (overriding) od ich przeciążania (overloading)?
  58. Czy adnotacja @Override jest obowiązkowa w przypadku przesłaniania metod?
  59. Czy można w javie przesłonić (override) metodę prywatną?
  60. Czy można w javie przesłonić (override) metodę statyczną?
  61. Czy metodę main można przeciążyć?
  62. Powiedzmy, że klasa Parent posiada jeden prywatny konstruktor. Czy klasa dziedzicząca po niej będzie mogła przesłaniać wszystkie metody?
  63. 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?
  64. Czy na pewno każda klasa dziedziczy po java.lang.Object? Może są jakieś wyjątki?

  65. Co to jest klasa anonimowa?
  66. Po co nam wyrażenie lambda? Jak je stosować?
  67. Co to są streamy? Co to jest Stream API?
  68. Co się stanie jeśli na danym streamie wykonamy w 2 osobnych instrukcjach operacje końcowe/finalne?
  69. Do czego służy operacja pośrednia map w Stream API?
  70. Co to jest Optional? Po co nam ta klasa?
  71. Jaka jest różnica między metodami orElse oraz orElseGet w klasie Optional?

  72. Do czego służy metoda equals?
  73. Do czego służy metoda hashCode?
  74. Omów kontrakt pomiędzy metodami equals i hashCode.
  75. Jakie problemy może powodować niedotrzymanie kontraktu metod equals oraz hashCode?
  76. Czy brak zachowania kontraktu pomiędzy metodami equals oraz hashCode powoduje błąd kompilacji?

  77. Co to są kolekcje?
  78. Co to jest lista?
  79. Porównaj ArrayList oraz LinkedList.
  80. W jaki sposób możemy iterować po liście?
  81. Czy tablica jest typem referencyjnym?
  82. Jakie są różnice między tablicą i listą?
  83. Co to jest Set? Czym się charakteryzuje?
  84. W jaki sposób HashSet zapewnia unikalność elementów?
  85. Jak można zmodyfikować obiekt znajdujący się w secie?
  86. Co to jest mapa?
  87. Jak działa HashMapa?
  88. Jakie obiekty mogą być kluczem w HashMapie? Jakie są dla nich wymagania?
  89. Którą implementację mapy wybrałbyś w środowisku wielowątkowym? HashMap, LinkedHashMap czy TreeMap?
  90. W jaki sposób można iterować po HashMapie?

  91. Czym są wyjątki w Javie?
  92. Czym się różnią wyjątki checked oraz unchecked?
  93. Omów konstrukcję try-catch-finally.
  94. Czy po każdym bloku kodu try musi występować blok kodu catch?
  95. Czy kod bloku finally zawsze się wykona?
  96. Jaki będzie efekt wywołania poniższej metody?
  97. Do czego służy konstrukcja try-with-resources?
  98. Czym się różnią słowa kluczowe throw oraz throws?
  99. Co to jest NullPointerException? Kiedy występuje?

  100. Co to jest race condition?
  101. Co wiesz o słowie kluczowym synchronized?
  102. Do czego służy modyfikator volatile?
  103. Jakie znasz sposoby na tworzenie nowych wątków?
  104. Jaka jest różnica między interfejsami Runnable i Callable?
  105. Jaka się różnica między metodami sleep oraz wait?

  106. Czym jest refleksja?
  107. Co to są adnotacje?
  108. Co to jest typ wyliczeniowy? Co to jest enum?
  109. Co to są typy generyczne?
  110. Czym jest rekord wprowadzony w Javie 14?
  111. Co oznaczają trzy kropki przy typie parametru metody? Co to jest varargs?

Lista pytań rekrutacyjnych Hibernate (17):

  1. Co to jest JDBC? Czy możemy z niego korzystać jeśli używamy w aplikacji Hibernate?
  2. Czym jest Hibernate? Jakie są jego zalety i wady?

  3. Co to jest JPQL?
  4. Do czego służy JPA Criteria API?

  5. Czy klasa @Entity do poprawnego działania musi posiadać konstruktor oraz settery dla pól?
  6. W jaki sposób możemy ustawić własną nazwę tabeli?
  7. Jaka jest różnica między SEQUENCE oraz IDENTITY w kontekście generowania klucza głównego?

  8. Jakie relacje między encjami możemy ustawić za pomocą Hibernate?
  9. Co się stanie, jeśli nie użyjemy @JoinColumn dla jednokierunkowej relacji @OneToMany?
  10. Czym się różni FetchType.EAGER od FetchType.LAZY?
  11. Jakie wady i zalety ma FetchType.LAZY?
  12. Na czym polega problem N+1? Jak go rozwiązać?
  13. Co ustawia się za pomocą CascadeType? Jakie ryzyko się z tym wiąże?

  14. Czym jest EntityManager?
  15. Omów cykl życia encji (entity lifecycle).

  16. Co to jest dirty checking? Czy ma wpływ na wydajność?
  17. Jaka jest różnica między cache L1 oraz L2?

Lista pytań rekrutacyjnych Spring (36):

  1. Czym jest Spring?
  2. Czy Spring i Spring Boot to to samo?
  3. Na jakim porcie uruchamiana jest domyślnie springbootowa aplikacja? Czy można go zmienić?

  4. Co to jest bean?
  5. Jaki scope może mieć bean w Springu?
  6. Jaki jest domyślny scope dla beanów springowych?
  7. Czy bean mający scope Singleton jest bezpieczny w środowisku wielowątkowym/jest thread-safe?

  8. Co to jest wstrzykiwanie zależności (dependency injection)?
  9. Jakie znasz sposoby wstrzykiwania zależności? Który jest preferowany?
  10. Jaka jest różnica między adnotacjami @Autowired oraz @Inject?
  11. Czy adnotacja @Autowired jest obowiązkowa w przypadku wstrzykiwania przez konstruktor?
  12. W jaki sposób możemy wstrzyknąć wartość jakiegoś property, np. spring.datasource.url?
  13. Do czego służy adnotacja @PostConstruct?

  14. Do czego służy adnotacja @Profile?
  15. Co dają nam profile springowe?
  16. Jaka jest różnica między adnotacjami @Qualifier oraz @Primary? Która ma pierwszeństwo?

  17. Co to jest DispatcherServlet?
  18. Czy możemy mieć w controllerze dwie metody z adnotacją @GetMapping i taką samą ścieżką, np. /number?
  19. Jaka jest różnica między adnotacjami @PathVariable i @RequestParam?
  20. Czy możemy zmapować metodę HTTP DELETE na dodawanie użytkowników w bazie danych?
  21. Czym się różnią Filter oraz HandlerInterceptor?
  22. Do czego służy adnotacja @ExceptionHandler? Czy możemy użyć jej globalnie dla wszystkich controllerów?
  23. Czy przechwytywanie wyjątków w komponencie z adnotacją @ControllerAdvice dotyczy wszystkich controllerów?

  24. Po co nam mechanizm migracji bazy danych? Jakie narzędzia do tego celu wspiera Spring Boot?
  25. Czy interfejs JpaRepository jest parametryzowany? Jeśli tak, to jakie parametry typu wymaga?
  26. Do czego służy klasa JdbcTemplate?
  27. Co to są poziomy izolacji transakcji? Wymień je i krótko omów.
  28. Jakie rodzaje propagacji transakcji są dostępne w springu?
  29. Jeśli w trakcie procesowania metody oznaczonej adnotacją @Transactional zostanie rzucony wyjątek, to będzie miał miejsce rollback czy nie?
  30. Czy adnotacja @Transactional może być użyta z metodą prywatną?

  31. W jaki sposób możemy opublikować zdarzenie w springu?
  32. Czy metoda oznaczona adnotacją @EventListener może coś zwracać czy musi być void? Jakie to ma konsekwencje?

  33. Z jakiego CacheManagera domyślnie korzysta Spring?
  34. Do czego służy klasa RestTemplate?
  35. Do czego służą adnotacje takie jak @Before, @Around, @After?
  36. Czy kojarzysz adnotacje takie jak @Email, @Max, @Min, @Null, @Pattern? Do czego one służą?