250+ запитань з Java для Junior, Middle та Senior
Ми запитали у СТО та досвідчених фахівців, що проводять інтерв’ю з Java, про те, які теоретичні запитання ставлять і які задачі та завдання пропонують розв’язати кандидатам. Адже, готуючись до технічної співбесіди, важливо мати чіткий план. Сподіваємося, цей список запитань стане своєрідним путівником, що допоможе отримати бажану посаду.
Попередні статті рубрики присвячені Python, .NET та JavaScript.
Junior
Загальні
1.Які знаєте шаблони проєктування? Розкажіть про два шаблони, які використовували в роботі.
Java Core
2.Які є типи даних в Java?
3.Чим відрізняється об’єкт від примітивних типів даних?
4.У чому різниця передачі параметрів за посиланням і за значенням?
5.Що таке JVM, JDK, JRE?
6.Навіщо використовують JVM?
7.Що таке bytecode?
8.Які ознаки JavaBean?
9.Що таке OutOfMemoryError?
10.Що таке стектрейс? Як його отримати?
11.Назвіть всі методи класу object.
12.У чому відмінність між try-with-resources i try-catch-finally при роботі з ресурсами?
13.Що таке конструктори? Які типи знаєте?
14.Що таке побітові операції?
15.Об’єкти яких стандартних класів immutable в Java?
16.Дайте коротку характеристику immutable object. Навіщо вони потрібні?
17.Як створити immutable object?
18.Які переваги immutable object перед звичайними об’єктами?
ООП
19.Що таке ООП? Назвіть принципи з прикладами.
20.У чому переваги ООП перед процедурним програмуванням?
21.У чому полягає головна особливість ООП?
22.Розкажіть, які переваги ми отримуємо із застосуванням ООП?
23.Розкажіть, які недоліки в ООП?
24.Розкажіть про принцип успадкування в ООП? Навіщо він потрібний?
25.Дайте визначення принципу поліморфізм в ООП? Як працює поліморфізм?
26.Що таке статичний і динамічний поліморфізм?
27.Дайте визначення принципу абстракції в ООП.
28.Які елементи мови відповідають за інкапсуляцію?
29.Які елементи мови відповідають за наслідування?
30.Які елементи мови відповідають за поліморфізм?
31.Що таке SOLID? Наведіть приклади.
32.Що таке перевантаження (overloading) методу?
33.Що таке перевизначення (override) методу?
34.Що таке клас, об’єкт, інтерфейс?
35.Що таке клас POJO? Наведіть приклад такого класу.
36.Які елементи може містити клас?
37.Дайте визначення об’єкта?
38.Розкажіть про наслідування в Java. Які особливості використання ключового слова super?
39.Що таке сигнатура методу? Наведіть приклади правильних і неправильних сигнатур.
40.Чи можна в конструкторі застосовувати return?
41.Чи можна в конструкторі виконати виняток (exception)?
42.З яких елементів складається заголовок класу? Напишіть приклад.
43.З яких елементів складається заголовок методу? Напишіть приклад.
44.Створіть в об’єкті-спадкоємці конструктор за замовчуванням, якщо в базовому класі він не визначений (але визначений інший конструктор).
45.Коли застосовується ключове слово this?
46.Що таке ініціалізатор?
47.Для успадкування класу public class Child extends Parent напишіть порядок ініціалізації об’єкта.
48.Які знаєте відносини між класами (об’єктами)?
49.Які асоціативні зв’язки між об’єктами ви знаєте?
50.Що таке модифікатори доступу в Java? Назвіть їх. Навіщо використовуються?
51.Назвіть основну особливість статичних змінних і методів.
52.Які основні обмеження діють на статичні змінні й методи?
53.Що означає ключове слово static? Чи може статичний метод бути перевизначеним або перевантаженим?
54.Чи може бути метод статичним і абстрактним одночасно?
55.Чи можна використовувати статичні методи всередині звичайних? Навпаки? Чому?
56.Що означає ключове слово final?
57.Що таке abstract? Абстрактний клас? Абстрактний метод?
58.Що таке interface? Чи може бути final interface?
59.У чому різниця між абстрактним класом та інтерфейсом в Java?
60.Де можна ініціалізувати статичні поля?
61.Що таке анонімні класи?
62.Що таке примітивні класи?
63.Що таке клас «обгортка» (wrapper)?
64.Що таке Nested class? Коли використовується?
65.Які модифікатори доступу можуть бути у класу?
Бібліотеки та стандарти
67.Що таке Hibernate? У чому різниця між JPA i Hibernate?
68.Що таке каскадність? Як вона використовується в Hibernate?
69.Чи може entity-клас бути абстрактним класом?
70.Що таке entity manager? За що відповідає?
71.Що таке клас Assert? Навіщо і як його використовувати?
String
72.Дайте характеристику String у Java.
73.Які є способи створення об’єкта String? Де він створюється?
74.Як порівняти дві стрічки в Java і/або відсортувати їх?
75.Запропонуйте алгоритм перетворення стрічки на символ. Напишіть відповідний код.
76.Як перетворити стрічку в масив байтів і назад? Напишіть відповідний код.
77.Що таке стрічковий пул і навіщо він потрібен?
78.Які GOF-шаблони застосовуються в стрічковому пулі?
79.Як розділити стрічку на частини? Напишіть відповідний код.
80.Чому масив символів кращий від стрічки для зберігання пароля?
81.Яка різниця між String, StringBuffer та StringBuilder?
Enum
82.Дайте коротку характеристику Enum у Java.
83.Чи може Enum реалізовувати (implement) інтерфейс?
84.Чи може Enum розширити (extends) клас?
85.Чи можна створити Enum без екземплярів об’єктів?
86.Чи можемо ми перевизначити метод toString () для Enum?
87.Що буде, якщо не будемо перевизначати метод toString () для Enum?
88.Чи можемо ми вказати конструктор всередині Enum?
89.У чому різниця між == і equals ()?
90.Що робить метод ordinal () в Enum?
91.Чи можна використовувати Enum з TreeSet або TreeMap в Java?
92.Як пов’язані методи ordinal () і compareTo () в Enum?
93.Напишіть приклад Enum.
94.Чи можна використовувати Enum у switch case?
95.Як отримати всі наявні значення в екземплярі Enum?
Stream API
96.Що таке Stream у Java?
97.Назвіть основні властивості транзакцій.
98.Які є рівні ізоляції транзакцій?
99.Яка різниця між Statement i PreparedStatement?
Collections
100.Розкажіть про ітератори та їх застосування.
101.Яка ієрархія колекцій у Java Collection Framework?
102.Яка внутрішня будова ArrayList?
103.Яка внутрішня будова LinkedList?
104.Яка внутрішня будова HashMap?
105.Чим відрізняється ArrayList від LinkedList?
106.Чим відрізняється ArrayList від HashSet?
107.Навіщо в Java таке різноманіття імплементації динамічного масиву?
108.Навіщо в Java таке різноманіття імплементації key-value storage?
109.Як відсортувати колекцію елементів?
Class Object. Equals and HashCode
110.Дайте коротку характеристику class object у Java.
111.Для чого використовують Equals and HashCode в Java?
112.Розкажіть про контракт між Equals and HashCode в Java?
113.Які умови висуваються щодо перевизначення угоди при перевизначенні Equals?
114.Що буде, якщо не перевизначити Equals and HashCode?
115.Які значення ми отримаємо, якщо у нас не перерозподілені Equals and HashCode?
116.Чому симетричність виконується, тільки якщо x.equals (y) повертає значення true?
117.Що таке колізія в HashCode? Як з нею боротися?
118.Що буде, якщо елемент, який бере участь в контракті із HashCode, змінює своє значення?
119.Напишіть методи Equals and HashCode для класу Student, який складається з полів String name та int age.
120.У чому різниця застосування if (obj instanceof Student) та if (getClass () == obj.getClass ())?
121.Дайте коротку характеристику методу clone ().
122.У чому полягає особливість роботи методу clone () з полями об’єкта типу-посилання?
Exceptions
123.Дайте визначення поняттю exception (виняткова ситуація).
124.Які знаєте особливості використання оператору try...catch?
125.У чому різниця між error і exception?
126.Яка різниця між checked і unchecked, exception, throw, throws.
127.Якою є ієрархія винятків?
128.Що таке checked і unchecked exception?
129.Чи потрібно перевіряти checked exception?
130.Про що говорить і як використовувати ключове слово throws?
131.Які можливі способи обробки винятків ви знаєте?
132.Напишіть приклад перехоплення та обробки винятку в блоці try-catch методу.
133.Напишіть приклад перехоплення та обробки винятку в секції throws-методу і передачі викликаючому методу.
134.Напишіть приклад перехоплення та обробки винятку з використанням власних винятків.
135.Які є правила для перевіряння винятків під час наслідування?
136.Чи могли б ви написати код, якщо блок finally не буде виконано?
137.Напишіть приклад обробки декількох винятків в одному блоці catch
138.Який оператор дозволяє примусово викинути виняток? Напишіть приклад.
139.Чи може метод main викинути throws-виняток? Якщо так — куди передасть?
140.Напишіть приклад try with resources.
Багатопотоковість
141.Які засоби для роботи з багатопотоковістю знаєте?
142.Що таке процес і потік? Чим відрізняється процес від потоку?
143.Розкажіть про синхронізацію між потоками. Для чого використовують методи wait(), notify() - notifyAll(), join()?
144.Як зупинити потік?
145.Як між потоками обмінюватися даними?
146.У чому полягає відмінність класу Thread від інтерфейсу Runnable?
147.Є потоки Т1, Т2 і Т3. Як реалізувати їхнє послідовне виконання?
Практичні завдання
148.Matrix Diagonal Sum (задача з Leetcode).
149.Move Zeroes (задача з Leetcode).
150.Given List<String> names
. Видаліть першу літеру з кожного імені та поверніть відсортований список.
151.Перевернути масив.
152.Перевірити, чи є стрічка паліндромом.
153.Написати простий алгоритм сортування (Bubble, Selection або Shuttle). Як його можна покращити?
154.Напишіть алгоритм (послідовність дій) складання літералу типу int і літералу типу byte. Поясніть, що відбувається з пам’яттю.
Middle
Загальні
1.У чому переваги та недоліки ООП, якщо порівнювати з процедурним/функціональним програмуванням?
2.Чим відрізняється агрегація від композиції?
3.Які патерни GoF ви використовували на практиці? Наведіть приклади.
4.Що таке проксі-об’єкт? Наведіть приклади.
5.Які нововведення анонсовано в Java 8?
6.Що таке High Cohesion і Low Coupling? Наведіть приклади.
ООП
7.Яким чином можна реалізувати множинне наслідування в Java?
8.Яка різниця між методами final, finally та finalize()?
Java Core
9.У чому різниця між статичним і динамічним зв’язуванням у Java?
10.Чи можна використовувати private або protected змінні в interface?
11.Що таке Classloader і для чого використовується?
12.Що таке Run-Time Data Areas?
13.Що таке immutable object?
14.В чому особливість класу String?
15.Що таке коваріантність типів?
16.Які є методи у класі Object?
17.Наведіть приклади вдалого та невдалого використання Optional.
18.Чи можна оголошувати main method як final?
19.Чи можна імпортувати ті самі package/class двічі? Які наслідки?
20.Що таке Casting? Коли можемо отримати виняток ClassCastException?
21.Чому сучасні фреймворки використовують здебільшого лише unchecked exceptions?
22.Що таке static import?
23.Який зв’язок між методами hashCode() і equals()?
24.Коли використовують BufferedInputStream та BufferedOutputStream класи?
25.Яка різниця між класами java.util.Collection і java.util.Collections?
26.Яка різниця між Enumeration і Iterator?
27.У чому різниця між ітераторами fail-fast і fail-safe?
28.Навіщо потрібен модифікатор transient?
29.Як впливають на серіалізацію модифікатори static і final?
30.Які особливості використання інтерфейсу Cloneable?
31.Які особливості використання інтерфейсу AutoCloseable?
32.Що таке FunctionInterface і чим він відрізняється від звичайного інтерфейсу?
33.Що таке і навіщо потрібні Atomic types?
34.Що таке Happens-before? Які особливості використання ключового слова volatile?
35.Розкажіть про Heap і Stack пам’ять у Java. У чому різниця між ними? Де зберігаються примітиви?
36.Чим відрізняється stack від heap пам’яті? Коли і яка область пам’яті резервується? Навіщо таке розділення потрібно?
37.Які принцип роботи та області пам’яті Garbage Collector?
38.Як працює Garbage Collector? Розкажіть про Reference counting і Tracing.
39.Розкажіть про механізм роботи autoboxing у Java.
40.Як реалізована серіалізація в Java? Де ми можемо її побачити?
41.Розкажіть, у чому різниця між WeakReference та SoftReference?
42.Що таке generics? Для чого вони потрібні? Яку проблему вирішують?
43.Що таке PECS і як використовується? Наведіть приклади.
44.Навіщо на практиці можуть знадобитися immutable об’єкти?
Бібліотеки та інструменти
45.Чим корисні інструменти Maven, Ant, Gradle?
46.Що таке Unit Tests? Чим клас JUnit.Assert відрізняється від ключового слова assert?
47.Що таке і навіщо потрібен Spring core? Розкрийте поняття Inversion of Control і Dependency Injection.
48.Як «під капотом» працює @Transactional?
49.Як «під капотом» працює Spring?
50.Що таке і навіщо потрібен Hibernate? Розкрийте поняття ORM.
51.Що таке і коли виникає LazyLoadingException?
52.Як «під капотом» працює Hibernate? Як би ви написали власний Hibernate?
Багатопотоковість
53.Які переваги та недоліки використання багатопотоковості?
54.Розкажіть про чотири способи роботи з багатьма потоками та чим відрізняється wait...notify...notifyAll від synchronized? Від Future?
55.Що таке і навіщо потрібен ThreadLocal?
56.У чому різниця між Thread.sleep() і Thread.yield()?
57.Як працює Thread.join()?
58.Що таке deadlock?
59.Що таке race condition?
60.Для чого використовувати volatile, synchronized, transient, native?
61.Розкажіть про пріоритети потоків.
62.Що таке і для чого встановлювати потоки-демони?
63.Чому не бажано використовувати Thread.stop()?
64.Як реалізувати пул потоків?
Collections
65.Чим відрізняється List від Set?
66.У чому різниця між HashSet, LinkedHashSet та TreeSet?
67.Яка внутрішня структура HashMap?
68.Який час пошуку елемента в ArrayList, HashSet?
69.Як реалізувати свій Stack?
70.Як працює метод put в HashMap? Чому нам потрібно вираховувати позицію бакету? У чому переваги такої операції?
71.У чому різниця між HashMap and TreeMap? Коли та де їх потрібно використовувати?
72.Яка внутрішня будова TreeMap? Розказати про RBT.
Stream API
73.Які є методи в інтерфейсі Stream?
74.Чим відрізняється метод map від flatMap?
75.Який функціональний інтерфейс використовує метод filter?
Бази даних
76.У чому різниця між реляційними та нереляційними базами даних?
77.Як зберігаються співвідношення one-to-one, one-to-many та many-to-many у вигляді таблиць?
78.Що таке нормалізація БД? Наведіть приклади з реального проєкту.
79.Які є види індексів у БД?
Практичні завдання
80.Valid parentheses (задача з LeetCode).
81.Reverse Linked List (задача з LeetCode).
82.Дано String s, знайти довжину максимального substring без повтору символів.
83.Визначити, чи є однозв’язний LinkedList паліндромом.
Senior
Загальні
1.Коли краще використовувати наслідування, а не агрегацію?
2.Розкажіть про принципи роботи Kubernetes.
Java Core
3.У чому різниця між Java NIO та Java IO?
4.Чим відрізняється Lambda від анонімного класу?
5.Розкажіть про Java Memory Model.
6.Які є типи пам’яті у JVM?
7.Опишіть життєвий цикл Java-об’єкта. Яким чином об’єкт переходить з однієї області пам’яті Garbage Collector до іншої? Що є тригером такого переходу?
8.Яким чином можна змусити JVM запустити Garbage Collector?
9.Які існують Garbage Collectors у JVM і навіщо їх стільки?
10.Які різновиди Garbage Collector є в HotSpot? Як працюють?
11.Що буде з Garbage Collector, якщо finalize() буде довго виконуватись або в процесі виконання отримаємо виняток?
12.Чим ForkJoinPool відрізняється від ScheduledThreadPoolExecutor та ThreadPoolExcutor?
13.Яка різниця між HashMap, WeakHashMap, Hashtable, IdentityHashMap?
14.Що таке LinkedHashMap?
15.Що таке EnumSet? Для чого використовувати? Як реалізувати?
16.Розкажіть про особливості серіалізації у Java. Навіщо serialVersionUID та InvalidClassException?
17.У чому проблема серіалізації Singleton?
18.Які бувають алгоритми обходу дерев і чому вони різні?
19.Що таке deadlock? Які типи існують? Намалюйте схематично, як може статися.
Бази даних
20.Що таке ACID?
21.Що означає CAP-теорема?
22.Які є рівні ізоляції транзакцій?
23.Чи є сенс відмовлятися від використання ORM?
24.Що таке n+1 проблема?
25.Що таке cartesian product проблема?
Бібліотеки та інструменти
26.Яким чином побудувати monitoring в Java? Розкажіть про особливості використання Java micrometrics або DropWizard, або Prometheus frameworks.
27.Опишіть механізм роботи ORM.
28.Які способи вибірки даних у Hibernate ви знаєте?
29.Які ізоляції транзакцій існують в Hibernate?
Spring
30.Що таке IoC та DI?
31.Який життєвий цикл об’єктів, які створює Spring?
32.Які є види контекстів?
33.Як створити та підняти контекст з метою тестування застосунку?
34.Які можливості Spring надає для комунікації з базою даних?
35.Які ознаки того, що клас — Java Bean? Чим POJO відрізняється від Java Bean?
36.Опишіть механізм ін’єкції залежності в Spring.
37.Чому всі залежності Spring є Java Beans? Чи можливо використовувати Spring для керування залежностями між не Java Beans класами?
38.Чим Spring singleton відрізняється від prototype?
39.Чи є сенс відмовлятися від використання Dependency Injection?
Багатопотоковість
40.Що таке race-condition?
41.Які елементи є в java.util.concurrent пакеті?
42.Що таке optimistic та pessimistic locking?
43.Які особливості багатопотоковості в Java EE та Spring?
Stream API
44.Які основні засади Stream API?
Практичні завдання
45.Реалізувати сервіс, який на вхід приймає url і повертає коротку версію (на зразок bit.ly/86gfr3).
Дякуємо за допомогу в підготовці статті Олександру Редьку, Антону Наумову, Богдану Чупіці, Максиму Ляшенку, Олександру Навці, Сергію Маленку, Андрію Петрику, Сергію Громовому, Денису Душину, Івану Чубі.