Свёрстанные вопросы и ответы by Victoria Demidova
Telegram Bot by cmmttd
Вопросы для собеседования на Java Developer
- ООП
- JVM
- Java Core
- Java Collections Framework
- Java 8
- Потоки ввода-вывода в Java
- Сериализация
- Многопоточность
- Реактивное программирование
- Servlets, JSP, JSTL
- Базы данных
- SQL
- JDBC
- Тестирование
- Журналирование
- UML
- XML
- Шаблоны проектирования
- Основы HTML
- Основы CSS
- Основы Web
- Apache Kafka
- Дополнительные материалы
ООП
- Что такое ООП?
- Назовите основные принципы ООП.
- Что такое «инкапсуляция»?
- Что такое «наследование»?
- Что такое «полиморфизм»?
- Что такое «абстракция»?
- Что представляет собой «обмен сообщениями»?
- Расскажите про основные понятия ООП: «класс», «объект», «интерфейс».
- В чем заключаются преимущества и недостатки объектно-ориентированного подхода в программировании?
- Что подразумевают в плане принципов ООП выражения «является» и «имеет»?
- В чем разница между композицией и агрегацией?
- Что такое статическое и динамическое связывание?
к оглавлению
JVM
- За что отвечает JVM
- Classloader
- Области данных времени выполнения
- Frames
- Execution Engine
- Полезные ссылки
к оглавлению
Java Core
- Чем различаются JRE, JVM и JDK?
- Какие существуют модификаторы доступа?
- О чем говорит ключевое слово
final
?
- Какими значениями инициализируются переменные по умолчанию?
- Что вы знаете о функции
main()
?
- Какие логические операции и операторы вы знаете?
- Что такое тернарный оператор выбора?
- Какие побитовые операции вы знаете?
- Где и для чего используется модификатор
abstract
?
- Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
- Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
- Почему в некоторых интерфейсах вообще не определяют методов?
- Почему нельзя объявить метод интерфейса с модификатором
final
?
- Что имеет более высокий уровень абстракции - класс, абстрактный класс или интерфейс?
- Может ли объект получить доступ к
private
-переменной класса? Если, да, то каким образом?
- Каков порядок вызова конструкторов и блоков инициализации с учётом иерархии классов?
- Зачем нужны и какие бывают блоки инициализации?
- К каким конструкциям Java применим модификатор
static
?
- Для чего в Java используются статические блоки инициализации?
- Что произойдёт, если в блоке инициализации возникнет исключительная ситуация?
- Какое исключение выбрасывается при возникновении ошибки в блоке инициализации класса?
- Может ли статический метод быть переопределён или перегружен?
- Могут ли нестатические методы перегрузить статические?
- Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?
- Возможно ли при переопределении метода изменить: модификатор доступа; возвращаемый тип; тип аргумента или их количество; имена аргументов или их порядок, убирать, добавлять, изменять порядок следования элементов секции
throws
?
- Как получить доступ к переопределенным методам родительского класса?
- Можно ли объявить метод абстрактным и статическим одновременно?
- В чем разница между членом экземпляра класса и статическим членом класса?
- Где разрешена инициализация статических/нестатических полей?
- Какие типы классов бывают в java?
- Расскажите про вложенные классы. В каких случаях они применяются?
- Что такое «статический класс»?
- Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?
- Что такое «локальный класс»? Каковы его особенности?
- Что такое «анонимные классы»? Где они применяются?
- Каким образом из вложенного класса получить доступ к полю внешнего класса?
- Для чего используется оператор
assert
?
- Для чего нужен сборщик мусора?
- Как работает сборщик мусора?
- Какие разновидности сборщиков мусора реализованы в виртуальной машине HotSpot?
- Опишите алгоритм работы какого-нибудь сборщика мусора реализованного в виртуальной машине HotSpot.
- Что такое
finalize()
? Зачем он нужен?
- Что произойдет со сборщиком мусора, если выполнение метода
finalize()
требует ощутимо много времени, или в процессе выполнения будет выброшено исключение?
- Чем отличаются
final
, finally
и finalize()
?
- Что такое Heap и Stack память в Java? Какая разница между ними?
- Верно ли утверждение, что примитивные типы данных всегда хранятся в стеке, а экземпляры ссылочных типов данных в куче?
- Каким образом передаются переменные в методы, по значению или по ссылке?
- Расскажите про приведение типов. Что такое понижение и повышение типа?
- Когда в приложении может быть выброшено исключение
ClassCastException
?
- Что такое литералы?
- Что такое autoboxing («автоупаковка») в Java и каковы правила упаковки примитивных типов в классы-обертки?
- Какие есть особенности класса
String
?
- Что такое «пул строк»?
- Почему
String
неизменяемый и финализированный класс?
- Почему
char[]
предпочтительнее String
для хранения пароля?
- Почему строка является популярным ключом в
HashMap
в Java?
- Что делает метод
intern()
в классе String
?.
- Можно ли использовать строки в конструкции
switch
?
- Какая основная разница между
String
, StringBuffer
, StringBuilder
?
- Что такое класс
Object
? Какие в нем есть методы?
- Расскажите про клонирование объектов.
- В чем отличие между поверхностным и глубоким клонированием?
- Какой способ клонирования предпочтительней?
- Почему метод
clone()
объявлен в классе Object
, а не в интерфейсе Cloneable
?
- Дайте определение понятию «конструктор».
- Что такое «конструктор по умолчанию»?
- Чем отличаются конструкторы по-умолчанию, копирования и конструктор с параметрами?
- Где и как вы можете использовать закрытый конструктор?
- Расскажите про классы-загрузчики и про динамическую загрузку классов.
- Что такое Reflection?
- Зачем нужен
equals()
. Чем он отличается от операции ==
?
equals()
порождает отношение эквивалентности. Какими свойствами обладает такое отношение?
- Если вы хотите переопределить
equals()
, какие условия должны удовлетворяться для переопределенного метода?
- Правила переопределения метода
Object.equals()
.
- Какая связь между
hashCode()
и equals()
?
- Если
equals()
переопределен, есть ли какие-либо другие методы, которые следует переопределить?
- Что будет, если переопределить
equals()
не переопределяя hashCode()
? Какие могут возникнуть проблемы?
- Каким образом реализованы методы
hashCode()
и equals()
в классе Object
?
- Для чего нужен метод
hashCode()
?
- Правила переопределения метода
Object.hashCode()
.
- Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете
hashCode()
?
- Могут ли у разных объектов быть одинаковые
hashCode()
?
- Если у класса
Point{int x, y;}
реализовать метод equals(Object that) {(return this.x == that.x && this.y == that.y)}
, но сделать хэш-код в виде int hashCode() {return x;}
, то будут ли корректно такие точки помещаться и извлекаться из HashSet
?
- Могут ли у разных объектов
(ref0 != ref1)
быть ref0.equals(ref1) == true
?
- Могут ли у разных ссылок на один объект
(ref0 == ref1)
быть ref0.equals(ref1) == false
?
- Можно ли так реализовать метод
equals(Object that) {return this.hashCode() == that.hashCode()}
?
- В
equals()
требуется проверять, что аргумент equals(Object that)
такого же типа что и сам объект. В чем разница между this.getClass() == that.getClass()
и that instanceof MyClass
?
- Можно ли реализовать метод
equals()
класса MyClass
вот так: class MyClass {public boolean equals(MyClass that) {return this == that;}}
?
- Есть класс
Point{int x, y;}
. Почему хэш-код в виде 31 * x + y
предпочтительнее чем x + y
?
- Опишите иерархию исключений.
- Какие виды исключений в Java вы знаете, чем они отличаются?
- Что такое checked и unchecked exception?
- Какой оператор позволяет принудительно выбросить исключение?
- О чем говорит ключевое слово
throws
?
- Как написать собственное («пользовательское») исключение?
- Какие существуют unchecked exception?
- Что такое
Error
?
- Что вы знаете о
OutOfMemoryError
?
- Опишите работу блока try-catch-finally.
- Что такое механизм try-with-resources?
- Возможно ли использование блока try-finally (без
catch
)?
- Может ли один блок
catch
отлавливать сразу несколько исключений?
- Всегда ли исполняется блок
finally
?
- Существуют ли ситуации, когда блок
finally
не будет выполнен?
- Может ли метод main выбросить исключение во вне и если да, то где будет происходить обработка данного исключения?
- Предположим, есть метод, который может выбросить
IOException
и FileNotFoundException
в какой последовательности должны идти блоки catch
? Сколько блоков catch
будет выполнено?
- Что такое generics?
- Что такое «интернационализация», «локализация»?
к оглавлению
Java Collections
- Что такое «коллекция»?
- Назовите основные интерфейсы JCF и их реализации.
- Расположите в виде иерархии следующие интерфейсы:
List
, Set
, Map
, SortedSet
, SortedMap
, Collection
, Iterable
, Iterator
, NavigableSet
, NavigableMap
.
- Почему
Map
— это не Collection
, в то время как List
и Set
являются Collection
?
- В чем разница между классами
java.util.Collection
и java.util.Collections
?
- Что такое «fail-fast поведение»?
- Какая разница между fail-fast и fail-safe?
- Приведите примеры итераторов реализующих поведение fail-safe
- Чем различаются
Enumeration
и Iterator
.
- Как между собой связаны
Iterable
и Iterator
?
- Как между собой связаны
Iterable
, Iterator
и «for-each»?
- Сравните
Iterator
и ListIterator
.
- Что произойдет при вызове
Iterator.next()
без предварительного вызова Iterator.hasNext()
?
- Сколько элементов будет пропущено, если
Iterator.next()
будет вызван после 10-ти вызовов Iterator.hasNext()
?
- Как поведёт себя коллекция, если вызвать
iterator.remove()
?
- Как поведёт себя уже инстанциированный итератор для
collection
, если вызвать collection.remove()
?
- Как избежать
ConcurrentModificationException
во время перебора коллекции?
- Какая коллекция реализует дисциплину обслуживания FIFO?
- Какая коллекция реализует дисциплину обслуживания FILO?
- Чем отличается
ArrayList
от Vector
?
- Зачем добавили
ArrayList
, если уже был Vector
?
- Чем отличается
ArrayList
от LinkedList
? В каких случаях лучше использовать первый, а в каких второй?
- Что работает быстрее
ArrayList
или LinkedList
?
- Какое худшее время работы метода
contains()
для элемента, который есть в LinkedList
?
- Какое худшее время работы метода
contains()
для элемента, который есть в ArrayList
?
- Какое худшее время работы метода
add()
для LinkedList
?
- Какое худшее время работы метода
add()
для ArrayList
?
- Необходимо добавить 1 млн. элементов, какую структуру вы используете?
- Как происходит удаление элементов из
ArrayList
? Как меняется в этом случае размер ArrayList
?
- Предложите эффективный алгоритм удаления нескольких рядом стоящих элементов из середины списка, реализуемого
ArrayList
.
- Сколько необходимо дополнительной памяти при вызове
ArrayList.add()
?
- Сколько выделяется дополнительно памяти при вызове
LinkedList.add()
?
- Оцените количество памяти на хранение одного примитива типа
byte
в LinkedList
?
- Оцените количество памяти на хранение одного примитива типа
byte
в ArrayList
?
- Для
ArrayList
или для LinkedList
операция добавления элемента в середину (list.add(list.size()/2, newElement)
) медленнее?
- В реализации класса
ArrayList
есть следующие поля: Object[] elementData
, int size
. Объясните, зачем хранить отдельно size
, если всегда можно взять elementData.length
?
- Сравните интерфейсы
Queue
и Deque
.
- Кто кого расширяет:
Queue
расширяет Deque
, или Deque
расширяет Queue
?
- Почему
LinkedList
реализует и List
, и Deque
?
LinkedList
— это односвязный, двусвязный или четырехсвязный список?
- Как перебрать элементы
LinkedList
в обратном порядке, не используя медленный get(index)
?
- Что позволяет сделать
PriorityQueue
?
Stack
считается «устаревшим». Чем его рекомендуют заменять? Почему?
- Зачем нужен
HashMap
, если есть Hashtable
?
- В чем разница между
HashMap
и IdentityHashMap
? Для чего нужна IdentityHashMap
?
- В чем разница между
HashMap
и WeakHashMap
? Для чего используется WeakHashMap
?
- В
WeakHashMap
используются WeakReferences. А почему бы не создать SoftHashMap
на SoftReferences?
- В
WeakHashMap
используются WeakReferences. А почему бы не создать PhantomHashMap
на PhantomReferences?
LinkedHashMap
- что в нем от LinkedList
, а что от HashMap
?
- В чем проявляется «сортированность»
SortedMap
, кроме того, что toString()
выводит все элементы по порядку?
- Как устроен
HashMap
?
- Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресации и на основе метода цепочек. Как реализована
HashMap
? Почему, по вашему мнению, была выбрана именно эта реализация? В чем плюсы и минусы каждого подхода?
- Как работает
HashMap
при попытке сохранить в него два элемента по ключам с одинаковым hashCode()
, но для которых equals() == false
?
- Какое начальное количество корзин в
HashMap
?
- Какова оценка временной сложности операций над элементами из
HashMap
? Гарантирует ли HashMap
указанную сложность выборки элемента?
- Возможна ли ситуация, когда
HashMap
выродится в список даже с ключами имеющими разные hashCode()
?
- В каком случае может быть потерян элемент в
HashMap
?
- Почему нельзя использовать
byte[]
в качестве ключа в HashMap
?
- Какова роль
equals()
и hashCode()
в HashMap
?
- Каково максимальное число значений
hashCode()
?
- Какое худшее время работы метода get(key) для ключа, которого нет в
HashMap
?
- Какое худшее время работы метода get(key) для ключа, который есть в
HashMap
?
- Почему несмотря на то, что ключ в
HashMap
не обязан реализовывать интерфейс Comparable
, двусвязный список всегда удается преобразовать в красно-черное-дерево?
- Сколько переходов происходит в момент вызова
HashMap.get(key)
по ключу, который есть в таблице?
- Сколько создается новых объектов, когда вы добавляете новый элемент в
HashMap
?
- Как и когда происходит увеличение количества корзин в
HashMap
?
- Объясните смысл параметров в конструкторе
HashMap(int initialCapacity, float loadFactor)
.
- Будет ли работать
HashMap
, если все добавляемые ключи будут иметь одинаковый hashCode()
?
- Как перебрать все ключи
Map
?
- Как перебрать все значения
Map
?
- Как перебрать все пары «ключ-значение» в
Map
?
- В чем отличия
TreeSet
и HashSet
?
- Что будет, если добавлять элементы в
TreeSet
по возрастанию?
- Чем
LinkedHashSet
отличается от HashSet
?
- Для
Enum
есть специальный класс java.util.EnumSet
. Зачем? Чем авторов не устраивал HashSet
или TreeSet
?
- Какие существуют способы перебирать элементы списка?
- Каким образом можно получить синхронизированные объекты стандартных коллекций?
- Как получить коллекцию только для чтения?
- Напишите однопоточную программу, которая заставляет коллекцию выбросить
ConcurrentModificationException
.
- Приведите пример, когда какая-либо коллекция выбрасывает
UnsupportedOperationException
.
- Реализуйте симметрическую разность двух коллекций используя методы
Collection
(addAll(...)
, removeAll(...)
, retainAll(...)
).
- Как, используя LinkedHashMap, сделать кэш c «invalidation policy»?
- Как одной строчкой скопировать элементы любой
collection
в массив?
- Как одним вызовом из
List
получить List
со всеми элементами, кроме первых и последних 3-х?
- Как одной строчкой преобразовать
HashSet
в ArrayList
?
- Как одной строчкой преобразовать
ArrayList
в HashSet
?
- Сделайте
HashSet
из ключей HashMap
.
- Сделайте
HashMap
из HashSet<Map.Entry<K, V>>
.
к оглавлению
Java 8
- Какие нововведения, появились в Java 8 и JDK 8?
- Что такое «лямбда»? Какова структура и особенности использования лямбда-выражения?
- К каким переменным есть доступ у лямбда-выражений?
- Как отсортировать список строк с помощью лямбда-выражения?
- Что такое «ссылка на метод»?
- Какие виды ссылок на методы вы знаете?
- Объясните выражение
System.out::println
.
- Что такое «функциональные интерфейсы»?
- Для чего нужны функциональные интерфейсы
Function<T,R>
, DoubleFunction<R>
, IntFunction<R>
и LongFunction<R>
?
- Для чего нужны функциональные интерфейсы
UnaryOperator<T>
, DoubleUnaryOperator
, IntUnaryOperator
и LongUnaryOperator
?
- Для чего нужны функциональные интерфейсы
BinaryOperator<T>
, DoubleBinaryOperator
, IntBinaryOperator
и LongBinaryOperator
?
- Для чего нужны функциональные интерфейсы
Predicate<T>
, DoublePredicate
, IntPredicate
и LongPredicate
?
- Для чего нужны функциональные интерфейсы
Consumer<T>
, DoubleConsumer
, IntConsumer
и LongConsumer
?
- Для чего нужны функциональные интерфейсы
Supplier<T>
, BooleanSupplier
, DoubleSupplier
, IntSupplier
и LongSupplier
?
- Для чего нужен функциональный интерфейс
BiConsumer<T,U>
?
- Для чего нужен функциональный интерфейс
BiFunction<T,U,R>
?
- Для чего нужен функциональный интерфейс
BiPredicate<T,U>
?
- Для чего нужны функциональные интерфейсы вида
_To_Function
?
- Для чего нужны функциональные интерфейсы
ToDoubleBiFunction<T,U>
, ToIntBiFunction<T,U>
и ToLongBiFunction<T,U>
?
- Для чего нужны функциональные интерфейсы
ToDoubleFunction<T>
, ToIntFunction<T>
и ToLongFunction<T>
?
- Для чего нужны функциональные интерфейсы
ObjDoubleConsumer<T>
, ObjIntConsumer<T>
и ObjLongConsumer<T>
?
- Что такое
StringJoiner
?
- Что такое
default
методы интрефейса?
- Как вызывать
default
метод интерфейса в реализующем этот интерфейс классе?
- Что такое
static
метод интерфейса?
- Как вызывать
static
метод интерфейса?
- Что такое
Optional
?
- Что такое
Stream
?
- Какие существуют способы создания стрима?
- В чем разница между
Collection
и Stream
?
- Для чего нужен метод
collect()
в стримах?
- Для чего в стримах применяются методы
forEach()
и forEachOrdered()
?
- Для чего в стримах предназначены методы
map()
и mapToInt()
, mapToDouble()
, mapToLong()
?
- Какова цель метода
filter()
в стримах?
- Для чего в стримах предназначен метод
limit()
?
- Для чего в стримах предназначен метод
sorted()
?
- Для чего в стримах предназначены методы
flatMap()
, flatMapToInt()
, flatMapToDouble()
, flatMapToLong()
?
- Расскажите о параллельной обработке в Java 8.
- Какие конечные методы работы со стримами вы знаете?
- Какие промежуточные методы работы со стримами вы знаете?
- Как вывести на экран 10 случайных чисел, используя
forEach()
?
- Как можно вывести на экран уникальные квадраты чисел используя метод
map()
?
- Как вывести на экран количество пустых строк с помощью метода
filter()
?
- Как вывести на экран 10 случайных чисел в порядке возрастания?
- Как найти максимальное число в наборе?
- Как найти минимальное число в наборе?
- Как получить сумму всех чисел в наборе?
- Как получить среднее значение всех чисел?
- Какие дополнительные методы для работы с ассоциативными массивами (maps) появились в Java 8?
- Что такое
LocalDateTime
?
- Что такое
ZonedDateTime
?
- Как получить текущую дату с использованием Date Time API из Java 8?
- Как добавить 1 неделю, 1 месяц, 1 год, 10 лет к текущей дате с использованием Date Time API?
- Как получить следующий вторник используя Date Time API?
- Как получить вторую субботу текущего месяца используя Date Time API?
- Как получить текущее время с точностью до миллисекунд используя Date Time API?
- Как получить текущее время по местному времени с точностью до миллисекунд используя Date Time API?
- Как определить повторяемую аннотацию?
- Что такое
Nashorn
?
- Что такое
jjs
?
- Какой класс появился в Java 8 для кодирования/декодирования данных?
- Как создать Base64 кодировщик и декодировщик?
к оглавлению
Потоки ввода/вывода в Java
- В чём заключается разница между IO и NIO?
- Какие особенности NIO вы знаете?
- Что такое «каналы»?
- Какие существуют виды потоков ввода/вывода?
- Назовите основные классы потоков ввода/вывода.
- В каких пакетах расположены классы потоков ввода/вывода?
- Какие подклассы класса
InputStream
вы знаете, для чего они предназначены?
- Для чего используется
PushbackInputStream
?
- Для чего используется
SequenceInputStream
?
- Какой класс позволяет читать данные из входного байтового потока в формате примитивных типов данных?
- Какие подклассы класса
OutputStream
вы знаете, для чего они предназначены?
- Какие подклассы класса
Reader
вы знаете, для чего они предназначены?
- Какие подклассы класса
Writer
вы знаете, для чего они предназначены?
- В чем отличие класса
PrintWriter
от PrintStream
?
- Чем отличаются и что общего у
InputStream
, OutputStream
, Reader
, Writer
?
- Какие классы позволяют преобразовать байтовые потоки в символьные и обратно?
- Какие классы позволяют ускорить чтение/запись за счет использования буфера?
- Какой класс предназначен для работы с элементами файловой системы?
- Какие методы класса
File
вы знаете?
- Что вы знаете об интерфейсе
FileFilter
?
- Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?
- Что вы знаете о
RandomAccessFile
?
- Какие режимы доступа к файлу есть у
RandomAccessFile
?
- Какие классы поддерживают чтение и запись потоков в компрессированном формате?
- Существует ли возможность перенаправить потоки стандартного ввода/вывода?
- Какой символ является разделителем при указании пути в файловой системе?
- Что такое «абсолютный путь» и «относительный путь»?
- Что такое «символьная ссылка»?
к оглавлению
Сериализация
- Что такое «сериализация»?
- Опишите процесс сериализации/десериализации с использованием
Serializable
.
- Как изменить стандартное поведение сериализации/десериализации?
- Как исключить поля из сериализации?
- Что обозначает ключевое слово
transient
?
- Какое влияние оказывают на сериализуемость модификаторы полей
static
и final
- Как не допустить сериализацию?
- Как создать собственный протокол сериализации?
- Какая роль поля
serialVersionUID
в сериализации?
- Когда стоит изменять значение поля
serialVersionUID
?
- В чем проблема сериализации Singleton?
- Какие существуют способы контроля за значениями десериализованного объекта
к оглавлению
Многопоточность
- Расскажите о модели памяти Java?
- Что такое «потокобезопасность»?
- В чём разница между «конкуренцией» и «параллелизмом»?
- Что такое «кооперативная многозадачность»? Какой тип многозадачности использует Java? Чем обусловлен этот выбор?
- Что такое ordering, as-if-serial semantics, sequential consistency, visibility, atomicity, happens-before, mutual exclusion, safe publication?
- Чем отличается процесс от потока?
- Что такое «зелёные потоки» и есть ли они в Java?
- Каким образом можно создать поток?
- Чем различаются
Thread
и Runnable
?
- В чём заключается разница между методами
start()
и run()
?
- Как принудительно запустить поток?
- Что такое «монитор» в Java?
- Дайте определение понятию «синхронизация».
- Какие существуют способы синхронизации в Java?
- В каких состояниях может находиться поток?
- Можно ли создавать новые экземпляры класса, пока выполняется
static synchronized
метод?
- Зачем может быть нужен
private
мьютекс?
- Как работают методы
wait()
и notify()
/notifyAll()
?
- В чем разница между
notify()
и notifyAll()
?
- Почему методы
wait()
и notify()
вызываются только в синхронизированном блоке?
- Чем отличается работа метода
wait()
с параметром и без параметра?
- Чем отличаются методы
Thread.sleep()
и Thread.yield()
?
- Как работает метод
Thread.join()
?
- Что такое deadlock?
- Что такое livelock?
- Как проверить, удерживает ли поток монитор определённого ресурса?
- На каком объекте происходит синхронизация при вызове
static synchronized
метода?
- Для чего используется ключевое слово
volatile
, synchronized
, transient
, native
?
- В чём различия между
volatile
и Atomic переменными?
- В чём заключаются различия между
java.util.concurrent.Atomic*.compareAndSwap()
и java.util.concurrent.Atomic*.weakCompareAndSwap()
.
- Что значит «приоритет потока»?
- Что такое «потоки-демоны»?
- Можно ли сделать основной поток программы демоном?
- Что значит «усыпить» поток?
- Чем отличаются два интерфейса
Runnable
и Callable
?
- Что такое
FutureTask
?
- В чем заключаются различия между
CyclicBarrier
и CountDownLatch
?
- Что такое race condition?
- Существует ли способ решения проблемы race condition?
- Как остановить поток?
- Почему не рекомендуется использовать метод
Thread.stop()
?
- Что происходит, когда в потоке выбрасывается исключение?
- В чем разница между
interrupted()
и isInterrupted()
?
- Что такое «пул потоков»?
- Какого размера должен быть пул потоков?
- Что будет, если очередь пула потоков уже заполнена, но подаётся новая задача?
- В чём заключается различие между методами
submit()
и execute()
у пула потоков?
- В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
- Как поделиться данными между двумя потоками?
- Какой параметр запуска JVM используется для контроля размера стека потока?
- Как получить дамп потока?
- Что такое ThreadLocal-переменная?
- Назовите различия между
synchronized
и ReentrantLock
?
- Что такое
ReadWriteLock
?
- Что такое «блокирующий метод»?
- Что такое «фреймворк Fork/Join»?
- Что такое
Semaphore
?
- Что такое double checked locking Singleton?
- Как создать потокобезопасный Singleton?
- Чем полезны неизменяемые объекты?
- Что такое busy spin?
- Перечислите принципы, которым вы следуете в многопоточном программировании?
- Какое из следующих утверждений о потоках неверно?
- Даны 3 потока Т1, Т2 и Т3? Как реализовать выполнение в последовательности Т1, Т2, Т3?
- Напишите минимальный неблокирующий стек (всего два метода —
push()
и pop()
).
- Напишите минимальный неблокирующий стек (всего два метода —
push()
и pop()
) с использованием Semaphore
.
- Напишите минимальный неблокирующий ArrayList (всего четыре метода —
add()
, get()
, remove()
, size()
).
- Напишите потокобезопасную реализацию класса с неблокирующим методом
BigInteger next()
, который возвращает элементы последовательности: [1, 2, 4, 8, 16, ...]
.
- Напишите простейший многопоточный ограниченный буфер с использованием
synchronized
.
- Напишите простейший многопоточный ограниченный буфер с использованием
ReentrantLock
.
к оглавлению
Реактивное программирование
- Что такое реактивное программирование и чем оно отличается от процедурного программирования?
- Объясните концепцию потоков данных в реактивном программировании
- Что такое паттерн Observer и как он лежит в основе реактивного программирования?
- Опишите роль Observable и Observer в реактивном программировании
- Что такое backpressure в контексте реактивного программирования?
- Объясните разницу между Hot и Cold Observable
- Какова роль Подписки в реактивном программировании?
- Как отписаться от потока для предотвращения утечки памяти?
- Какие есть операторы в Project Reactor и для чего они используются?
к оглавлению
Servlets, JSP, JSTL
- Что такое «сервлет»?
- В чем заключаются преимущества технологии сервлетов над CGI (Common Gateway Interface)?
- Какова структура веб-проекта?
- Что такое «контейнер сервлетов»?
- Зачем нужны сервера приложений, если есть контейнеры сервлетов?
- Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?
- Что такое «дескриптор развертывания»?
- Какие действия необходимо проделать при создании сервлетов?
- В каком случае требуется переопределять метод
service()
?
- Есть ли смысл определять для сервлета конструктор? Каким образом лучше инициализировать данные?
- Почему необходимо переопределить только
init()
метод без аргументов?
- Какие наиболее распространенные задачи выполняются в контейнере сервлетов?
- Что вы знаете о сервлетных фильтрах?
- Зачем в сервлетах используются различные listener?
- Когда стоит использовать фильтры сервлетов, а когда слушателей?
- Как реализовать запуск сервлета одновременно с запуском приложения?
- Как обработать в приложении исключения, выброшенные другим сервлетом?
- Что представляет собой
ServletConfig
?
- Что представляет собой
ServletContext
?
- В чем отличия
ServletContext
и ServletConfig
?
- Для чего нужен интерфейс
ServletResponse
?
- Для чего нужен интерфейс
ServletRequest
?
- Что такое
Request Dispatcher
?
- Как из одного сервлета вызвать другой сервлет?
- Чем отличается
sendRedirect()
от forward()
?
- Для чего используются атрибуты сервлетов и как происходит работа с ними?
- Каким образом можно допустить в сервлете deadlock?
- Как получить реальное расположение сервлета на сервере?
- Как получить информацию о сервере из сервлета?
- Как получить IP адрес клиента на сервере?
- Какие классы-обертки для сервлетов вы знаете?
- В чем отличия
GenericServlet
и HttpServlet
?
- Почему
HttpServlet
класс объявлен как абстрактный?
- Какие основные методы присутствуют в классе
HttpServlet
?
- Стоит ли волноваться о многопоточной безопасности работая с сервлетами?
- Какой метод HTTP не является неизменяемым?
- Какие есть методы отправки данных с клиента на сервер?
- В чем разница между методами
GET
и POST
?
- В чем разница между
PrintWriter
и ServletOutputStream
?
- Можно ли одновременно использовать в сервлете
PrintWriter
и ServletOutputStream
?
- Расскажите об интерфейсе
SingleThreadModel
.
- Что означает URL encoding? Как это осуществить в Java?
- Какие различные методы управления сессией в сервлетах вы знаете?
- Что такое cookies?
- Какие методы для работы с cookies предусмотрены в сервлетах?
- Что такое URL Rewriting?
- Зачем нужны и чем отличаются методы
encodeURL()
и encodeRedirectURL()
?
- Что такое «сессия»?
- Как уведомить объект в сессии, что сессия недействительна или закончилась?
- Какой существует эффективный способ удостоверится, что все сервлеты доступны только для пользователя с верной сессией?
- Как мы можем обеспечить transport layer security для нашего веб приложения?
- Как организовать подключение к базе данных, обеспечить журналирование в сервлете?
- Какие основные особенности появились в спецификации Servlet 3?
- Какие способы аутентификации доступны сервлету?
- Что такое Java Server Pages (JSP)?
- Зачем нужен JSP?
- Опишите, как обрабатываются JSP страницы, начиная от запроса к серверу, заканчивая ответом пользователю.
- Расскажите об этапах (фазах) жизненного цикла JSP.
- Расскажите о методах жизненного цикла JSP.
- Какие методы жизненного цикла JSP могут быть переопределены?
- Как можно предотвратить прямой доступ к JSP странице из браузера?
- Какая разница между динамическим и статическим содержимым JSP?
- Как закомментировать код в JSP?
- Какие существуют основные типы тегов JSP?
- Что вы знаете о действиях JSP (Action tag и JSP Action Elements).
- Взаимодействие JSP - сервлет - JSP.
- Какие области видимости переменных существуют в JSP?
- Какие неявные, внутренние объекты и методы есть на JSP странице?
- Какие неявные объекты не доступны в обычной JSP странице?
- Что вы знаете о
PageContext
и какие преимущества его использования?
- Как сконфигурировать параметры инициализации для JSP?
- Почему не рекомендуется использовать скриплеты (скриптовые элементы) в JSP?
- Можно ли определить класс внутри JSP страницы?
- Что вы знаете о Языке выражений JSP (JSP Expression Language – EL)?
- Какие типы EL операторов вы знаете?
- Назовите неявные, внутренние объекты JSP EL и их отличия от объектов JSP.
- Как отключить возможность использования EL в JSP?
- Как узнать тип HTTP метода используя JSP EL?
- Что такое JSTL (JSP Standard tag library)?
- Из каких групп тегов состоит библиотека JSTL?
- Какая разница между
<c:set>
и <jsp:useBean>
?
- Чем отличается
<c:import>
от <jsp:include>
и директивы <%@include %>
?
- Как можно расширить функциональность JSP?
- Что вы знаете о написании пользовательских JSP тегов?
- Приведите пример использования собственных тегов.
- Как сделать перенос строки в HTML средствами JSP?
- Почему не нужно конфигурировать стандартные JSP теги в
web.xml
?
- Как можно обработать ошибки JSP страниц?
- Как происходит обработка ошибок с помощью JSTL?
- Как конфигурируется JSP в дескрипторе развертывания.
- Можно ли использовать Javascript на JSP странице?
- Всегда ли создается объект сессии на JSP странице, можно ли отключить его создание?
- Какая разница между
JSPWriter
и сервлетным PrintWriter
?
- Опишите общие практические принципы работы с JSP.
к оглавлению
Базы данных
- Что такое «база данных»?
- Что такое «система управления базами данных»?
- Что такое «реляционная модель данных»?
- Дайте определение терминам «простой», «составной» (composite), «потенциальный» (candidate) и «альтернативный» (alternate) ключ.
- Что такое «первичный ключ» (primary key)? Каковы критерии его выбора?
- Что такое «внешний ключ» (foreign key)?
- Что такое «нормализация»?
- Какие существуют нормальные формы?
- Что такое «денормализация»? Для чего она применяется?
- Какие существуют типы связей в базе данных? Приведите примеры.
- Что такое «индексы»? Для чего их используют? В чём заключаются их преимущества и недостатки?
- Какие типы индексов существуют?
- В чем отличие между кластерными и некластерными индексами?
- Имеет ли смысл индексировать данные, имеющие небольшое количество возможных значений?
- Когда полное сканирование набора данных выгоднее доступа по индексу?
- Что такое «транзакция»?
- Назовите основные свойства транзакции.
- Какие существуют уровни изолированности транзакций?
- Какие проблемы могут возникать при параллельном доступе с использованием транзакций?
к оглавлению
SQL
- Что такое «SQL»?
- Какие существуют операторы SQL?
- Что означает
NULL
в SQL?
- Что такое «временная таблица»? Для чего она используется?
- Что такое «представление» (view) и для чего оно применяется?
- Каков общий синтаксис оператора
SELECT
?
- Что такое
JOIN
?
- Какие существуют типы
JOIN
?
- Что лучше использовать
JOIN
или подзапросы?
- Для чего используется оператор
HAVING
?
- В чем различие между операторами
HAVING
и WHERE
?
- Для чего используется оператор
ORDER BY
?
- Для чего используется оператор
GROUP BY
?
- Как
GROUP BY
обрабатывает значение NULL
?
- В чем разница между операторами
GROUP BY
и DISTINCT
?
- Перечислите основные агрегатные функции.
- В чем разница между
COUNT(*)
и COUNT({column})
?
- Что делает оператор
EXISTS
?
- Для чего используются операторы
IN
, BETWEEN
, LIKE
?
- Для чего применяется ключевое слово
UNION
?
- Какие ограничения на целостность данных существуют в SQL?
- Какие отличия между ограничениями
PRIMARY
и UNIQUE
?
- Может ли значение в столбце, на который наложено ограничение
FOREIGN KEY
, равняться NULL
?
- Как создать индекс?
- Что делает оператор
MERGE
?
- В чем отличие между операторами
DELETE
и TRUNCATE
?
- Что такое «хранимая процедура»?
- Что такое «триггер»?
- Что такое «курсор»?
- Опишите разницу типов данных
DATETIME
и TIMESTAMP
.
- Для каких числовых типов недопустимо использовать операции сложения/вычитания?
- Какое назначение у операторов
PIVOT
и UNPIVOT
в Transact-SQL?
- Расскажите об основных функциях ранжирования в Transact-SQL.
- Для чего используются операторы
INTERSECT
, EXCEPT
в Transact-SQL?
- Напишите запрос...
к оглавлению
JDBC
- Что такое JDBC?
- В чем заключаются преимущества использования JDBC?
- Что из себя представляет JDBC URL?
- Из каких частей стоит JDBC?
- Перечислите основные типы данных используемые в JDBC. Как они связаны с типами Java?
- Опишите основные этапы работы с базой данных с использованием JDBC.
- Как зарегистрировать драйвер JDBC?
- Как установить соединение с базой данных?
- Какие уровни изоляции транзакций поддерживаются в JDBC?
- При помощи чего формируются запросы к базе данных?
- Чем отличается Statement от PreparedStatement?
- Как осуществляется запрос к базе данных и обработка результатов?
- Как вызвать хранимую процедуру?
- Как закрыть соединение с базой данных?
к оглавлению
Тестирование
- Что такое «модульное тестирование»?
- Что такое «интеграционное тестирование»?
- Чем интеграционное тестирование отличается от модульного?
- Какие существуют виды тестовых объектов?
- Чем stub отличается от mock?
- Что такое «фикстуры»?
- Какие аннотации фикстур существуют в JUnit?
- Для чего в JUnit используется аннотация
@Ignore
?
к оглавлению
Журналирование
- Какие существуют типы логов?
- Из каких частей состоит система журналирования log4j?
- Что такое Logger в log4j?
- Что такое Appender в log4j?
- Что такое Layout в log4j?
- Перечислите уровни журналирования в log4j? Назовите порядок их приоритетности.
- Какие существуют способы конфигурирования log4j?
к оглавлению
UML
- Что такое UML?
- Что такое «диаграмма», «нотация» и «метамодель» в UML?
- Какие существуют типы диаграмм?
- Какие виды отношений существуют в структурной диаграмме классов?
к оглавлению
XML
- Что такое XML?
- Что такое DTD?
- Чем well-formed XML отличается от valid XML?
- Что такое «пространство имен» в XML?
- Что такое XSD? В чём его преимущества перед XML DTD?
- Какие типы существуют в XSD?
- Какие вы знаете методы чтения XML? Опишите сильные и слабые стороны каждого метода.
- Когда следует использовать DOM, а когда SAX, StAX анализаторы??
- Какие вы знаете способы записи XML?
- Что такое JAXP?
- Что такое XSLT?
к оглавлению
Шаблоны проектирования
- Что такое «шаблон проектирования»?
- Назовите основные характеристики шаблонов.
- Типы шаблонов проектирования.
- Приведите примеры основных шаблонов проектирования.
- Приведите примеры порождающих шаблонов проектирования.
- Приведите примеры структурных шаблонов проектирования.
- Приведите примеры поведенческих шаблонов проектирования.
- Что такое «антипаттерн»? Какие антипаттерны вы знаете?
- Что такое Dependency Injection?
к оглавлению
Основы HTML
- Что такое «HTML»?
- Что такое «XHTML»?
- Что такое
DOCTYPE
и зачем он нужен?
- Для чего предназначен тег
<head>
?
- Чем отличается
<div>
от <span>
?
- Как обозначаются комментарии в HTML?
- Каким образом задаётся адрес документа, на который следует перейти?
- Как сделать ссылку на адрес электронной почты?
- Для чего предназначен тег
<em>
?
- Для чего предназначены теги
<ol>
, <ul>
, <li>
?
- Для чего предназначены теги
<dl>
, <dt>
, <dd>
?
- Для чего предназначены теги
<tr>
, <th>
, <td>
?
- Обязательно ли писать атрибут
alt
в теге <img>
?
- В каком регистре лучше писать HTML-код?
- Что такое «мнемоника (entity)»?
к оглавлению
Основы CSS
- Что такое «CSS»?
- Как в CSS обозначаются комментарии?
- Что такое «селектор»?
- Перечислите основные виды селекторов.
- Что такое псевдокласс?
- Какие существуют селекторы аттрибутов?
- В чем разница между
#my
и .my
?
- В чем разница между
margin
и padding
?
- В чем заключается разница между значениями
0
и auto
в свойстве margin
?
- Какое свойство задает цвет фона?
- Как убрать подчеркивание для всех ссылок на странице?
- Для чего используется свойство
clear
?
- Как сделать жирным текст во всех элементах
<p>
?
- Как задать красный цвет для всех элементов, имеющих класс
red
?
к оглавлению
Основы WEB
- Что такое WWW?
- Что такое W3C?
- Какие существуют уровни модели OSI?
- Что такое TCP/IP?
- Что такое UDP?
- Чем отличаются TCP и UDP?
- Что такое протокол передачи данных? Какие протоколы вы знаете?
- Что такое HTTP и HTTPS? Чем они отличаются?
- Что такое FTP?
- Чем отличаются методы GET и POST?
- Что такое MIME тип?
- Что такое Web server?
- Что такое Web application?
- Что такое Application server?
- Чем отличаются Web server и Application server?
- Что такое AJAX? Как принципиально устроена эта технология?
- Что такое WebSocket?
- Что такое JSON?
- Что такое JSON схема?
- Что такое cookies?
- Что такое «сессия»?
- Что такое «авторизация» и «аутентификация»? Чем они отличаются?
к оглавлению
Apache Kafka
- Что такое Apache Kafka?
- Основные компоненты Kafka
Архитектура компонентов
- Topic
- Архитектура топика
- Настройки топика Kafka
- Broker
- Архитектура брокера
- Настройки брокера Kafka
- Producer
- Архитектура продюсера
- Настройки продюсера
- Пример конфигурации Kafka Producer
- Consumer
- Архитектура консюмера
- Настройки консюмера
- Пример конфигурации Kafka Consumer
Kafka API
- Основные API Kafka
- Какова роль Producer API?
- Какова роль Consumer API?
- Какова роль Connector API?
- Какова роль Streams API?
- Какова роль Transactions API?
- Какова роль Quota API?
- Какова роль AdminClient API?
Kafka Consumer
- Для чего нужен координатор группы?
- Для чего нужен Consumer heartbeat thread?
- Как Kafka обрабатывает сообщения?
- Как Kafka обрабатывает задержку консюмера?
- Для чего нужны методы subscribe() и poll()?
- Для чего нужен метод position()?
- Для чего нужны методы commitSync() и commitAsync()?
Другие вопросы
- Для чего нужен идемпотентный продюсер?
- Для чего нужен интерфейс Partitioner?
- Для чего нужен Broker log cleaner thread?
- Для чего нужен Kafka Mirror Maker?
- Для чего нужна Schema Registry?
- Для чего нужен Streams DSL?
- Как Kafka обеспечивает версионирование сообщений?
- Как потребители получают сообщения от брокера?
Сравнение с другими компонентами и системами
- В чем разница между Kafka Consumer и Kafka Stream?
- В чем разница между Kafka Streams и Apache Flink?
- В чем разница между Kafka и Flume?
- В чем разница между Kafka и RabbitMQ?
к оглавлению
Дополнительные материалы
- 4 толковых канала на Youtube про технические собеседования
- A list of fancy questions I've been asked during the interviews I had
- Job interview in English: как готовиться и что отвечать
- Senior Engineer в поисках работы. О задачах на технических собеседованиях и теоретических вопросах
- What to ask an interviewer during a tech interview
- Spring Boot Interview Questions
- Top Spring Framework Interview Questions
- Spring Interview Questions
- Hibernate Interview Questions
к оглавлению
Источники
- Вопросы на собеседование Junior Java Developer