250 pytań rekrutacyjnych z Java. Dla Junior, Middle i Senior

dou.eu 10 godzin temu

Zapytaliśmy CTO i doświadczonych specjalistów, którzy przeprowadzają rozmowy kwalifikacyjne z Java, o to, jakie pytania teoretyczne zadają i jakie zadania i wyzwania proponują kandydatom. Przygotowując się do rozmowy technicznej, ważne jest, aby mieć jasny plan. Mamy nadzieję, iż ta lista pytań będzie swoistym przewodnikiem, który pomoże uzyskać wymarzoną posadę.

Poprzedni artykuł w tej kategorii poświęcony był .NET.

Junior

Ogólne

  1. Jakie znasz wzorce projektowe? Opowiedz o dwóch wzorcach, których używałeś w pracy.

Java Core

2. Jakie są typy danych w Java?
3. Czym różni się obiekt od prymitywnych typów danych?
4. Jaka jest różnica pomiędzy przekazywaniem parametrów przez referencję a przez wartość?
5. Co to jest JVM, JDK, JRE?
6. Po co używa się JVM?
7. Co to jest bytecode?
8. Jakie cechy posiada JavaBean?
9. Co to jest OutOfMemoryError?
10. Co to jest stack trace? Jak go uzyskać?
11. Wymień wszystkie metody klasy Object.
12. Jaka jest różnica między try-with-resources a try-catch-finally podczas pracy z zasobami?
13. Co to są konstruktory? Jakie ich rodzaje znasz?
14. Co to są operacje bitowe?
15. Obiekty których standardowych klas są immutable w Java?
16. Krótko opisz immutable object. Po co są takie obiekty? 17. Jak stworzyć immutable object? 18. Jakie zalety mają immutable object w porównaniu z „zwykłymi” obiektami?

OOP

19. Co to jest OOP? Wymień zasady z przykładami.
20. Jakie są zalety OOP w porównaniu z programowaniem proceduralnym?
21. Na czym polega główna cecha OOP?
22. Jakie korzyści daje stosowanie OOP?
23. Jakie wady ma OOP?
24. Opowiedz o zasadzie dziedziczenia w OOP. Po co jest potrzebne?
25. Zdefiniuj polimorfizm w OOP. Jak działa polimorfizm?
26. Co to jest polimorfizm statyczny i dynamiczny?
27. Zdefiniuj abstrakcję w OOP.
28. Które elementy języka odpowiadają za enkapsulację?
29. Które elementy języka odpowiadają za dziedziczenie?
30. Które elementy języka odpowiadają za polimorfizm?
31. Co to jest SOLID? Podaj przykłady.
32. Co to jest przeciążenie (overloading) metody?
33. Co to jest nadpisanie (override) metody?
34. Co to jest klasa, obiekt, interface?
35. Co to jest klasa POJO? Podaj przykład.
36. Jakie elementy może zawierać klasa?
37. Zdefiniuj obiekt.
38. Opowiedz o dziedziczeniu w Java. Jakie są cechy użycia słowa kluczowego super?
39. Co to jest sygnatura metody? Podaj przykłady poprawnych i niepoprawnych sygnatur.
40. Czy w konstruktorze można użyć return?
41. Czy w konstruktorze można wyrzucić wyjątek (exception)?
42. Z jakich elementów składa się nagłówek klasy? Napisz przykład.
43. Z jakich elementów składa się nagłówek metody? Napisz przykład.
44. Stwórz w obiekcie-podklasie konstruktor domyślny, jeżeli w klasie bazowej nie zdefiniowano konstruktora domyślnego (ale jest inny konstruktor).
45. Kiedy używa się słowa kluczowego this?
46. Co to jest initializer?
47. Dla dziedziczenia klasy public class Child extends Parent opisz kolejność inicjalizacji obiektu.
48. Jakie znasz relacje pomiędzy klasami (obiektami)?
49. Jakie związki asocjacyjne między obiektami znasz?
50. Co to są modyfikatory dostępu w Java? Wymień je i opisz cel ich stosowania.
51. Jakie są główne adekwatności zmiennych i metod statycznych?
52. Jakie ograniczenia dotyczą statycznych zmiennych i metod?
53. Co oznacza słowo najważniejsze static? Czy metoda statyczna może być override’owana lub overload’owana?
54. Czy metoda może być jednocześnie static i abstract?
55. Czy metody statyczne mogą wywoływać zwykłe metody? I odwrotnie? Dlaczego?
56. Co oznacza słowo najważniejsze final?
57. Co to jest abstract? Abstract class? Abstract method?
58. Co to jest interface? Czy może istnieć final interface?
59. Jaka jest różnica między abstract class a interface w Java?
60. Gdzie można inicjalizować pola statyczne?
61. Co to są klasy anonimowe?
62. Co to są prymitywne klasy?
63. Co to są klasy „opakowujące” (wrapper)?
64. Co to jest Nested class? Kiedy się ją stosuje?
65. Jakie modyfikatory dostępu może mieć klasa?

Biblioteki i standardy

67. Co to jest Hibernate? Jaka jest różnica między JPA a Hibernate?
68. Co to jest kaskadowość? Jak się jej używa w Hibernate?
69. Czy entity-class może być abstract?
70. Co to jest entity manager? Za co odpowiada?
71. Co to jest klasa Assert? Do czego ją stosować?

String

72. Scharakteryzuj klasę String w Java.
73. Jakie są sposoby tworzenia obiektu String? Gdzie jest on tworzony?
74. Jak porównać dwa łańcuchy w Java i/lub posortować je?
75. Zaproponuj algorytm zamiany łańcucha na tablicę znaków. Napisz kod.
76. Jak przekonwertować łańcuch na tablicę bajtów i z powrotem? Napisz kod.
77. Co to jest string pool i po co jest potrzebny?
78. Jakie GoF patterns są wykorzystywane w string pool?
79. Jak podzielić łańcuch na części? Napisz kod.
80. Dlaczego tablica char jest lepsza od String do przechowywania hasła?
81. Jaka jest różnica między String, StringBuffer a StringBuilder?

Enum

82. Krótko scharakteryzuj Enum w Java.
83. Czy Enum może implementować interface?
84. Czy Enum może rozszerzać klasę?
85. Czy można stworzyć Enum bez instancji?
86. Czy można override’ować toString() w Enum?
87. Co się stanie, jeżeli nie override’ujemy toString() w Enum?
88. Czy można zdefiniować konstruktor wewnątrz Enum?
89. Jaka jest różnica między == a equals()?
90. Co robi metoda ordinal() w Enum?
91. Czy można używać Enum w TreeSet lub TreeMap?
92. Jak są powiązane metody ordinal() i compareTo() w Enum?
93. Napisz przykład Enum.
94. Czy można używać Enum w switch-case?
95. Jak pobrać wszystkie dostępne wartości Enum?

Stream API

96. Co to jest Stream w Java?
97. Wymień podstawowe adekwatności transakcji.
98. Jakie są poziomy izolacji transakcji?
99. Jaka jest różnica między Statement i PreparedStatement?

Collections

100. Opowiedz o iteratorach i ich zastosowaniu.
101. Jaka jest hierarchia kolekcji w Java Collection Framework?
102. Jaka jest wewnętrzna struktura ArrayList?
103. Jaka jest wewnętrzna struktura LinkedList?
104. Jaka jest wewnętrzna struktura HashMap?
105. Czym różni się ArrayList od LinkedList?
106. Czym różni się ArrayList od HashSet?
107. Po co w Java istnieje tak wiele implementacji dynamic array?
108. Po co w Java istnieje tak wiele implementacji key-value storage?
109. Jak posortować kolekcję elementów?

Class Object. Equals and HashCode

110. Podaj krótką charakterystykę class Object w Java.
111. Do czego służy Equals and HashCode w Java?
112. Opowiedz o kontrakcie między Equals and HashCode w Java.
113. Jakie warunki stawia się przy nadpisywaniu kontraktu Equals?
114. Co się stanie, jeżeli nie nadpiszemy Equals and HashCode?
115. Jakie wartości otrzymamy, jeżeli nie zostaną nadpisane Equals and HashCode?
116. Dlaczego symetryczność zachodzi tylko wtedy, gdy x.equals(y) zwraca true?
117. Co to jest kolizja w HashCode? Jak sobie z nią radzić?
118. Co się stanie, jeżeli element biorący udział w kontrakcie HashCode zmieni swoją wartość?
119. Napisz metody Equals and HashCode dla klasy Student, która składa się z pól String name i int age.
120. Jaka jest różnica między użyciem if (obj instanceof Student) a if (getClass() == obj.getClass())?
121. Podaj krótką charakterystykę metody clone().
122. Na czym polega specyfika działania metody clone() wobec pól referencyjnych?

Exceptions

123. Podaj definicję pojęcia exception (sytuacja wyjątkowa).
124. Jakie znasz cechy użycia operatora try...catch?
125. Jaka jest różnica między error i exception?
126. Jaka jest różnica między checked i unchecked exception, throw, throws?
127. Jaka jest hierarchia wyjątków?
128. Co to jest checked a unchecked exception?
129. Czy trzeba obsługiwać checked exception?
130. Co oznacza i jak używać słowa kluczowego throws?
131. Jakie sposoby obsługi wyjątków znasz?
132. Podaj przykład przechwytywania i obsługi wyjątku w bloku try-catch metody.
133. Podaj przykład przechwytywania i obsługi wyjątku w sekcji throws metody i przekazywania go do wywołującego.
134. Podaj przykład przechwytywania i obsługi wyjątku z użyciem własnych wyjątków.
135. Jakie są zasady dotyczące wyjątków przy dziedziczeniu?
136. Czy potrafisz napisać kod, jeżeli blok finally nie zostanie wykonany?
137. Podaj przykład obsługi kilku wyjątków w jednym bloku catch.
138. Jaki operator pozwala wymusić rzucenie wyjątku? Podaj przykład.
139. Czy metoda main może wyrzucać throws-exception? jeżeli tak — dokąd je przekaże?
140. Podaj przykład try-with-resources.

Wielowątkowość

141. Jakie narzędzia do pracy z wielowątkowością znasz?
142. Co to jest process i thread? Czym różni się process od thread?
143. Opowiedz o synchronizacji między wątkami. Do czego służą metody wait(), notify(), notifyAll(), join()?
144. Jak zatrzymać wątek? 145. Jak wymieniać dane między wątkami?
146. Na czym polega różnica między klasą Thread a interfejsem Runnable?
147. Mamy wątki T1, T2 i T3. Jak zrealizować ich sekwencyjne wykonanie?

Zadania praktyczne

148. Matrix Diagonal Sum (zadanie z LeetCode).
149. Move Zeroes (zadanie z LeetCode).
150. Given List names. Usuń pierwszą literę z każdego imienia i zwróć posortowaną listę.
151. Odwróć tablicę.
152. Sprawdź, czy łańcuch jest palindromem.
153. Napisz prosty algorytm sortowania (Bubble, Selection lub Shuttle). Jak można go ulepszyć? 154. Napisz algorytm (ciąg działań) dodawania literału typu int i literału typu byte. Wyjaśnij, co dzieje się z pamięcią.

Middle

Ogólne

  1. Jakie są zalety i wady OOP w porównaniu z procedural programming/functional programming?
  2. Czym różni się aggregation od composition?
  3. Jakie GoF patterns stosowałeś w praktyce? Podaj przykłady.
  4. Co to jest proxy object? Podaj przykłady.
  5. Jakie nowości zostały zapowiedziane w Java 8?
  6. Co to jest High Cohesion i Low Coupling? Podaj przykłady.

OOP

7. W jaki sposób można zrealizować multiple inheritance w Java? 8. Jaka jest różnica między final, finally a finalize()?

Java Core

9. Jaka jest różnica między static binding a dynamic binding w Java?
10. Czy można używać private lub protected fields w interface?
11. Co to jest Classloader i do czego służy?
12. Co to są Run-Time Data Areas?
13. Co to jest immutable object?
14. Co wyróżnia klasę String?
15. Co to jest covariance of types?
16. Jakie są metody w klasie Object?
17. Podaj przykłady udanego i nieudanego użycia Optional.
18. Czy można zadeklarować main method jako final?
19. Czy można importować ten sam package/class dwukrotnie? Jakie są konsekwencje?
20. Co to jest Casting? Kiedy może wystąpić ClassCastException?
21. Dlaczego nowoczesne frameworks używają głównie unchecked exceptions?
22. Co to jest static import?
23. Jaki jest związek między hashCode() a equals()?
24. Kiedy używa się klas BufferedInputStream i BufferedOutputStream?
25. Jaka jest różnica między java.util.Collection a java.util.Collections?
26. Jaka jest różnica między Enumeration a Iterator?
27. Jaka jest różnica między fail-fast a fail-safe iterators?
28. Do czego służy modifier transient?
29. Jak static i final modifiers wpływają na serialization?
30. Jakie są cechy użycia Cloneable interface?
31. Jakie są cechy użycia AutoCloseable interface?
32. Co to jest FunctionalInterface i czym różni się od zwykłego interface?
33. Co to są Atomic types i po co są potrzebne?
34. Co to jest happens-before? Jakie są cechy użycia volatile keyword?
35. Opisz Heap i Stack memory w Java. Jaka jest między nimi różnica? Gdzie przechowywane są primitives?
36. Czym różni się stack od heap memory? Kiedy i jaki obszar jest rezerwowany? Dlaczego takie rozdzielenie jest potrzebne?
37. Jakie są zasady działania i obszary pamięci Garbage Collector?
38. Jak działa Garbage Collector? Opowiedz o Reference counting i Tracing.
39. Opowiedz o mechanizmie autoboxing w Java.
40. Jak serializacja jest zaimplementowana w Java? Gdzie możemy ją zobaczyć?
41. W czym różnią się WeakReference i SoftReference?
42. Co to są generics? Po co są potrzebne? Jaki problem rozwiązują?
43. Co to jest PECS i jak się go używa? Podaj przykłady.
44. Po co w praktyce mogą być potrzebne immutable objects?

Biblioteki i narzędzia

45. Do czego służą narzędzia Maven, Ant, Gradle?
46. Co to są Unit Tests? Czym klasa JUnit.Assert różni się od słowa kluczowego assert?
47. Co to jest Spring core i po co go używać? Wytłumacz pojęcia Inversion of Control i Dependency Injection.
48. Jak działa @Transactional „pod maską”?
49. Jak działa Spring „pod maską”?
50. Co to jest Hibernate i po co go używać? Wytłumacz pojęcie ORM.
51. Co to jest LazyLoadingException i kiedy występuje?
52. Jak działa Hibernate „pod maską”? Jak napisałbyś własny Hibernate?

Wielowątkowość

53. Jakie są zalety i wady użycia multithreading?
54. Opowiedz o czterech sposobach pracy z wieloma wątkami i czym różni się wait…notify…notifyAll od synchronized? Od Future?
55. Co to jest ThreadLocal i po co się go używa?
56. Jaka jest różnica między Thread.sleep() a Thread.yield()?
57. Jak działa Thread.join()?
58. Co to jest deadlock?
59. Co to jest race condition?
60. Do czego służą volatile, synchronized, transient, native?
61. Opowiedz o priorytetach wątków.
62. Co to są daemon threads i po co je ustawiać?
63. Dlaczego nie zaleca się używania Thread.stop()?
64. Jak zaimplementować thread pool?

Collections

65. Czym różni się List od Set?
66. Jaka jest różnica między HashSet, LinkedHashSet i TreeSet?
67. Jaka jest wewnętrzna struktura HashMap?
68. Jaki jest czas wyszukiwania elementu w ArrayList, HashSet?
69. Jak zaimplementować własny Stack?
70. Jak działa metoda put w HashMap? Dlaczego trzeba obliczać pozycję bucket? Jakie są zalety takiej operacji?
71. Jaka jest różnica między HashMap a TreeMap? Kiedy i gdzie należy ich używać?
72. Jaka jest wewnętrzna struktura TreeMap? Opowiedz o RBT.

Stream API

73. Jakie metody są w interfejsie Stream?
74. Czym różni się metoda map od flatMap?
75. Jaki functional interface używa metoda filter?

Bazy danych

76. Jaka jest różnica między relational databases i non-relational databases?
77. Jak są przechowywane relacje one-to-one, one-to-many i many-to-many w tabelach?
78. Co to jest database normalization? Podaj przykłady z realnego projektu.
79. Jakie są rodzaje indeksów w databases?

Zadania praktyczne

80. Valid parentheses (zadanie z LeetCode).
81. Reverse Linked List (zadanie z LeetCode).
82. Mając String s, znajdź długość maksymalnego substring bez powtórzeń.
83. Określ, czy singly-linked LinkedList jest palindrome.

Senior

Ogólne

  1. Kiedy lepiej użyć inheritance zamiast aggregation?
  2. Opowiedz o zasadach działania Kubernetes.

Java Core

3. Jaka jest różnica między Java NIO a Java IO?
4. Czym różni się Lambda od anonymous class?
5. Opowiedz o Java Memory Model.
6. Jakie są typy pamięci w JVM?
7. Opisz lifecycle of a Java object. W jaki sposób obiekt przechodzi z jednej obszaru pamięci Garbage Collector do innej? Co powoduje taką zmianę?
8. Jak można zmusić JVM do uruchomienia Garbage Collector?
9. Jakie Garbage Collectors istnieją w JVM i po co jest ich tak wiele?
10. Jakie warianty Garbage Collector są dostępne w HotSpot i jak działają?
11. Co stanie się z Garbage Collector, jeżeli finalize() będzie długo wykonywać się lub podczas jego działania wystąpi exception?
12. Czym ForkJoinPool różni się od ScheduledThreadPoolExecutor oraz ThreadPoolExcutor?
13. Jaka jest różnica między HashMap, WeakHashMap, Hashtable i IdentityHashMap?
14. Co to jest LinkedHashMap?
15. Co to jest EnumSet? Do czego się go używa? Jak go zaimplementować?
16. Opowiedz o cechach serializacji w Java. Po co jest serialVersionUID i InvalidClassException?
17. Na czym polega problem serializacji Singleton?
18. Jakie algorytmy tree traversal istnieją i dlaczego się różnią?
19. Co to jest deadlock? Jakie typy występują? Narysuj schemat, jak może dojść do deadlocka.

Bazy danych

20. Co to jest ACID? 21. Co oznacza CAP theorem?
22. Jakie są isolation levels transakcji?
23. Czy warto rezygnować z używania ORM?
24. Co to jest n+1 problem?
25. Co to jest cartesian product problem?

Biblioteki i narzędzia

26. Jak zbudować monitoring w Java? Opowiedz o cechach użycia Java micrometrics, DropWizard lub Prometheus frameworks.
27. Opisz mechanizm działania ORM.
28. Jakie sposoby fetchingu danych w Hibernate znasz?
29. Jakie isolation levels istnieją w Hibernate?

Spring

30. Co to jest IoC i DI?
31. Jaki jest lifecycle obiektów tworzonych przez Spring?
32. Jakie types of contexts są dostępne?
33. Jak utworzyć i uruchomić context do testowania aplikacji?
34. Jakie możliwości Spring oferuje do komunikacji z bazą danych?
35. Jak rozpoznać, iż klasa jest Java Bean? Czym POJO różni się od Java Bean?
36. Opisz mechanizm dependency injection w Spring.
37. Dlaczego wszystkie dependencies w Spring są Java Beans? Czy można użyć Spring do zarządzania dependencies między nie-Java Beans classes?
38. Czym Spring singleton różni się od prototype?
39. Czy warto rezygnować z użycia Dependency Injection?

Wielowątkowość

40. Co to jest race-condition?
41. Jakie elementy zawiera java.util.concurrent package?
42. Co to jest optimistic i pessimistic locking?
43. Jakie cechy ma multithreading w Java EE i Spring?

Stream API

44. Jakie są podstawowe założenia Stream API?

Praktyczne zadania

45. Zaimplementuj service, który przyjmuje URL i zwraca jego krótką wersję (np. bit.ly/86gfr3).

Idź do oryginalnego materiału