- Объектно-ориентированное программирование
- Проектирование ПО
- Java Virtual Machine
- Java Core
- Java Collections Framework
- Java 8
- Потоки ввода/вывода в Java
- Сериализация в Java
- Многопоточность в Java
- Servlets
- Spring
- JDBC
- ORM
- JMS
- Логирование
- Тестирование
- Языки разметки: XML, JSON, YAML
- Хранение данных
- Реляционные базы данных
- SQL
- Нереляционные базы данных
- Передача сообщений
- Основы сетей
- Настройка окружения
- Инструменты для совместной работы
- Основы обеспечения безопасности
- Основы Web
- Основы HTML
- Основы CSS
- Основы Javascript
- Назовите основные парадигмы программирования
- Что такое ООП?
- Назовите основные принципы ООП.
- Что такое «инкапсуляция»?
- Что такое «наследование»?
- Что такое «полиморфизм»?
- Что такое «абстракция»?
- Что представляет собой «обмен сообщениями»?
- Расскажите про основные понятия ООП: «класс», «объект», «интерфейс».
- В чем заключаются преимущества и недостатки объектно-ориентированного подхода в программировании?
- Что подразумевают в плане принципов ООП выражения «является» и «имеет»?
- В чем разница между композицией и агрегацией?
- Что такое статическое и динамическое связывание?
Проект основан на enhorse/java-interview
- Что такое «интернационализация», «локализация»?
- Что такое Big O («O большое»)?
- Рассчитайте сложность следующей функции
- Какие Вы знаете алгоритмы сортировки?
- Опишите термин «технический долг»
- Что означает «унаследованный код»?
- Что такое UML?
- Что такое «диаграмма», «нотация» и «метамодель» в UML?
- Какие существуют типы диаграмм в UML?
- Какие виды отношений существуют в структурной диаграмме классов в UML?
- Что такое SOLID?
- Что такое «шаблон проектирования»?
- Назовите основные характеристики шаблонов.
- Типы шаблонов проектирования.
- Приведите примеры основных шаблонов проектирования.
- Приведите примеры порождающих шаблонов проектирования.
- Приведите примеры структурных шаблонов проектирования.
- Приведите примеры поведенческих шаблонов проектирования.
- Что такое шаблон MVC?
- Что такое GRASP?
- Что такое «антипаттерн»? Какие антипаттерны вы знаете?
- Что такое Domain-driven design?
- Какие бывают гарантии доставки сообщений?
- Расскажите про Event-driven Architecture
- Расскажите про Service-oriented Architecture (SOA)?
- Что такое микросервисы?
- Расскажите про Enterprise Integration Patterns (EIP)?
- Расскажите про Patterns of Enterprise Applications Architecture (PoEAA)?
- Расскажите про CQRS?
- Расскажите про Event Sourcing?
- Что такое ACID?
- В чем смысл CAP теоремы?
- Что такое BASE-архитектура?
- Что такое CRDT?
Проект основан на enhorse/java-interview
- Что такое Java?
- Почему стоить использовать Java?
- Какие основные отличия в версиях Java?
- Чем различаются JRE, JVM и JDK?
- За что отвечает JVM?
- Расскажите про Classloader
- Расскажите о Run-Time Data Area
- Как рассчитать объем, который занимают объекты в памяти?
- Расскажите о Frames
- Execution Engine
- Для чего нужен сборщик мусора?
- Как работает сборщик мусора?
- Какие разновидности сборщиков мусора реализованы в виртуальной машине HotSpot?
- Опишите алгоритм работы какого-нибудь сборщика мусора реализованного в виртуальной машине HotSpot.
- Что такое HeapDump и TreadDump?
- Что такое профилирование?
- Как обнаружить причину утечки памяти (memory leak)?
- Какие существуют рекомендации к стилю кода на Java?
- Какие языки (кроме Java) могут быть использованы в разработке ПО, исполняемого в среде JVM?
Проект основан на enhorse/java-interview
- Какие примитивы есть в Java?
- Что такое autoboxing («автоупаковка») в Java и каковы правила упаковки примитивных типов в классы-обертки?
- В каком порядке выбирается кандидат из списка перегруженных методов при вызове с примитивным аргументом?
- Что такое массив в Java?
- Какие алгоритмы сортировки массивов используются в Java?
- Что будет результатом выполнения операции
int[] array = {8, -3, 10, 4}; int result = Arrays.binarySearch(array, 8);
? - Что будет результатом выполнения операции
int result = Arrays.binarySearch([-3, 4, 8, 10], 9)
? - Какие существуют модификаторы?
- Что значит ключевое слово var?
- О чем говорит ключевое слово
final
? - Какими значениями инициализируются переменные по умолчанию?
- Что вы знаете о функции
main()
? - Какие логические операции и операторы вы знаете?
- Что такое тернарный оператор выбора?
- Какие побитовые операции вы знаете?
- Как передается параметры в метод по значению или по ссылке?
- Где и для чего используется модификатор
abstract
? - Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
- Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
- Почему в некоторых интерфейсах вообще не определяют методов?
- Почему нельзя объявить метод интерфейса с модификатором
final
? - Что имеет более высокий уровень абстракции - класс, абстрактный класс или интерфейс?
- Может ли объект получить доступ к члену класса объявленному как
private
? Если да, то каким образом? - Каков порядок вызова конструкторов и блоков инициализации с учётом иерархии классов?
- Зачем нужны и какие бывают блоки инициализации?
- К каким конструкциям Java применим модификатор
static
? - Для чего в Java используются статические блоки инициализации?
- Что произойдёт, если в блоке инициализации возникнет исключительная ситуация?
- Какое исключение выбрасывается при возникновении ошибки в блоке инициализации класса?
- Может ли статический метод быть переопределён или перегружен?
- Могут ли нестатические методы перегрузить статические?
- Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?
- Возможно ли при переопределении метода изменить: модификатор доступа, возвращаемый тип, тип аргумента или их количество, имена аргументов или их порядок; убирать, добавлять, изменять порядок следования элементов секции
throws
? - Как получить доступ к переопределенным методам родительского класса?
- Можно ли объявить метод абстрактным и статическим одновременно?
- В чем разница между членом экземпляра класса и статическим членом класса?
- Где разрешена инициализация статических/нестатических полей?
- Какие типы классов бывают в java?
- Расскажите про вложенные классы. В каких случаях они применяются?
- Что такое «статический класс»?
- Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?
- Что такое «локальный класс»? Каковы его особенности?
- Что такое «анонимные классы»? Где они применяются?
- Каким образом из вложенного класса получить доступ к полю внешнего класса?
- Для чего используется оператор
assert
? - Что такое Heap и Stack память в Java? Какая разница между ними?
- Верно ли утверждение, что примитивные типы данных всегда хранятся в стеке, а экземпляры ссылочных типов данных в куче?
- Каким образом передаются переменные в методы, по значению или по ссылке?
- Что такое «пул строк»?
- Что такое
finalize()
? Зачем он нужен? - Что произойдет со сборщиком мусора, если выполнение метода
finalize()
требует ощутимо много времени, или в процессе выполнения будет выброшено исключение? - Чем отличаются
final
,finally
иfinalize()
? - Расскажите про приведение типов. Что такое понижение и повышение типа?
- Когда в приложении может быть выброшено исключение
ClassCastException
? - Какие есть особенности класса
String
? - Почему
String
неизменяемый и финализированный класс? - Почему
char[]
предпочтительнееString
для хранения пароля? - Почему строка является популярным ключом в
HashMap
в Java? - Что делает метод
intern()
в классеString
? - Можно ли использовать строки в конструкции
switch
? - Какая основная разница между
String
,StringBuffer
,StringBuilder
? - Что такое класс
Object
? Какие в нем есть методы? - Дайте определение понятию «конструктор».
- Что такое «конструктор по умолчанию»?
- Чем отличаются конструктор по умолчанию, конструктор копирования и конструктор с параметрами?
- Где и как вы можете использовать приватный конструктор?
- Расскажите про классы-загрузчики и про динамическую загрузку классов.
- Что такое 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
? - Расскажите про клонирование объектов.
- В чем отличие между поверхностным и глубоким клонированием?
- Какой способ клонирования предпочтительней?
- Почему метод
clone()
объявлен в классеObject
, а не в интерфейсеCloneable
? - Опишите иерархию исключений.
- Какие виды исключений в 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?
- Опишите разницу между
? extends ...
и? super ...
при объявлении generics - Чем отличаются
java.lang.Comparable
иjava.util.Comparator
?
Проект основан на enhorse/java-interview
- Что такое «коллекция»?
- Назовите основные интерфейсы JCF и их реализации.
- Расположите в виде иерархии следующие интерфейсы:
List
,Set
,Mindmap
,SortedSet
,SortedMap
,Collection
,Iterable
,Iterator
,NavigableSet
,NavigableMap
. - Почему
Mindmap
— это не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.get(key)
по ключу, который есть в таблице? - Сколько создается новых объектов, когда вы добавляете новый элемент в
HashMap
? - Как и когда происходит увеличение количества корзин в
HashMap
? - Объясните смысл параметров в конструкторе
HashMap(int initialCapacity, float loadFactor)
. - Будет ли работать
HashMap
, если все добавляемые ключи будут иметь одинаковыйhashCode()
? - Как перебрать все ключи
Mindmap
? - Как перебрать все значения
Mindmap
? - Как перебрать все пары «ключ-значение» в
Mindmap
? - В чем отличия
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<Mindmap.Entry<K, V>>
.
Проект основан на enhorse/java-interview
- Что такое «лямбда»? Какова структура и особенности использования лямбда-выражения?
- К каким переменным есть доступ у лямбда-выражений?
- Как отсортировать список строк с помощью лямбда-выражения?
- Что такое «ссылка на метод»?
- Какие виды ссылок на методы вы знаете?
- Объясните выражение
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?
- Что такое
Spliterator
? - Что такое
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 кодировщик и декодировщик?
Проект основан на enhorse/java-interview
- В чём заключается разница между IO и NIO?
- Какие особенности NIO вы знаете?
- Что такое «каналы»?
- Какие существуют виды потоков ввода/вывода?
- Назовите основные классы потоков ввода/вывода.
- В каких пакетах расположены классы потоков ввода/вывода?
- Какие подклассы класса
InputStream
вы знаете, для чего они предназначены? - Для чего используется
PushbackInputStream
? - Для чего используется
SequenceInputStream
? - Какой класс позволяет читать данные из входного байтового потока в формате примитивных типов данных?
- Какие подклассы класса
OutputStream
вы знаете, для чего они предназначены? - Какие подклассы класса
Reader
вы знаете, для чего они предназначены? - Какие подклассы класса
Writer
вы знаете, для чего они предназначены? - В чем отличие класса
PrintWriter
отPrintStream
? - Чем отличаются и что общего у
InputStream
,OutputStream
,Reader
,Writer
? - Какие классы позволяют преобразовать байтовые потоки в символьные и обратно?
- Какие классы позволяют ускорить чтение/запись за счет использования буфера?
- Какой класс предназначен для работы с элементами файловой системы?
- Какие методы класса
File
вы знаете? - Что вы знаете об интерфейсе
FileFilter
? - Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?
- Что вы знаете о
RandomAccessFile
? - Какие режимы доступа к файлу есть у
RandomAccessFile
? - Какие классы поддерживают чтение и запись потоков в компрессированном формате?
- Существует ли возможность перенаправить потоки стандартного ввода/вывода?
- Какой символ является разделителем при указании пути в файловой системе?
- Что такое «абсолютный путь» и «относительный путь»?
- Что такое «символьная ссылка»?
Проект основан на enhorse/java-interview
- Что такое «сериализация»?
- Опишите процесс сериализации/десериализации с использованием
Serializable
. - Как изменить стандартное поведение сериализации/десериализации?
- Как исключить поля из сериализации?
- Что обозначает ключевое слово
transient
? - Какое влияние оказывают на сериализуемость модификаторы полей
static
иfinal
- Как не допустить сериализацию?
- Как создать собственный протокол сериализации?
- Какая роль поля
serialVersionUID
в сериализации? - Когда стоит изменять значение поля
serialVersionUID
? - В чем проблема сериализации Singleton?
- Какие существуют способы контроля за значениями десериализованного объекта
Проект основан на enhorse/java-interview
- Расскажите о модели памяти 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
и Atomic переменными? - В чём заключаются различия между
java.util.concurrent.Atomic*.compareAndSwap()
иjava.util.concurrent.Atomic*.weakCompareAndSwap()
? - Что значит «приоритет потока»?
- Что такое «потоки-демоны»?
- Можно ли сделать основной поток программы демоном?
- Что значит «усыпить» поток?
- Чем отличаются два интерфейса
Runnable
иCallable
? - Что такое
FutureTask
? - Что такое
CompletableFuture
? - В чем заключаются различия между
CyclicBarrier
иCountDownLatch
? - Что такое race condition?
- Существует ли способ решения проблемы race condition?
- Как остановить поток?
- Почему не рекомендуется использовать метод
Thread.stop()
? - Что происходит, когда в потоке выбрасывается исключение?
- В чем разница между
interrupted()
иisInterrupted()
? - Что такое «пул потоков»?
- Какого размера должен быть пул потоков?
- Что будет, если очередь пула потоков уже заполнена, но подаётся новая задача?
- В чём заключается различие между методами
submit()
иexecute()
у пула потоков? - В чем заключаются различия между стеком (stack) и кучей (heap) с точки зрения многопоточности?
- Как поделиться данными между двумя потоками?
- Какой параметр запуска JVM используется для контроля размера стека потока?
- Как получить дамп потока?
- Что такое ThreadLocal-переменная?
- Назовите различия между
synchronized
иReentrantLock
? - Что такое
ReadWriteLock
? - Что такое «блокирующий метод»?
- Что такое «фреймворк Fork/Join»?
- Что такое
Semaphore
? - Что такое double checked locking Singleton?
- Как создать потокобезопасный Singleton?
- Чем полезны неизменяемые объекты?
- Что такое busy spin?
- Перечислите принципы, которым вы следуете в многопоточном программировании?
- Какое из следующих утверждений о потоках неверно?
- Даны 3 потока T1, T2 и T3? Как реализовать выполнение в последовательности T1, T2, T3?
- Напишите минимальный неблокирующий стек (всего два метода —
push()
иpop()
). - Напишите минимальный неблокирующий стек (всего два метода —
push()
иpop()
) с использованиемSemaphore
. - Напишите минимальный неблокирующий ArrayList (всего четыре метода —
add()
,get()
,remove()
,size()
). - Напишите потокобезопасную реализацию класса с неблокирующим методом
BigInteger next()
, который возвращает элементы последовательности:[1, 2, 4, 8, 16, ...]
. - Напишите простейший многопоточный ограниченный буфер с использованием
synchronized
. - Напишите простейший многопоточный ограниченный буфер с использованием
ReentrantLock
.
Проект основан на enhorse/java-interview
- Что такое «сервлет»?
- Что добавилось в спецификации Servlet 2.5, 3.0, 3.1, 4.0?
- В чем заключаются преимущества технологии сервлетов над CGI (Common Gateway Interface)?
- Что такое «контейнер сервлетов»?
- Зачем нужны сервера приложений, если есть контейнеры сервлетов?
- Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?
- Что такое «дескриптор развертывания»?
- Какие действия необходимо проделать при создании сервлетов?
- Какие наиболее распространенные задачи выполняются в контейнере сервлетов?
- Что вы знаете о сервлетных фильтрах?
- Когда стоит использовать фильтры сервлетов, а когда слушателей?
- Какие основные особенности появились в спецификации Servlet 3?
- Какие способы аутентификации доступны сервлету?
- Что такое Java Server Pages (JSP)?
- Зачем нужен JSP?
- Взаимодействие JSP - сервлет - JSP.
- Опишите общие практические принципы работы с JSP.
Проект основан на enhorse/java-interview
- Какие методы реализации принципа Инверсия управления (IoC) вы знаете?
- Какими способами можно реализовать «внедрение зависимостей» в Java?
- Что такое Spring?
- Какие основные отличия в версиях Spring?
- В чем разница между Inversion of Control и Application Context?
- В чем различие между web.xml и the Spring Context - servlet.xml?
- Сравните Application Context, IoC Container, vs Web Container и EJB Container. Нужен ли Web Container для запуска Spring Boot приложения?
- Как происходит запуск IoC-контейнера Spring?
- Какие способы конфигурирование Spring существуют?
- Что предпочитаете использовать для конфигурации Spring?
- Что такое
BeanPostProcessor
? - Для чего нужен Component Scan?
- В чём отличие между
@Component
и@ComponentScan
? - Для чего используется аннотация
@Bean
? - В чём разница между
@Bean
и@Component
? - В чём разница между
@Component
,@Service
и@Repository
аннотациями? - Можем ли мы использовать
@Component
вместо@Service
для бизнес логики? - Можем ли мы применить
@Autowired
с не сеттерами и не конструкторами методами? - В чем разница между Сквозной Функциональностью (Cross Cutting Concerns) и АОП (аспектно ориентированное программирование)?
- Почему возвращаемое значение при применении аспекта
@Around
может потеряться? Назовите причины. - Как вы решаете какой бин внедрить, если у вас несколько подходящих бинов. Расскажите о
@Primary
и@Qualifier
? - Как вы добавите Component Scan в Spring Boot?
- Какие возможности предоставляет аннотация
@Controller
? - В чём разница между
@Controller
и@RestController
? - Как мы можем выбрать подходящий бин при помощи application.properties?
- Почему иногда мы используем
@ResponseBody
, а иногдаResponseEntity
? - В чем разница между Filters, Listeners and Interceptors?
- В чем разница между
ModelMap
иModelAndView
? - В чем разница между
model.put()
иmodel.addAttribute()
? - Что можете рассказать про Form Binding?
- Почему мы используем Hibernate Validator?
- Где должны располагаться статические (css, js, html) ресурсы в Spring MVC приложении?
- Можно ли передать в запросе один и тот же параметр несколько раз?
Проект основан на enhorse/java-interview
- Что такое JDBC?
- В чем заключаются преимущества использования JDBC?
- Что из себя представляет JDBC URL?
- Из каких частей стоит JDBC?
- Перечислите основные классы и интерфейсы JDBC.
- Перечислите основные типы данных используемые в JDBC. Как они связаны с типами Java?
- Опишите основные этапы работы с базой данных при использовании JDBC.
- Как зарегистрировать драйвер JDBC?
- Как установить соединение с базой данных?
- Какие уровни изоляции транзакций поддерживаются в JDBC?
- При помощи чего формируются запросы к базе данных?
- Чем отличается Statement от PreparedStatement?
- Как осуществляется запрос к базе данных и обработка результатов?
- Как вызвать хранимую процедуру?
- Как закрыть соединение с базой данных?
Проект основан на enhorse/java-interview
Проект основан на enhorse/java-interview
Проект основан на enhorse/java-interview
- Какие существуют типы логов?
- Из каких частей состоит система журналирования log4j?
- Что такое Logger в log4j?
- Что такое Appender в log4j?
- Что такое Layout в log4j?
- Перечислите уровни журналирования в log4j? Назовите порядок их приоритетности.
- Какие существуют способы конфигурирования log4j?
Проект основан на enhorse/java-interview
- Опишите подход Test-Driven Development
- Что такое «пирамида тестирования»?
- Что такое «модульное тестирование»?
- Зачем нужны модульные тесты?
- Какие характеристики хорошего модульные теста Вы знаете?
- Какие существуют шаблоны модульных тестов?
- Что такое «интеграционное тестирование»?
- Чем интеграционное тестирование отличается от модульного?
- Какие существуют виды тестовых объектов?
- Чем stub отличается от mock?
- Что такое «фикстуры»?
- Какие аннотации фикстур существуют в JUnit4 или 5?
- Для чего в JUnit используется аннотация
@Ignore
или@Disabled
? - Какие фреймворки для поддержки автоматизированного приемочного тестирования Вы знаете?
- Какие утилиты для нагрузочного тестирования Вы знаете?
Проект основан на enhorse/java-interview
- Что такое XML?
- Что такое DTD?
- Чем well-formed XML отличается от valid XML?
- Что такое «пространство имен» в XML?
- Что такое XSD? В чём его преимущества перед XML DTD?
- Какие типы существуют в XSD?
- Какие вы знаете методы чтения XML? Опишите сильные и слабые стороны каждого метода.
- Когда следует использовать DOM, а когда SAX, StAX анализаторы?
- Какие вы знаете способы записи XML?
- Что такое JAXP?
- Что такое XSLT?
- Что такое JSON?
- Что такое JSON схема?
- Сравните JSON и XML
- Что такое YAML?
- Сравните JSON и YAML?
Проект основан на enhorse/java-interview
- Что такое «база данных»?
- Что такое «система управления базами данных»?
- Сравните реляционные и нереляционные СУБД
- Что такое In-memory Data Grid?
Проект основан на enhorse/java-interview
- Что такое «реляционная модель данных»?
- Дайте определение терминам «простой», «составной» (composite), «потенциальный» (candidate) и «альтернативный» (alternate) ключ.
- Что такое «первичный ключ» (primary key)? Каковы критерии его выбора?
- Что такое «внешний ключ» (foreign key)?
- Что такое «нормализация»?
- Какие существуют нормальные формы?
- Что такое «денормализация»? Для чего она применяется?
- Какие существуют типы связей в базе данных? Приведите примеры.
- Что такое «индексы»? Для чего их используют? В чём заключаются их преимущества и недостатки?
- Какие типы индексов существуют?
- В чем отличие между кластерными и некластерными индексами?
- Имеет ли смысл индексировать данные, имеющие небольшое количество возможных значений?
- Когда полное сканирование набора данных выгоднее доступа по индексу?
- Что такое «транзакция»?
- Назовите основные свойства транзакции.
- Какие существуют уровни изолированности транзакций?
- Какие проблемы могут возникать при параллельном доступе с использованием транзакций?
Проект основан на enhorse/java-interview
- Что такое «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
. - Для каких числовых типов недопустимо использовать операции сложения/вычитания?
- Напишите запрос...
Проект основан на enhorse/java-interview
Проект основан на enhorse/java-interview
Проект основан на enhorse/java-interview
- Какие существуют уровни модели OSI?
- Что такое TCP/IP?
- Что такое UDP?
- Чем отличаются TCP и UDP?
- Что такое протокол передачи данных? Какие протоколы вы знаете?
Проект основан на enhorse/java-interview
- Сравните ОС Windows и Linux
- Что такой
bash
? - С помощью каких bash-команд посмотреть доступные ресурсы?
- Что такое Docker-контейнер?
- Как работает Ansible?
Проект основан на enhorse/java-interview
- Какие бывают инструменты для автоматизации сборки Java-проектов?
- Сравните Gradle и Maven
- Какие бывают системы контроля версий?
- Что такое распределённая система контроля версий на примере GIT?
- Какие механизмы слияния существуют в GIT?
- Назовите инструменты для версионирования СУБД
- Что такое CI?
- Что такое CD?
- В чём разница между Continuous Delivery и Deployment?
- Какие CI/CD-инструменты Вы знаете?
Проект основан на enhorse/java-interview
- Что такое «авторизация» и «аутентификация»? Чем они отличаются?
- Что такое Secure Software Development?
- Что такое сертификат?
- Что такое SSL?
Проект основан на enhorse/java-interview
- Что такое WWW?
- Что такое W3C?
- Что такое HTTP и HTTPS? Чем они отличаются?
- Чем отличаются методы HTTP/1.1 и HTTP/2?
- Какие серии кодов состояния есть в HTTP?
- Чем отличаются методы GET и POST?
- Чем отличаются методы POST, PUT и PATCH?
- Что такое MIME тип?
- Что такое Web service?
- Что такое Web server?
- Что такое Web application?
- Что такое Application server?
- Чем отличаются Web server и Application server?
- Что такое WebSocket?
- Что такое cookies?
- Что такое «сессия»?
Проект основан на enhorse/java-interview
- Что такое «HTML»?
- Что такое «XHTML»?
- Что такое
DOCTYPE
и зачем он нужен? - Для чего предназначен тег
<head>
? - Чем отличается
<div>
от<span>
? - Как обозначаются комментарии в HTML?
- Каким образом задаётся адрес документа, на который следует перейти?
- Как сделать ссылку на адрес электронной почты?
- Для чего предназначен тег
<em>
? - Для чего предназначены теги
<ol>
,<ul>
,<li>
? - Для чего предназначены теги
<dl>
,<dt>
,<dd>
? - Для чего предназначены теги
<tr>
,<th>
,<td>
? - Обязательно ли писать атрибут
alt
в теге<img>
? - В каком регистре лучше писать HTML-код?
- Что такое «мнемоника (entity)»?
Проект основан на enhorse/java-interview
- Что такое «CSS»?
- Как в CSS обозначаются комментарии?
- Что такое «селектор»?
- Перечислите основные виды селекторов.
- Что такое псевдокласс?
- Какие существуют селекторы атрибутов?
- В чем разница между
#my
и.my
? - В чем разница между
margin
иpadding
? - В чем заключается разница между значениями
0
иauto
в свойствеmargin
? - Какое свойство задает цвет фона?
- Как убрать подчеркивание для всех ссылок на странице?
- Для чего используется свойство
clear
? - Как сделать жирным текст во всех элементах
<p>
? - Как задать красный цвет для всех элементов, имеющих класс
red
? - Что такое Sass и SCSS?
Проект основан на enhorse/java-interview
Проект основан на enhorse/java-interview