Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 1 февраля 2021 года. Оригинальная версия на украинском языке доступна по ссылке
Редакция DOU.ua обратилась к СТО и опытным специалистам, которые проводят интервью по направлению Java, о том, какие теоретические вопросы задают и какие задачи и задания предлагают решить кандидатам. Ведь, готовясь к техническому собеседованию, важно иметь четкий план. На основе полученных ответов составлена эта подборка вопросов с градацией по уровню специалиста. Надеемся, этот список вопросов станет своеобразным путеводителем, который поможет получить желаемую должность.
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 и try-catch-finally при работе с ресурсами?
13. Что такое конструкторы? Какие типы знаете?
14. Что такое побитовые операции?
15. Объекты каких стандартных классов immutable в Java?
16. Дайте краткую характеристику immutable object. Зачем они нужны?
17. Как создать immutable object?
18. Какие преимущества immutable object перед обычными объектами?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Стартовый (урок 1, урок 2, урок 5), Java Базовый (урок 1, урок 2, урок 8, урок 9).
ООП
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. Какие модификаторы доступа могут быть у класса?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах Java Базовый (урок 1-4, урок 6, урок 7, урок 9), SOLID принципы в Java.
Библиотеки и стандарты
67. Что такое Hibernate? В чем разница между JPA i Hibernate?
68. Что такое каскадность? Как она используется в Hibernate?
69. Может ли entity-класс быть абстрактным классом?
70. Что такое entity manager? За что отвечает?
71. Что такое класс Assert? Зачем и как его использовать?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе JDBC & Hibernate.
String
72. Дайте характеристику String в Java.
73. Какие есть способы создания объекта String? Где он создается?
74. Как сравнить две строки в Java и/или отсортировать их?
75. Предложите алгоритм преобразования строки в знак. Напишите соответствующий код.
76. Как превратить строку в массив байтов и обратно? Напишите соответствующий код.
77. Что такое строковый пул и зачем он нужен?
78. Какие GOF-шаблоны применяются в строковом пуле?
79. Как разделить строку на части? Напишите соответствующий код.
80. Почему массив символов лучше, чем строка для хранения пароля?
81. Какая разница между String, StringBuffer и StringBuilder?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Углублённый (урок 5).
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?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах Java Базовый (урок 7), Java Углублённый (Урок 3).
Stream API
96. Что такое Stream в Java?
97. Назовите основные свойства транзакций.
98. Какие есть уровни изоляции транзакций?
99. Какая разница между Statement и PreparedStatement?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Углублённый (урок 15).
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. Как отсортировать коллекцию элементов?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Базовый (урок 5), Java Углублённый (урок 3, урок 15).
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() с полями объекта типа-ссылки?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Базовый (урок 9).
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.
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Базовый (урок 8).
Многопоточность
141. Какие средства для работы с многопоточностью знаете?
142. Что такое процесс и поток? Чем отличается процесс от потока?
143. Расскажите о синхронизации между потоками. Для чего используют методы wait(), notify() - notifyAll(), join()?
144. Как остановить поток?
145. Как между потоками обмениваться данными?
146. В чем заключается отличие класса Thread от интерфейса Runnable?
147. Есть потоки Т1, Т2 и Т3. Как реализовать их последовательное выполнение?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Углублённый (урок 13, урок 14).
Практические задания
148. Matrix Diagonal Sum (задача с Leetcode).
149. Move Zeroes (задача с Leetcode).
150. Дан 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? Приведите примеры.
Лучше всего тема шаблонов в Java раскрыта в видео курсе Паттерны проектирования в Java.
ООП
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 объекты?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Базовый и Java Углублённый.
Библиотеки и инструменты
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?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах JDBC & Hibernate, Unit тестирование в Java с JUnit, Spring, Spring MVC.
Многопоточность
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. Как реализовать пул потоков?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Углублённый (урок 13, урок 14).
Collections
65. Чем отличается List от Set?
66. В чем разница между HashSet, LinkedHashSet и TreeSet?
67. Какая внутренняя структура HashMap?
68. Какое время поиска элемента в ArrayList, HashSet?
69. Как реализовать свой Stack?
70. Как работает метод put в HashMap? Почему нам нужно высчитывать позицию бакета? В чем преимущества такой операции?
71. В чем разница между HashMap и TreeMap? Когда и где их нужно использовать?
72. Какое внутреннее строение TreeMap? Рассказать об RBT.
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Углублённый (урок 1, урок 2, урок 3).
Stream API
73. Какие есть методы в интерфейсе Stream?
74. Чем отличается метод map от flatMap?
75. Какой функциональный интерфейс использует метод filter?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Углублённый (урок 15).
Базы данных
76. В чем разница между реляционными и нереляционными базами данных?
77. Как хранятся соотношения one-to-one, one-to-many и many-to-many в виде таблиц?
78. Что такое нормализация БД? Приведите примеры из реального проекта.
79. Какие есть виды индексов в БД?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе SQL Базовый.
Практические задания
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 и ThreadPoolExecutor?
13. Какая разница между HashMap, WeakHashMap, Hashtable, IdentityHashMap?
14. Что такое LinkedHashMap?
15. Что такое EnumSet? Для чего использовать? Как реализовать?
16. Расскажите об особенностях сериализации в Java. Зачем serialVersionUID и InvalidClassException?
17. В чем проблема сериализации Singleton?
18. Какие бывают алгоритмы обхода деревьев и почему они разные?
19. Что такое deadlock? Какие типы существуют? Нарисуйте схематично, как может произойти.
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Java Базовый и Java Углублённый.
Бесплатные вебинары по схожей тематике:
Базы данных
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?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах Spring, Spring MVC.
Многопоточность
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).
Редакция DOU.ua благодарит за помощь в подготовке статьи Александра Редька, Антона Наумова, Богдана Чупика, Максима Ляшенко, Александра Навка, Сергея Маленко, Андрея Петрика, Сергея Громового, Дениса Душина, Ивана Чуба.
Смотрите также статьи с вопросами на собеседовании по Python, .NET и JavaScript.
Статьи по схожей тематике