1
1
Fork 0
java-interview/README.md

844 lines
137 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[Свёрстанные вопросы и ответы](book/Java_questions.pdf) [by Victoria Demidova](https://github.com/VictoriaDemidova)
[Telegram Bot](https://web.telegram.org/#/im?p=@DevInterviewBot) [by cmmttd](https://github.com/cmmttd)
# Вопросы для собеседования на Java Developer
+ [ООП](#ООП) ![icon][done]
+ [JVM](#jvm) ![icon][done]
+ [Java Core](#java-core) ![icon][done]
+ [Java Collections Framework](#java-collections) ![icon][done]
+ [Java 8](#java-8) ![icon][done]
+ [Потоки ввода-вывода в Java](#Потоки-вводавывода-в-java) ![icon][done]
+ [Сериализация](#Сериализация) ![icon][done]
+ [Многопоточность](#Многопоточность) ![icon][done]
+ [Реактивное программирование](#реактивное-программирование) ![icon][done]
+ [Servlets, JSP, JSTL](#servlets-jsp-jstl) ![icon][done]
+ [Базы данных](#Базы-данных) ![icon][done]
+ [SQL](#sql) ![icon][done]
+ [JDBC](#jdbc) ![icon][done]
+ [Тестирование](#Тестирование) ![icon][done]
+ [Журналирование](#Журналирование) ![icon][done]
+ [UML](#uml) ![icon][done]
+ [XML](#xml) ![icon][done]
+ [Шаблоны проектирования](#Шаблоны-проектирования) ![icon][done]
+ [Основы HTML](#Основы-html) ![icon][done]
+ [Основы CSS](#Основы-css) ![icon][done]
+ [Основы Web](#Основы-web) ![icon][done]
+ [Apache Kafka](#apache-kafka) ![icon][done]
+ [Дополнительные материалы](#Дополнительные-материалы) ![icon][done]
[done]:done.png
## ООП
+ [Что такое _ООП_?](oop.md#Что-такое-ООП)
+ [Назовите основные принципы _ООП_.](oop.md#Назовите-основные-принципы-ООП)
+ [Что такое _«инкапсуляция»_?](oop.md#Что-такое-инкапсуляция)
+ [Что такое _«наследование»_?](oop.md#Что-такое-наследование)
+ [Что такое _«полиморфизм»_?](oop.md#Что-такое-полиморфизм)
+ [Что такое _«абстракция»_?](oop.md#Что-такое-абстракция)
+ [Что представляет собой _«обмен сообщениями»_?](oop.md#Что-представляет-собой-обмен-сообщениями)
+ [Расскажите про основные понятия ООП: _«класс»_, _«объект»_, _«интерфейс»_.](oop.md#Расскажите-про-основные-понятия-ООП-класс-объект-интерфейс)
+ [В чем заключаются преимущества и недостатки объектно-ориентированного подхода в программировании?](oop.md#В-чем-заключаются-преимущества-и-недостатки-объектно-ориентированного-подхода-в-программировании)
+ [Что подразумевают в плане принципов ООП выражения _«является»_ и _«имеет»_?](oop.md#Что-подразумевают-в-плане-принципов-ООП-выражения-является-и-имеет)
+ [В чем разница между _композицией_ и _агрегацией_?](oop.md#В-чем-разница-между-композицией-и-агрегацией)
+ [Что такое _статическое_ и _динамическое связывание_?](oop.md#Что-такое-статическое-и-динамическое-связывание)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## JVM
+ [За что отвечает JVM](jvm.md#За-что-отвечает-JVM)
+ [Classloader](jvm.md#Classloader)
+ [Области данных времени выполнения](jvm.md#Области-данных-времени-выполнения)
+ [Frames](jvm.md#Frames)
+ [Execution Engine](jvm.md#Execution-Engine)
+ [Полезные ссылки](jvm.md#Полезные-ссылки)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Java Core
+ [Чем различаются JRE, JVM и JDK?](core.md#Чем-различаются-jre-jvm-и-jdk)
+ [Какие существуют модификаторы доступа?](core.md#Какие-существуют-модификаторы-доступа)
+ [О чем говорит ключевое слово `final`?](core.md#О-чем-говорит-ключевое-слово-final)
+ [Какими значениями инициализируются переменные по умолчанию?](core.md#Какими-значениями-инициализируются-переменные-по-умолчанию)
+ [Что вы знаете о функции `main()`?](core.md#Что-вы-знаете-о-функции-main)
+ [Какие логические операции и операторы вы знаете?](core.md#Какие-логические-операции-и-операторы-вы-знаете)
+ [Что такое тернарный оператор выбора?](core.md#Что-такое-тернарный-оператор-выбора)
+ [Какие побитовые операции вы знаете?](core.md#Какие-побитовые-операции-вы-знаете)
+ [Где и для чего используется модификатор `abstract`?](core.md#Где-и-для-чего-используется-модификатор-abstract)
+ [Дайте определение понятию _«интерфейс»_. Какие модификаторы по умолчанию имеют поля и методы интерфейсов?](core.md#Дайте-определение-понятию-интерфейс-Какие-модификаторы-по-умолчанию-имеют-поля-и-методы-интерфейсов)
+ [Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?](core.md#Чем-абстрактный-класс-отличается-от-интерфейса-В-каких-случаях-следует-использовать-абстрактный-класс-а-в-каких-интерфейс)
+ [Почему в некоторых интерфейсах вообще не определяют методов?](core.md#Почему-в-некоторых-интерфейсах-вообще-не-определяют-методов)
+ [Почему нельзя объявить метод интерфейса с модификатором `final`?](core.md#Почему-нельзя-объявить-метод-интерфейса-с-модификатором-final)
+ [Что имеет более высокий уровень абстракции - класс, абстрактный класс или интерфейс?](core.md#Что-имеет-более-высокий-уровень-абстракции---класс-абстрактный-класс-или-интерфейс)
+ [Может ли объект получить доступ к `private`-переменной класса? Если, да, то каким образом?](core.md#Может-ли-объект-получить-доступ-к-private-переменной-класса-Если-да-то-каким-образом)
+ [Каков порядок вызова конструкторов и блоков инициализации с учётом иерархии классов?](core.md#Каков-порядок-вызова-конструкторов-и-блоков-инициализации-с-учётом-иерархии-классов)
+ [Зачем нужны и какие бывают блоки инициализации?](core.md#Зачем-нужны-и-какие-бывают-блоки-инициализации)
+ [К каким конструкциям Java применим модификатор `static`?](core.md#К-каким-конструкциям-java-применим-модификатор-static)
+ [Для чего в Java используются статические блоки инициализации?](core.md#Для-чего-в-java-используются-статические-блоки-инициализации)
+ [Что произойдёт, если в блоке инициализации возникнет исключительная ситуация?](core.md#Что-произойдёт-если-в-блоке-инициализации-возникнет-исключительная-ситуация)
+ [Какое исключение выбрасывается при возникновении ошибки в блоке инициализации класса?](core.md#Какое-исключение-выбрасывается-при-возникновении-ошибки-в-блоке-инициализации-класса)
+ [Может ли статический метод быть переопределён или перегружен?](core.md#Может-ли-статический-метод-быть-переопределён-или-перегружен)
+ [Могут ли нестатические методы перегрузить статические?](core.md#Могут-ли-нестатические-методы-перегрузить-статические)
+ [Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?](core.md#Можно-ли-сузить-уровень-доступатип-возвращаемого-значения-при-переопределении-метода)
+ [Возможно ли при переопределении метода изменить: модификатор доступа; возвращаемый тип; тип аргумента или их количество; имена аргументов или их порядок, убирать, добавлять, изменять порядок следования элементов секции `throws`?](core.md#Возможно-ли-при-переопределении-метода-изменить-модификатор-доступа-возвращаемый-тип-тип-аргумента-или-их-количество-имена-аргументов-или-их-порядок-убирать-добавлять-изменять-порядок-следования-элементов-секции-throws)
+ [Как получить доступ к переопределенным методам родительского класса?](core.md#Как-получить-доступ-к-переопределенным-методам-родительского-класса)
+ [Можно ли объявить метод абстрактным и статическим одновременно?](core.md#Можно-ли-объявить-метод-абстрактным-и-статическим-одновременно)
+ [В чем разница между членом экземпляра класса и статическим членом класса?](core.md#В-чем-разница-между-членом-экземпляра-класса-и-статическим-членом-класса)
+ [Где разрешена инициализация статических/нестатических полей?](core.md#Где-разрешена-инициализация-статическихнестатических-полей)
+ [Какие типы классов бывают в java?](core.md#Какие-типы-классов-бывают-в-java)
+ [Расскажите про вложенные классы. В каких случаях они применяются?](core.md#Расскажите-про-вложенные-классы-В-каких-случаях-они-применяются)
+ [Что такое _«статический класс»_?](core.md#Что-такое-статический-класс)
+ [Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?](core.md#Какие-существуют-особенности-использования-вложенных-классов-статических-и-внутренних-В-чем-заключается-разница-между-ними)
+ [Что такое _«локальный класс»_? Каковы его особенности?](core.md#Что-такое-локальный-класс-Каковы-его-особенности)
+ [Что такое _«анонимные классы»_? Где они применяются?](core.md#Что-такое-анонимные-классы-Где-они-применяются)
+ [Каким образом из вложенного класса получить доступ к полю внешнего класса?](core.md#Каким-образом-из-вложенного-класса-получить-доступ-к-полю-внешнего-класса)
+ [Для чего используется оператор `assert`?](core.md#Для-чего-используется-оператор-assert)
+ [Для чего нужен сборщик мусора?](core.md#Для-чего-нужен-сборщик-мусора)
+ [Как работает сборщик мусора?](core.md#Как-работает-сборщик-мусора)
+ [Какие разновидности сборщиков мусора реализованы в виртуальной машине HotSpot?](core.md#Какие-разновидности-сборщиков-мусора-реализованы-в-виртуальной-машине-hotspot)
+ [Опишите алгоритм работы какого-нибудь сборщика мусора реализованного в виртуальной машине HotSpot.](core.md#Опишите-алгоритм-работы-какого-нибудь-сборщика-мусора-реализованного-в-виртуальной-машине-hotspot)
+ [Что такое `finalize()`? Зачем он нужен?](core.md#Что-такое-finalize-Зачем-он-нужен)
+ [Что произойдет со сборщиком мусора, если выполнение метода `finalize()` требует ощутимо много времени, или в процессе выполнения будет выброшено исключение?](core.md#Что-произойдет-со-сборщиком-мусора-если-выполнение-метода-finalize-требует-ощутимо-много-времени-или-в-процессе-выполнения-будет-выброшено-исключение)
+ [Чем отличаются `final`, `finally` и `finalize()`?](core.md#Чем-отличаются-final-finally-и-finalize)
+ [Что такое Heap и Stack память в Java? Какая разница между ними?](core.md#Что-такое-heap-и-stack-память-в-java-Какая-разница-между-ними)
+ [Верно ли утверждение, что примитивные типы данных всегда хранятся в стеке, а экземпляры ссылочных типов данных в куче?](core.md#Верно-ли-утверждение-что-примитивные-типы-данных-всегда-хранятся-в-стеке-а-экземпляры-ссылочных-типов-данных-в-куче)
+ [Каким образом передаются переменные в методы, по значению или по ссылке?](core.md#Каким-образом-передаются-переменные-в-методы-по-значению-или-по-ссылке)
+ [Расскажите про приведение типов. Что такое понижение и повышение типа?](core.md#Расскажите-про-приведение-типов-Что-такое-понижение-и-повышение-типа)
+ [Когда в приложении может быть выброшено исключение `ClassCastException`?](core.md#Когда-в-приложении-может-быть-выброшено-исключение-classcastexception)
+ [Что такое литералы?](core.md#Что-такое-литералы)
+ [Что такое _autoboxing («автоупаковка»)_ в Java и каковы правила упаковки примитивных типов в классы-обертки?](core.md#Что-такое-autoboxing-автоупаковка-в-java-и-каковы-правила-упаковки-примитивных-типов-в-классы-обертки)
+ [Какие есть особенности класса `String`?](core.md#Какие-есть-особенности-класса-string)
+ [Что такое «пул строк»?](core.md#Что-такое-пул-строк)
+ [Почему `String` неизменяемый и финализированный класс?](core.md#Почему-string-неизменяемый-и-финализированный-класс)
+ [Почему `char[]` предпочтительнее `String` для хранения пароля?](core.md#Почему-char-предпочтительнее-string-для-хранения-пароля)
+ [Почему строка является популярным ключом в `HashMap` в Java?](core.md#Почему-строка-является-популярным-ключом-в-hashmap-в-java)
+ [Что делает метод `intern()` в классе `String`?.](core.md#Что-делает-метод-intern-в-классе-string)
+ [Можно ли использовать строки в конструкции `switch`?](core.md#Можно-ли-использовать-строки-в-конструкции-switch)
+ [Какая основная разница между `String`, `StringBuffer`, `StringBuilder`?](core.md#Какая-основная-разница-между-string-stringbuffer-stringbuilder)
+ [Что такое класс `Object`? Какие в нем есть методы?](core.md#Что-такое-класс-object-Какие-в-нем-есть-методы)
+ [Расскажите про клонирование объектов.](core.md#Расскажите-про-клонирование-объектов)
+ [В чем отличие между _поверхностным_ и _глубоким_ клонированием?](core.md#В-чем-отличие-между-поверхностным-и-глубоким-клонированием)
+ [Какой способ клонирования предпочтительней?](core.md#Какой-способ-клонирования-предпочтительней)
+ [Почему метод `clone()` объявлен в классе `Object`, а не в интерфейсе `Cloneable`?](core.md#Почему-метод-clone-объявлен-в-классе-object-а-не-в-интерфейсе-cloneable)
+ [Дайте определение понятию «конструктор».](core.md#Дайте-определение-понятию-конструктор)
+ [Что такое _«конструктор по умолчанию»_?](core.md#Что-такое-конструктор-по-умолчанию)
+ [Чем отличаются конструкторы по-умолчанию, копирования и конструктор с параметрами?](core.md#Чем-отличаются-конструкторы-по-умолчанию-копирования-и-конструктор-с-параметрами)
+ [Где и как вы можете использовать закрытый конструктор?](core.md#Где-и-как-вы-можете-использовать-закрытый-конструктор)
+ [Расскажите про классы-загрузчики и про динамическую загрузку классов.](core.md#Расскажите-про-классы-загрузчики-и-про-динамическую-загрузку-классов)
+ [Что такое _Reflection_?](core.md#Что-такое-reflection)
+ [Зачем нужен `equals()`. Чем он отличается от операции `==`?](core.md#Зачем-нужен-equals-Чем-он-отличается-от-операции-)
+ [`equals()` порождает отношение эквивалентности. Какими свойствами обладает такое отношение?](core.md#equals-порождает-отношение-эквивалентности-Какими-свойствами-обладает-такое-отношение)
+ [Если вы хотите переопределить `equals()`, какие условия должны удовлетворяться для переопределенного метода?](core.md#Если-вы-хотите-переопределить-equals-какие-условия-должны-удовлетворяться-для-переопределенного-метода)
+ [Правила переопределения метода `Object.equals()`.](core.md#Правила-переопределения-метода-objectequals)
+ [Какая связь между `hashCode()` и `equals()`?](core.md#Какая-связь-между-hashcode-и-equals)
+ [Если `equals()` переопределен, есть ли какие-либо другие методы, которые следует переопределить?](core.md#Если-equals-переопределен-есть-ли-какие-либо-другие-методы-которые-следует-переопределить)
+ [Что будет, если переопределить `equals()` не переопределяя `hashCode()`? Какие могут возникнуть проблемы?](core.md#Что-будет-если-переопределить-equals-не-переопределяя-hashcode-Какие-могут-возникнуть-проблемы)
+ [Каким образом реализованы методы `hashCode()` и `equals()` в классе `Object`?](core.md#Каким-образом-реализованы-методы-hashcode-и-equals-в-классе-object)
+ [Для чего нужен метод `hashCode()`?](core.md#Для-чего-нужен-метод-hashcode)
+ [Правила переопределения метода `Object.hashCode()`.](core.md#Правила-переопределения-метода-objecthashcode)
+ [Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете `hashCode()`?](core.md#Есть-ли-какие-либо-рекомендации-о-том-какие-поля-следует-использовать-при-подсчете-hashcode)
+ [Могут ли у разных объектов быть одинаковые `hashCode()`?](core.md#Могут-ли-у-разных-объектов-быть-одинаковые-hashcode)
+ [Если у класса `Point{int x, y;}` реализовать метод `equals(Object that) {(return this.x == that.x && this.y == that.y)}`, но сделать хэш-код в виде `int hashCode() {return x;}`, то будут ли корректно такие точки помещаться и извлекаться из `HashSet`?](core.md#Если-у-класса-pointint-x-y-реализовать-метод-equalsobject-that-return-thisx--thatx--thisy--thaty-но-сделать-хэш-код-в-виде-int-hashcode-return-x-то-будут-ли-корректно-такие-точки-помещаться-и-извлекаться-из-hashset)
+ [Могут ли у разных объектов `(ref0 != ref1)` быть `ref0.equals(ref1) == true`?](core.md#Могут-ли-у-разных-объектов-ref0--ref1-быть-ref0equalsref1--true)
+ [Могут ли у разных ссылок на один объект `(ref0 == ref1)` быть `ref0.equals(ref1) == false`?](core.md#Могут-ли-у-разных-ссылок-на-один-объект-ref0--ref1-быть-ref0equalsref1--false)
+ [Можно ли так реализовать метод `equals(Object that) {return this.hashCode() == that.hashCode()}`?](core.md#Можно-ли-так-реализовать-метод-equalsobject-that-return-thishashcode--thathashcode)
+ [В `equals()` требуется проверять, что аргумент `equals(Object that)` такого же типа что и сам объект. В чем разница между `this.getClass() == that.getClass()` и `that instanceof MyClass`?](core.md#В-equals-требуется-проверять-что-аргумент-equalsobject-that-такого-же-типа-что-и-сам-объект-В-чем-разница-между-thisgetclass--thatgetclass-и-that-instanceof-myclass)
+ [Можно ли реализовать метод `equals()` класса `MyClass` вот так: `class MyClass {public boolean equals(MyClass that) {return this == that;}}`?](core.md#Можно-ли-реализовать-метод-equals-класса-myclass-вот-так-class-myclass-public-boolean-equalsmyclass-that-return-this--that)
+ [Есть класс `Point{int x, y;}`. Почему хэш-код в виде `31 * x + y` предпочтительнее чем `x + y`?](core.md#Есть-класс-pointint-x-y-Почему-хэш-код-в-виде-31--x--y-предпочтительнее-чем-x--y)
+ [Опишите иерархию исключений.](core.md#Опишите-иерархию-исключений)
+ [Какие виды исключений в Java вы знаете, чем они отличаются?](core.md#Какие-виды-исключений-в-java-вы-знаете-чем-они-отличаются)
+ [Что такое _checked_ и _unchecked exception_?](core.md#Что-такое-checked-и-unchecked-exception)
+ [Какой оператор позволяет принудительно выбросить исключение?](core.md#Какой-оператор-позволяет-принудительно-выбросить-исключение)
+ [О чем говорит ключевое слово `throws`?](core.md#О-чем-говорит-ключевое-слово-throws)
+ [Как написать собственное («пользовательское») исключение?](core.md#Как-написать-собственное-пользовательское-исключение)
+ [Какие существуют _unchecked exception_?](core.md#Какие-существуют-unchecked-exception)
+ [Что такое `Error`?](core.md#Что-такое-error)
+ [Что вы знаете о `OutOfMemoryError`?](core.md#Что-вы-знаете-о-outofmemoryerror)
+ [Опишите работу блока _try-catch-finally_.](core.md#Опишите-работу-блока-try-catch-finally)
+ [Что такое механизм _try-with-resources_?](core.md#Что-такое-механизм-try-with-resources)
+ [Возможно ли использование блока _try-finally_ (без `catch`)?](core.md#Возможно-ли-использование-блока-try-finally-без-catch)
+ [Может ли один блок `catch` отлавливать сразу несколько исключений?](core.md#Может-ли-один-блок-catch-отлавливать-сразу-несколько-исключений)
+ [Всегда ли исполняется блок `finally`?](core.md#Всегда-ли-исполняется-блок-finally)
+ [Существуют ли ситуации, когда блок `finally` не будет выполнен?](core.md#Существуют-ли-ситуации-когда-блок-finally-не-будет-выполнен)
+ [Может ли метод main выбросить исключение во вне и если да, то где будет происходить обработка данного исключения?](core.md#Может-ли-метод-main-выбросить-исключение-во-вне-и-если-да-то-где-будет-происходить-обработка-данного-исключения)
+ [Предположим, есть метод, который может выбросить `IOException` и `FileNotFoundException` в какой последовательности должны идти блоки `catch`? Сколько блоков `catch` будет выполнено?](core.md#Предположим-есть-метод-который-может-выбросить-ioexception-и-filenotfoundexception-в-какой-последовательности-должны-идти-блоки-catch-Сколько-блоков-catch-будет-выполнено)
+ [Что такое _generics_?](core.md#Что-такое-generics)
+ [Что такое _«интернационализация»_, _«локализация»_?](core.md#Что-такое-интернационализация-локализация)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Java Collections
+ [Что такое _«коллекция»_?](jcf.md#Что-такое-коллекция)
+ [Назовите основные интерфейсы JCF и их реализации.](jcf.md#Назовите-основные-интерфейсы-jcf-и-их-реализации)
+ [Расположите в виде иерархии следующие интерфейсы: `List`, `Set`, `Map`, `SortedSet`, `SortedMap`, `Collection`, `Iterable`, `Iterator`, `NavigableSet`, `NavigableMap`.](jcf.md#Расположите-в-виде-иерархии-следующие-интерфейсы-list-set-map-sortedset-sortedmap-collection-iterable-iterator-navigableset-navigablemap)
+ [Почему `Map` — это не `Collection`, в то время как `List` и `Set` являются `Collection`?](jcf.md#Почему-map--это-не-collection-в-то-время-как-list-и-set-являются-collection)
+ [В чем разница между классами `java.util.Collection` и `java.util.Collections`?](jcf.md#В-чем-разница-между-классами-javautilcollection-и-javautilcollections)
+ [Что такое «fail-fast поведение»?](jcf.md#Что-такое-fail-fast-поведение)
+ [Какая разница между fail-fast и fail-safe?](jcf.md#Какая-разница-между-fail-fast-и-fail-safe)
+ [Приведите примеры итераторов реализующих поведение fail-safe](jcf.md#Приведите-примеры-итераторов-реализующих-поведение-fail-safe)
+ [Чем различаются `Enumeration` и `Iterator`.](jcf.md#Чем-различаются-enumeration-и-iterator)
+ [Как между собой связаны `Iterable` и `Iterator`?](jcf.md#Как-между-собой-связаны-iterable-и-iterator)
+ [Как между собой связаны `Iterable`, `Iterator` и «for-each»?](jcf.md#Как-между-собой-связаны-iterable-iterator-и-for-each)
+ [Сравните `Iterator` и `ListIterator`.](jcf.md#Сравните-iterator-и-listiterator)
+ [Что произойдет при вызове `Iterator.next()` без предварительного вызова `Iterator.hasNext()`?](jcf.md#Что-произойдет-при-вызове-iteratornext-без-предварительного-вызова-iteratorhasnext)
+ [Сколько элементов будет пропущено, если `Iterator.next()` будет вызван после 10-ти вызовов `Iterator.hasNext()`?](jcf.md#Сколько-элементов-будет-пропущено-если-iteratornext-будет-вызван-после-10-ти-вызовов-iteratorhasnext)
+ [Как поведёт себя коллекция, если вызвать `iterator.remove()`?](jcf.md#Как-поведёт-себя-коллекция-если-вызвать-iteratorremove)
+ [Как поведёт себя уже инстанциированный итератор для `collection`, если вызвать `collection.remove()`?](jcf.md#Как-поведёт-себя-уже-инстанциированный-итератор-для-collection-если-вызвать-collectionremove)
+ [Как избежать `ConcurrentModificationException` во время перебора коллекции?](jcf.md#Как-избежать-concurrentmodificationexception-во-время-перебора-коллекции)
+ [Какая коллекция реализует дисциплину обслуживания FIFO?](jcf.md#Какая-коллекция-реализует-дисциплину-обслуживания-fifo)
+ [Какая коллекция реализует дисциплину обслуживания FILO?](jcf.md#Какая-коллекция-реализует-дисциплину-обслуживания-filo)
+ [Чем отличается `ArrayList` от `Vector`?](jcf.md#Чем-отличается-arraylist-от-vector)
+ [Зачем добавили `ArrayList`, если уже был `Vector`?](jcf.md#Зачем-добавили-arraylist-если-уже-был-vector)
+ [Чем отличается `ArrayList` от `LinkedList`? В каких случаях лучше использовать первый, а в каких второй?](jcf.md#Чем-отличается-arraylist-от-linkedlist-В-каких-случаях-лучше-использовать-первый-а-в-каких-второй)
+ [Что работает быстрее `ArrayList` или `LinkedList`?](jcf.md#Что-работает-быстрее-arraylist-или-linkedlist)
+ [Какое худшее время работы метода `contains()` для элемента, который есть в `LinkedList`?](jcf.md#Какое-худшее-время-работы-метода-contains-для-элемента-который-есть-в-linkedlist)
+ [Какое худшее время работы метода `contains()` для элемента, который есть в `ArrayList`?](jcf.md#Какое-худшее-время-работы-метода-contains-для-элемента-который-есть-в-arraylist)
+ [Какое худшее время работы метода `add()` для `LinkedList`?](jcf.md#Какое-худшее-время-работы-метода-add-для-linkedlist)
+ [Какое худшее время работы метода `add()` для `ArrayList`?](jcf.md#Какое-худшее-время-работы-метода-add-для-arraylist)
+ [Необходимо добавить 1 млн. элементов, какую структуру вы используете?](jcf.md#Необходимо-добавить-1-млн-элементов-какую-структуру-вы-используете)
+ [Как происходит удаление элементов из `ArrayList`? Как меняется в этом случае размер `ArrayList`?](jcf.md#Как-происходит-удаление-элементов-из-arraylist-Как-меняется-в-этом-случае-размер-arraylist)
+ [Предложите эффективный алгоритм удаления нескольких рядом стоящих элементов из середины списка, реализуемого `ArrayList`.](jcf.md#Предложите-эффективный-алгоритм-удаления-нескольких-рядом-стоящих-элементов-из-середины-списка-реализуемого-arraylist)
+ [Сколько необходимо дополнительной памяти при вызове `ArrayList.add()`?](jcf.md#Сколько-необходимо-дополнительной-памяти-при-вызове-arraylistadd)
+ [Сколько выделяется дополнительно памяти при вызове `LinkedList.add()`?](jcf.md#Сколько-выделяется-дополнительно-памяти-при-вызове-linkedlistadd)
+ [Оцените количество памяти на хранение одного примитива типа `byte` в `LinkedList`?](jcf.md#Оцените-количество-памяти-на-хранение-одного-примитива-типа-byte-в-linkedlist)
+ [Оцените количество памяти на хранение одного примитива типа `byte` в `ArrayList`?](jcf.md#Оцените-количество-памяти-на-хранение-одного-примитива-типа-byte-в-arraylist)
+ [Для `ArrayList` или для `LinkedList` операция добавления элемента в середину (`list.add(list.size()/2, newElement)`) медленнее?](jcf.md#Для-arraylist-или-для-linkedlist-операция-добавления-элемента-в-середину-listaddlistsize2-newelement-медленнее)
+ [В реализации класса `ArrayList` есть следующие поля: `Object[] elementData`, `int size`. Объясните, зачем хранить отдельно `size`, если всегда можно взять `elementData.length`?](jcf.md#В-реализации-класса-arraylist-есть-следующие-поля-object-elementdata-int-size-Объясните-зачем-хранить-отдельно-size-если-всегда-можно-взять-elementdatalength)
+ [Сравните интерфейсы `Queue` и `Deque`.](jcf.md#Сравните-интерфейсы-queue-и-deque)
+ [Кто кого расширяет: `Queue` расширяет `Deque`, или `Deque` расширяет `Queue`?](jcf.md#Кто-кого-расширяет-queue-расширяет-deque-или-deque-расширяет-queue)
+ [Почему `LinkedList` реализует и `List`, и `Deque`?](jcf.md#Почему-linkedlist-реализует-и-list-и-deque)
+ [`LinkedList` — это односвязный, двусвязный или четырехсвязный список?](jcf.md#linkedlist--это-односвязный-двусвязный-или-четырехсвязный-список)
+ [Как перебрать элементы `LinkedList` в обратном порядке, не используя медленный `get(index)`?](jcf.md#Как-перебрать-элементы-linkedlist-в-обратном-порядке-не-используя-медленный-getindex)
+ [Что позволяет сделать `PriorityQueue`?](jcf.md#Что-позволяет-сделать-priorityqueue)
+ [`Stack` считается «устаревшим». Чем его рекомендуют заменять? Почему?](jcf.md#stack-считается-устаревшим-Чем-его-рекомендуют-заменять-Почему)
+ [Зачем нужен `HashMap`, если есть `Hashtable`?](jcf.md#Зачем-нужен-hashmap-если-есть-hashtable)
+ [В чем разница между `HashMap` и `IdentityHashMap`? Для чего нужна `IdentityHashMap`?](jcf.md#В-чем-разница-между-hashmap-и-identityhashmap-Для-чего-нужна-identityhashmap)
+ [В чем разница между `HashMap` и `WeakHashMap`? Для чего используется `WeakHashMap`?](jcf.md#В-чем-разница-между-hashmap-и-weakhashmap-Для-чего-используется-weakhashmap)
+ [В `WeakHashMap` используются WeakReferences. А почему бы не создать `SoftHashMap` на SoftReferences?](jcf.md#В-weakhashmap-используются-weakreferences-А-почему-бы-не-создать-softhashmap-на-softreferences)
+ [В `WeakHashMap` используются WeakReferences. А почему бы не создать `PhantomHashMap` на PhantomReferences?](jcf.md#В-weakhashmap-используются-weakreferences-А-почему-бы-не-создать-phantomhashmap-на-phantomreferences)
+ [`LinkedHashMap` - что в нем от `LinkedList`, а что от `HashMap`?](jcf.md#linkedhashmap---что-в-нем-от-linkedlist-а-что-от-hashmap)
+ [В чем проявляется «сортированность» `SortedMap`, кроме того, что `toString()` выводит все элементы по порядку?](jcf.md#В-чем-проявляется-сортированность-sortedmap-кроме-того-что-tostring-выводит-все-элементы-по-порядку)
+ [Как устроен `HashMap`?](jcf.md#Как-устроен-hashmap)
+ [Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресации и на основе метода цепочек. Как реализована `HashMap`? Почему, по вашему мнению, была выбрана именно эта реализация? В чем плюсы и минусы каждого подхода?](jcf.md#Согласно-Кнуту-и-Кормену-существует-две-основных-реализации-хэш-таблицы-на-основе-открытой-адресации-и-на-основе-метода-цепочек-Как-реализована-hashmap-Почему-по-вашему-мнению-была-выбрана-именно-эта-реализация-В-чем-плюсы-и-минусы-каждого-подхода)
+ [Как работает `HashMap` при попытке сохранить в него два элемента по ключам с одинаковым `hashCode()`, но для которых `equals() == false`?](jcf.md#Как-работает-hashmap-при-попытке-сохранить-в-него-два-элемента-по-ключам-с-одинаковым-hashcode-но-для-которых-equals--false)
+ [Какое начальное количество корзин в `HashMap`?](jcf.md#Какое-начальное-количество-корзин-в-hashmap)
+ [Какова оценка временной сложности операций над элементами из `HashMap`? Гарантирует ли `HashMap` указанную сложность выборки элемента?](jcf.md#Какова-оценка-временной-сложности-операций-над-элементами-из-hashmap-Гарантирует-ли-hashmap-указанную-сложность-выборки-элемента)
+ [Возможна ли ситуация, когда `HashMap` выродится в список даже с ключами имеющими разные `hashCode()`?](jcf.md#Возможна-ли-ситуация-когда-hashmap-выродится-в-список-даже-с-ключами-имеющими-разные-hashcode)
+ [В каком случае может быть потерян элемент в `HashMap`?](jcf.md#В-каком-случае-может-быть-потерян-элемент-в-hashmap)
+ [Почему нельзя использовать `byte[]` в качестве ключа в `HashMap`?](jcf.md#Почему-нельзя-использовать-byte-в-качестве-ключа-в-hashmap)
+ [Какова роль `equals()` и `hashCode()` в `HashMap`?](jcf.md#Какова-роль-equals-и-hashcode-в-hashmap)
+ [Каково максимальное число значений `hashCode()`?](jcf.md#Каково-максимальное-число-значений-hashcode)
+ [Какое худшее время работы метода get(key) для ключа, которого нет в `HashMap`?](jcf.md#Какое-худшее-время-работы-метода-getkey-для-ключа-которого-нет-в-hashmap)
+ [Какое худшее время работы метода get(key) для ключа, который есть в `HashMap`?](jcf.md#Какое-худшее-время-работы-метода-getkey-для-ключа-который-есть-в-hashmap)
+ [Почему несмотря на то, что ключ в `HashMap` не обязан реализовывать интерфейс `Comparable`, двусвязный список всегда удается преобразовать в красно-черное-дерево?](jcf.md#Почему-несмотря-на-то-что-ключ-в-HashMap-не-обязан-реализовывать-интерфейс-Comparable-двусвязный-список-всегда-удается-преобразовать-в-красно-черное-дерево)
+ [Сколько переходов происходит в момент вызова `HashMap.get(key)` по ключу, который есть в таблице?](jcf.md#Сколько-переходов-происходит-в-момент-вызова-hashmapgetkey-по-ключу-который-есть-в-таблице)
+ [Сколько создается новых объектов, когда вы добавляете новый элемент в `HashMap`?](jcf.md#Сколько-создается-новых-объектов-когда-вы-добавляете-новый-элемент-в-hashmap)
+ [Как и когда происходит увеличение количества корзин в `HashMap`?](jcf.md#Как-и-когда-происходит-увеличение-количества-корзин-в-hashmap)
+ [Объясните смысл параметров в конструкторе `HashMap(int initialCapacity, float loadFactor)`.](jcf.md#Объясните-смысл-параметров-в-конструкторе-hashmapint-initialcapacity-float-loadfactor)
+ [Будет ли работать `HashMap`, если все добавляемые ключи будут иметь одинаковый `hashCode()`?](jcf.md#Будет-ли-работать-hashmap-если-все-добавляемые-ключи-будут-иметь-одинаковый-hashcode)
+ [Как перебрать все ключи `Map`?](jcf.md#Как-перебрать-все-ключи-map)
+ [Как перебрать все значения `Map`?](jcf.md#Как-перебрать-все-значения-map)
+ [Как перебрать все пары «ключ-значение» в `Map`?](jcf.md#Как-перебрать-все-пары-ключ-значение-в-map)
+ [В чем отличия `TreeSet` и `HashSet`?](jcf.md#В-чем-отличия-treeset-и-hashset)
+ [Что будет, если добавлять элементы в `TreeSet` по возрастанию?](jcf.md#Что-будет-если-добавлять-элементы-в-treeset-по-возрастанию)
+ [Чем `LinkedHashSet` отличается от `HashSet`?](jcf.md#Чем-linkedhashset-отличается-от-hashset)
+ [Для `Enum` есть специальный класс `java.util.EnumSet`. Зачем? Чем авторов не устраивал `HashSet` или `TreeSet`?](jcf.md#Для-enum-есть-специальный-класс-javautilenumset-Зачем-Чем-авторов-не-устраивал-hashset-или-treeset)
+ [Какие существуют способы перебирать элементы списка?](jcf.md#Какие-существуют-способы-перебирать-элементы-списка)
+ [Каким образом можно получить синхронизированные объекты стандартных коллекций?](jcf.md#Каким-образом-можно-получить-синхронизированные-объекты-стандартных-коллекций)
+ [Как получить коллекцию только для чтения?](jcf.md#Как-получить-коллекцию-только-для-чтения)
+ [Напишите однопоточную программу, которая заставляет коллекцию выбросить `ConcurrentModificationException`.](jcf.md#Напишите-однопоточную-программу-которая-заставляет-коллекцию-выбросить-concurrentmodificationexception)
+ [Приведите пример, когда какая-либо коллекция выбрасывает `UnsupportedOperationException`.](jcf.md#Приведите-пример-когда-какая-либо-коллекция-выбрасывает-unsupportedoperationexception)
+ [Реализуйте симметрическую разность двух коллекций используя методы `Collection` (`addAll(...)`, `removeAll(...)`, `retainAll(...)`).](jcf.md#Реализуйте-симметрическую-разность-двух-коллекций-используя-методы-collection-addall-removeall-retainall)
+ [Как, используя LinkedHashMap, сделать кэш c «invalidation policy»?](jcf.md#Как-используя-linkedhashmap-сделать-кэш-c-invalidation-policy)
+ [Как одной строчкой скопировать элементы любой `collection` в массив?](jcf.md#Как-одной-строчкой-скопировать-элементы-любой-collection-в-массив)
+ [Как одним вызовом из `List` получить `List` со всеми элементами, кроме первых и последних 3-х?](jcf.md#Как-одним-вызовом-из-list-получить-list-со-всеми-элементами-кроме-первых-и-последних-3-х)
+ [Как одной строчкой преобразовать `HashSet` в `ArrayList`?](jcf.md#Как-одной-строчкой-преобразовать-hashset-в-arraylist)
+ [Как одной строчкой преобразовать `ArrayList` в `HashSet`?](jcf.md#Как-одной-строчкой-преобразовать-arraylist-в-hashset)
+ [Сделайте `HashSet` из ключей `HashMap`.](jcf.md#Сделайте-hashset-из-ключей-hashmap)
+ [Сделайте `HashMap` из `HashSet<Map.Entry<K, V>>`.](jcf.md#Сделайте-hashmap-из-hashsetmapentryk-v)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Java 8
+ [Какие нововведения, появились в Java 8 и JDK 8?](java8.md#Какие-нововведения-появились-в-java-8-и-jdk-8)
+ [Что такое _«лямбда»_? Какова структура и особенности использования лямбда-выражения?](java8.md#Что-такое-лямбда-Какова-структура-и-особенности-использования-лямбда-выражения)
+ [К каким переменным есть доступ у лямбда-выражений?](java8.md#К-каким-переменным-есть-доступ-у-лямбда-выражений)
+ [Как отсортировать список строк с помощью лямбда-выражения?](java8.md#Как-отсортировать-список-строк-с-помощью-лямбда-выражения)
+ [Что такое «ссылка на метод»?](java8.md#Что-такое-ссылка-на-метод)
+ [Какие виды ссылок на методы вы знаете?](java8.md#Какие-виды-ссылок-на-методы-вы-знаете)
+ [Объясните выражение `System.out::println`.](java8.md#Объясните-выражение-systemoutprintln)
+ [Что такое «функциональные интерфейсы»?](java8.md#Что-такое-функциональные-интерфейсы)
+ [Для чего нужны функциональные интерфейсы `Function<T,R>`, `DoubleFunction<R>`, `IntFunction<R>` и `LongFunction<R>`?](java8.md#Для-чего-нужны-функциональные-интерфейсы-functiontr-doublefunctionr-intfunctionr-и-longfunctionr)
+ [Для чего нужны функциональные интерфейсы `UnaryOperator<T>`, `DoubleUnaryOperator`, `IntUnaryOperator` и `LongUnaryOperator`?](java8.md#Для-чего-нужны-функциональные-интерфейсы-unaryoperatort-doubleunaryoperator-intunaryoperator-и-longunaryoperator)
+ [Для чего нужны функциональные интерфейсы `BinaryOperator<T>`, `DoubleBinaryOperator`, `IntBinaryOperator` и `LongBinaryOperator`?](java8.md#Для-чего-нужны-функциональные-интерфейсы-binaryoperatort-doublebinaryoperator-intbinaryoperator-и-longbinaryoperator)
+ [Для чего нужны функциональные интерфейсы `Predicate<T>`, `DoublePredicate`, `IntPredicate` и `LongPredicate`?](java8.md#Для-чего-нужны-функциональные-интерфейсы-predicatet-doublepredicate-intpredicate-и-longpredicate)
+ [Для чего нужны функциональные интерфейсы `Consumer<T>`, `DoubleConsumer`, `IntConsumer` и `LongConsumer`?](java8.md#Для-чего-нужны-функциональные-интерфейсы-consumert-doubleconsumer-intconsumer-и-longconsumer)
+ [Для чего нужны функциональные интерфейсы `Supplier<T>`, `BooleanSupplier`, `DoubleSupplier`, `IntSupplier` и `LongSupplier`?](java8.md#Для-чего-нужны-функциональные-интерфейсы-suppliert--booleansupplier-doublesupplier-intsupplier-и-longsupplier)
+ [Для чего нужен функциональный интерфейс `BiConsumer<T,U>`?](java8.md#Для-чего-нужен-функциональный-интерфейс-biconsumertu)
+ [Для чего нужен функциональный интерфейс `BiFunction<T,U,R>`?](java8.md#Для-чего-нужен-функциональный-интерфейс-bifunctiontur)
+ [Для чего нужен функциональный интерфейс `BiPredicate<T,U>`?](java8.md#Для-чего-нужен-функциональный-интерфейс-bipredicatetu)
+ [Для чего нужны функциональные интерфейсы вида `_To_Function`?](java8.md#Для-чего-нужны-функциональные-интерфейсы-вида-tofunction)
+ [Для чего нужны функциональные интерфейсы `ToDoubleBiFunction<T,U>`, `ToIntBiFunction<T,U>` и `ToLongBiFunction<T,U>`?](java8.md#Для-чего-нужны-функциональные-интерфейсы-todoublebifunctiontu-tointbifunctiontu-и-tolongbifunctiontu)
+ [Для чего нужны функциональные интерфейсы `ToDoubleFunction<T>`, `ToIntFunction<T>` и `ToLongFunction<T>`?](java8.md#Для-чего-нужны-функциональные-интерфейсы-todoublefunctiont-tointfunctiont-и-tolongfunctiont)
+ [Для чего нужны функциональные интерфейсы `ObjDoubleConsumer<T>`, `ObjIntConsumer<T>` и `ObjLongConsumer<T>`?](java8.md#Для-чего-нужны-функциональные-интерфейсы-objdoubleconsumert-objintconsumert-и-objlongconsumert)
+ [Что такое `StringJoiner`?](java8.md#Что-такое-stringjoiner)
+ [Что такое `default` методы интрефейса?](java8.md#Что-такое-default-методы-интрефейса)
+ [Как вызывать `default` метод интерфейса в реализующем этот интерфейс классе?](java8.md#Как-вызывать-default-метод-интерфейса-в-реализующем-этот-интерфейс-классе)
+ [Что такое `static` метод интерфейса?](java8.md#Что-такое-static-метод-интерфейса)
+ [Как вызывать `static` метод интерфейса?](java8.md#Как-вызывать-static-метод-интерфейса)
+ [Что такое `Optional`?](java8.md#Что-такое-optional)
+ [Что такое `Stream`?](java8.md#Что-такое-stream)
+ [Какие существуют способы создания стрима?](java8.md#Какие-существуют-способы-создания-стрима)
+ [В чем разница между `Collection` и `Stream`?](java8.md#В-чем-разница-между-collection-и-stream)
+ [Для чего нужен метод `collect()` в стримах?](java8.md#Для-чего-нужен-метод-collect-в-стримах)
+ [Для чего в стримах применяются методы `forEach()` и `forEachOrdered()`?](java8.md#Для-чего-в-стримах-применяются-методы-foreach-и-foreachordered)
+ [Для чего в стримах предназначены методы `map()` и `mapToInt()`, `mapToDouble()`, `mapToLong()`?](java8.md#Для-чего-в-стримах-предназначены-методы-map-и-maptoint-maptodouble-maptolong)
+ [Какова цель метода `filter()` в стримах?](java8.md#Какова-цель-метода-filter-в-стримах)
+ [Для чего в стримах предназначен метод `limit()`?](java8.md#Для-чего-в-стримах-предназначен-метод-limit)
+ [Для чего в стримах предназначен метод `sorted()`?](java8.md#Для-чего-в-стримах-предназначен-метод-sorted)
+ [Для чего в стримах предназначены методы `flatMap()`, `flatMapToInt()`, `flatMapToDouble()`, `flatMapToLong()`?](java8.md#Для-чего-в-стримах-предназначены-методы-flatmap-flatmaptoint-flatmaptodouble-flatmaptolong)
+ [Расскажите о параллельной обработке в Java 8.](java8.md#Расскажите-о-параллельной-обработке-в-java-8)
+ [Какие конечные методы работы со стримами вы знаете?](java8.md#Какие-конечные-методы-работы-со-стримами-вы-знаете)
+ [Какие промежуточные методы работы со стримами вы знаете?](java8.md#Какие-промежуточные-методы-работы-со-стримами-вы-знаете)
+ [Как вывести на экран 10 случайных чисел, используя `forEach()`?](java8.md#Как-вывести-на-экран-10-случайных-чисел-используя-foreach)
+ [Как можно вывести на экран уникальные квадраты чисел используя метод `map()`?](java8.md#Как-можно-вывести-на-экран-уникальные-квадраты-чисел-используя-метод-map)
+ [Как вывести на экран количество пустых строк с помощью метода `filter()`?](java8.md#Как-вывести-на-экран-количество-пустых-строк-с-помощью-метода-filter)
+ [Как вывести на экран 10 случайных чисел в порядке возрастания?](java8.md#Как-вывести-на-экран-10-случайных-чисел-в-порядке-возрастания)
+ [Как найти максимальное число в наборе?](java8.md#Как-найти-максимальное-число-в-наборе)
+ [Как найти минимальное число в наборе?](java8.md#Как-найти-минимальное-число-в-наборе)
+ [Как получить сумму всех чисел в наборе?](java8.md#Как-получить-сумму-всех-чисел-в-наборе)
+ [Как получить среднее значение всех чисел?](java8.md#Как-получить-среднее-значение-всех-чисел)
+ [Какие дополнительные методы для работы с ассоциативными массивами (maps) появились в Java 8?](java8.md#Какие-дополнительные-методы-для-работы-с-ассоциативными-массивами-maps-появились-в-java-8)
+ [Что такое `LocalDateTime`?](java8.md#Что-такое-localdatetime)
+ [Что такое `ZonedDateTime`?](java8.md#Что-такое-zoneddatetime)
+ [Как получить текущую дату с использованием Date Time API из Java 8?](java8.md#Как-получить-текущую-дату-с-использованием-date-time-api-из-java-8)
+ [Как добавить 1 неделю, 1 месяц, 1 год, 10 лет к текущей дате с использованием Date Time API?](java8.md#Как-добавить-1-неделю-1-месяц-1-год-10-лет-к-текущей-дате-с-использованием-date-time-api)
+ [Как получить следующий вторник используя Date Time API?](java8.md#Как-получить-следующий-вторник-используя-date-time-api)
+ [Как получить вторую субботу текущего месяца используя Date Time API?](java8.md#Как-получить-вторую-субботу-текущего-месяца-используя-date-time-api)
+ [Как получить текущее время с точностью до миллисекунд используя Date Time API?](java8.md#Как-получить-текущее-время-с-точностью-до-миллисекунд-используя-date-time-api)
+ [Как получить текущее время по местному времени с точностью до миллисекунд используя Date Time API?](java8.md#Как-получить-текущее-время-по-местному-времени-с-точностью-до-миллисекунд-используя-date-time-api)
+ [Как определить повторяемую аннотацию?](java8.md#Как-определить-повторяемую-аннотацию)
+ [Что такое `Nashorn`?](java8.md#Что-такое-nashorn)
+ [Что такое `jjs`?](java8.md#Что-такое-jjs)
+ [Какой класс появился в Java 8 для кодирования/декодирования данных?](java8.md#Какой-класс-появился-в-java-8-для-кодированиядекодирования-данных)
+ [Как создать Base64 кодировщик и декодировщик?](java8.md#Как-создать-base64-кодировщик-и-декодировщик)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Потоки ввода/вывода в Java
+ [В чём заключается разница между IO и NIO?](io.md#В-чём-заключается-разница-между-io-и-nio)
+ [Какие особенности NIO вы знаете?](io.md#Какие-особенности-nio-вы-знаете)
+ [Что такое _«каналы»_?](io.md#Что-такое-каналы)
+ [Какие существуют виды потоков ввода/вывода?](io.md#Какие-существуют-виды-потоков-вводавывода)
+ [Назовите основные классы потоков ввода/вывода.](io.md#Назовите-основные-классы-потоков-вводавывода)
+ [В каких пакетах расположены классы потоков ввода/вывода?](io.md#В-каких-пакетах-расположены-классы-потоков-вводавывода)
+ [Какие подклассы класса `InputStream` вы знаете, для чего они предназначены?](io.md#Какие-подклассы-класса-inputstream-вы-знаете-для-чего-они-предназначены)
+ [Для чего используется `PushbackInputStream`?](io.md#Для-чего-используется-pushbackinputstream)
+ [Для чего используется `SequenceInputStream`?](io.md#Для-чего-используется-sequenceinputstream)
+ [Какой класс позволяет читать данные из входного байтового потока в формате примитивных типов данных?](io.md#Какой-класс-позволяет-читать-данные-из-входного-байтового-потока-в-формате-примитивных-типов-данных)
+ [Какие подклассы класса `OutputStream` вы знаете, для чего они предназначены?](io.md#Какие-подклассы-класса-outputstream-вы-знаете-для-чего-они-предназначены)
+ [Какие подклассы класса `Reader` вы знаете, для чего они предназначены?](io.md#Какие-подклассы-класса-reader-вы-знаете-для-чего-они-предназначены)
+ [Какие подклассы класса `Writer` вы знаете, для чего они предназначены?](io.md#Какие-подклассы-класса-writer-вы-знаете-для-чего-они-предназначены)
+ [В чем отличие класса `PrintWriter` от `PrintStream`?](io.md#В-чем-отличие-класса-printwriter-от-printstream)
+ [Чем отличаются и что общего у `InputStream`, `OutputStream`, `Reader`, `Writer`?](io.md#Чем-отличаются-и-что-общего-у-inputstream-outputstream-reader-writer)
+ [Какие классы позволяют преобразовать байтовые потоки в символьные и обратно?](io.md#Какие-классы-позволяют-преобразовать-байтовые-потоки-в-символьные-и-обратно)
+ [Какие классы позволяют ускорить чтение/запись за счет использования буфера?](io.md#Какие-классы-позволяют-ускорить-чтениезапись-за-счет-использования-буфера)
+ [Какой класс предназначен для работы с элементами файловой системы?](io.md#Какой-класс-предназначен-для-работы-с-элементами-файловой-системы)
+ [Какие методы класса `File` вы знаете?](io.md#Какие-методы-класса-file-вы-знаете)
+ [Что вы знаете об интерфейсе `FileFilter`?](io.md#Что-вы-знаете-об-интерфейсе-filefilter)
+ [Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?](io.md#Как-выбрать-все-элементы-определенного-каталога-по-критерию-например-с-определенным-расширением)
+ [Что вы знаете о `RandomAccessFile`?](io.md#Что-вы-знаете-о-randomaccessfile)
+ [Какие режимы доступа к файлу есть у `RandomAccessFile`?](io.md#Какие-режимы-доступа-к-файлу-есть-у-randomaccessfile)
+ [Какие классы поддерживают чтение и запись потоков в компрессированном формате?](io.md#Какие-классы-поддерживают-чтение-и-запись-потоков-в-компрессированном-формате)
+ [Существует ли возможность перенаправить потоки стандартного ввода/вывода?](io.md#Существует-ли-возможность-перенаправить-потоки-стандартного-вводавывода)
+ [Какой символ является разделителем при указании пути в файловой системе?](io.md#Какой-символ-является-разделителем-при-указании-пути-в-файловой-системе)
+ [Что такое _«абсолютный путь»_ и _«относительный путь»_?](io.md#Что-такое-абсолютный-путь-и-относительный-путь)
+ [Что такое _«символьная ссылка»_?](io.md#Что-такое-символьная-ссылка)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Сериализация
+ [Что такое _«сериализация»_?](serialization.md#Что-такое-сериализация)
+ [Опишите процесс сериализации/десериализации с использованием `Serializable`.](serialization.md#Опишите-процесс-сериализациидесериализации-с-использованием-serializable)
+ [Как изменить стандартное поведение сериализации/десериализации?](serialization.md#Как-изменить-стандартное-поведение-сериализациидесериализации)
+ [Как исключить поля из сериализации?](serialization.md#Как-исключить-поля-из-сериализации)
+ [Что обозначает ключевое слово `transient`?](serialization.md#Что-обозначает-ключевое-слово-transient)
+ [Какое влияние оказывают на сериализуемость модификаторы полей `static` и `final`](serialization.md#Какое-влияние-оказывают-на-сериализуемость-модификаторы-полей-static-и-final)
+ [Как не допустить сериализацию?](serialization.md#Как-не-допустить-сериализацию)
+ [Как создать собственный протокол сериализации?](serialization.md#Как-создать-собственный-протокол-сериализации)
+ [Какая роль поля `serialVersionUID` в сериализации?](serialization.md#Какая-роль-поля-serialversionuid-в-сериализации)
+ [Когда стоит изменять значение поля `serialVersionUID`?](serialization.md#Когда-стоит-изменять-значение-поля-serialversionuid)
+ [В чем проблема сериализации Singleton?](serialization.md#В-чем-проблема-сериализации-singleton)
+ [Какие существуют способы контроля за значениями десериализованного объекта](serialization.md#Какие-существуют-способы-контроля-за-значениями-десериализованного-объекта)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Многопоточность
+ [Расскажите о модели памяти Java?](concurrency.md#Расскажите-о-модели-памяти-java)
+ [Что такое «потокобезопасность»?](concurrency.md#Что-такое-потокобезопасность)
+ [В чём разница между _«конкуренцией»_ и _«параллелизмом»_?](concurrency.md#В-чём-разница-между-конкуренцией-и-параллелизмом)
+ [Что такое _«кооперативная многозадачность»_? Какой тип многозадачности использует Java? Чем обусловлен этот выбор?](concurrency.md#Что-такое-кооперативная-многозадачность-Какой-тип-многозадачности-использует-java-Чем-обусловлен-этот-выбор)
+ [Что такое _ordering_, _as-if-serial semantics_, _sequential consistency_, _visibility_, _atomicity_, _happens-before_, _mutual exclusion_, _safe publication_?](concurrency.md#Что-такое-ordering-as-if-serial-semantics-sequential-consistency-visibility-atomicity-happens-before-mutual-exclusion-safe-publication)
+ [Чем отличается процесс от потока?](concurrency.md#Чем-отличается-процесс-от-потока)
+ [Что такое _«зелёные потоки»_ и есть ли они в Java?](concurrency.md#Что-такое-зелёные-потоки-и-есть-ли-они-в-java)
+ [Каким образом можно создать поток?](concurrency.md#Каким-образом-можно-создать-поток)
+ [Чем различаются `Thread` и `Runnable`?](concurrency.md#Чем-различаются-thread-и-runnable)
+ [В чём заключается разница между методами `start()` и `run()`?](concurrency.md#В-чём-заключается-разница-между-методами-start-и-run)
+ [Как принудительно запустить поток?](concurrency.md#Как-принудительно-запустить-поток)
+ [Что такое _«монитор»_ в Java?](concurrency.md#Что-такое-монитор-в-java)
+ [Дайте определение понятию «синхронизация».](concurrency.md#Дайте-определение-понятию-синхронизация)
+ [Какие существуют способы синхронизации в Java?](concurrency.md#Какие-существуют-способы-синхронизации-в-java)
+ [В каких состояниях может находиться поток?](concurrency.md#В-каких-состояниях-может-находиться-поток)
+ [Можно ли создавать новые экземпляры класса, пока выполняется `static synchronized` метод?](concurrency.md#Можно-ли-создавать-новые-экземпляры-класса-пока-выполняется-static-synchronized-метод)
+ [Зачем может быть нужен `private` мьютекс?](concurrency.md#Зачем-может-быть-нужен-private-мьютекс)
+ [Как работают методы `wait()` и `notify()`/`notifyAll()`?](concurrency.md#Как-работают-методы-wait-и-notifynotifyall)
+ [В чем разница между `notify()` и `notifyAll()`?](concurrency.md#В-чем-разница-между-notify-и-notifyall)
+ [Почему методы `wait()` и `notify()` вызываются только в синхронизированном блоке?](concurrency.md#Почему-методы-wait-и-notify-вызываются-только-в-синхронизированном-блоке)
+ [Чем отличается работа метода `wait()` с параметром и без параметра?](concurrency.md#Чем-отличается-работа-метода-wait-с-параметром-и-без-параметра)
+ [Чем отличаются методы `Thread.sleep()` и `Thread.yield()`?](concurrency.md#Чем-отличаются-методы-threadsleep-и-threadyield)
+ [Как работает метод `Thread.join()`?](concurrency.md#Как-работает-метод-threadjoin)
+ [Что такое _deadlock_?](concurrency.md#Что-такое-deadlock)
+ [Что такое _livelock_?](concurrency.md#Что-такое-livelock)
+ [Как проверить, удерживает ли поток монитор определённого ресурса?](concurrency.md#Как-проверить-удерживает-ли-поток-монитор-определённого-ресурса)
+ [На каком объекте происходит синхронизация при вызове `static synchronized` метода?](concurrency.md#На-каком-объекте-происходит-синхронизация-при-вызове-static-synchronized-метода)
+ [Для чего используется ключевое слово `volatile`, `synchronized`, `transient`, `native`?](concurrency.md#Для-чего-используется-ключевое-слово-volatile-synchronized-transient-native)
+ [В чём различия между `volatile` и _Atomic_ переменными?](concurrency.md#В-чём-различия-между-volatile-и-atomic-переменными)
+ [ В чём заключаются различия между `java.util.concurrent.Atomic*.compareAndSwap()` и `java.util.concurrent.Atomic*.weakCompareAndSwap()`.](concurrency.md#-В-чём-заключаются-различия-между-javautilconcurrentatomiccompareandswap-и-javautilconcurrentatomicweakcompareandswap)
+ [Что значит _«приоритет потока»_?](concurrency.md#Что-значит-приоритет-потока)
+ [Что такое _«потоки-демоны»_?](concurrency.md#Что-такое-потоки-демоны)
+ [Можно ли сделать основной поток программы демоном?](concurrency.md#Можно-ли-сделать-основной-поток-программы-демоном)
+ [Что значит _«усыпить»_ поток?](concurrency.md#Что-значит-усыпить-поток)
+ [Чем отличаются два интерфейса `Runnable` и `Callable`?](concurrency.md#Чем-отличаются-два-интерфейса-runnable-и-callable)
+ [Что такое `FutureTask`?](concurrency.md#Что-такое-futuretask)
+ [В чем заключаются различия между `CyclicBarrier` и `CountDownLatch`?](concurrency.md#В-чем-заключаются-различия-между-cyclicbarrier-и-countdownlatch)
+ [Что такое _race condition_?](concurrency.md#Что-такое-race-condition)
+ [Существует ли способ решения проблемы _race condition_?](concurrency.md#Существует-ли-способ-решения-проблемы-race-condition)
+ [Как остановить поток?](concurrency.md#Как-остановить-поток)
+ [Почему не рекомендуется использовать метод `Thread.stop()`?](concurrency.md#Почему-не-рекомендуется-использовать-метод-threadstop)
+ [Что происходит, когда в потоке выбрасывается исключение?](concurrency.md#Что-происходит-когда-в-потоке-выбрасывается-исключение)
+ [В чем разница между `interrupted()` и `isInterrupted()`?](concurrency.md#В-чем-разница-между-interrupted-и-isinterrupted)
+ [Что такое _«пул потоков»_?](concurrency.md#Что-такое-пул-потоков)
+ [Какого размера должен быть пул потоков?](concurrency.md#Какого-размера-должен-быть-пул-потоков)
+ [Что будет, если очередь пула потоков уже заполнена, но подаётся новая задача?](concurrency.md#Что-будет-если-очередь-пула-потоков-уже-заполнена-но-подаётся-новая-задача)
+ [В чём заключается различие между методами `submit()` и `execute()` у пула потоков?](concurrency.md#В-чём-заключается-различие-между-методами-submit-и-execute-у-пула-потоков)
+ [В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?](concurrency.md#В-чем-заключаются-различия-между-cтеком-stack-и-кучей-heap-с-точки-зрения-многопоточности)
+ [Как поделиться данными между двумя потоками?](concurrency.md#Как-поделиться-данными-между-двумя-потоками)
+ [Какой параметр запуска JVM используется для контроля размера стека потока?](concurrency.md#Какой-параметр-запуска-jvm-используется-для-контроля-размера-стека-потока)
+ [Как получить дамп потока?](concurrency.md#Как-получить-дамп-потока)
+ [Что такое _ThreadLocal-переменная_?](concurrency.md#Что-такое-threadlocal-переменная)
+ [Назовите различия между `synchronized` и `ReentrantLock`?](concurrency.md#Назовите-различия-между-synchronized-и-reentrantlock)
+ [Что такое `ReadWriteLock`?](concurrency.md#Что-такое-readwritelock)
+ [Что такое _«блокирующий метод»_?](concurrency.md#Что-такое-блокирующий-метод)
+ [Что такое _«фреймворк Fork/Join»_?](concurrency.md#Что-такое-фреймворк-forkjoin)
+ [Что такое `Semaphore`?](concurrency.md#Что-такое-semaphore)
+ [Что такое _double checked locking Singleton_?](concurrency.md#Что-такое-double-checked-locking-singleton)
+ [Как создать потокобезопасный Singleton?](concurrency.md#Как-создать-потокобезопасный-singleton)
+ [Чем полезны неизменяемые объекты?](concurrency.md#Чем-полезны-неизменяемые-объекты)
+ [Что такое _busy spin_?](concurrency.md#Что-такое-busy-spin)
+ [Перечислите принципы, которым вы следуете в многопоточном программировании?](concurrency.md#Перечислите-принципы-которым-вы-следуете-в-многопоточном-программировании)
+ [Какое из следующих утверждений о потоках неверно?](concurrency.md#Какое-из-следующих-утверждений-о-потоках-неверно)
+ [Даны 3 потока Т1, Т2 и Т3? Как реализовать выполнение в последовательности Т1, Т2, Т3?](concurrency.md#Даны-3-потока-Т1-Т2-и-Т3-Как-реализовать-выполнение-в-последовательности-Т1-Т2-Т3)
+ [Напишите минимальный неблокирующий стек (всего два метода — `push()` и `pop()`).](concurrency.md#Напишите-минимальный-неблокирующий-стек-всего-два-метода--push-и-pop)
+ [Напишите минимальный неблокирующий стек (всего два метода — `push()` и `pop()`) с использованием `Semaphore`.](concurrency.md#Напишите-минимальный-неблокирующий-стек-всего-два-метода--push-и-pop-с-использованием-semaphore)
+ [Напишите минимальный неблокирующий ArrayList (всего четыре метода — `add()`, `get()`, `remove()`, `size()`).](concurrency.md#Напишите-минимальный-неблокирующий-arraylist-всего-четыре-метода--add-get-remove-size)
+ [Напишите потокобезопасную реализацию класса с неблокирующим методом `BigInteger next()`, который возвращает элементы последовательности: `[1, 2, 4, 8, 16, ...]`.](concurrency.md#Напишите-потокобезопасную-реализацию-класса-с-неблокирующим-методом-biginteger-next-который-возвращает-элементы-последовательности-1-2-4-8-16-)
+ [Напишите простейший многопоточный ограниченный буфер с использованием `synchronized`.](concurrency.md#Напишите-простейший-многопоточный-ограниченный-буфер-с-использованием-synchronized)
+ [Напишите простейший многопоточный ограниченный буфер с использованием `ReentrantLock`.](concurrency.md#Напишите-простейший-многопоточный-ограниченный-буфер-с-использованием-reentrantlock)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Реактивное программирование
* [Что такое реактивное программирование и чем оно отличается от процедурного программирования?](reactive.md#что-такое-реактивное-программирование-и-чем-оно-отличается-от-процедурного-программирования)
* [Объясните концепцию потоков данных в реактивном программировании](reactive.md#объясните-концепцию-потоков-данных-в-реактивном-программировании)
* [Что такое паттерн Observer и как он лежит в основе реактивного программирования?](reactive.md#что-такое-паттерн-observer-и-как-он-лежит-в-основе-реактивного-программирования)
* [Опишите роль Observable и Observer в реактивном программировании](reactive.md#опишите-роль-observable-и-observer-в-реактивном-программировании)
* [Что такое backpressure в контексте реактивного программирования?](reactive.md#что-такое-backpressure-в-контексте-реактивного-программирования)
* [Объясните разницу между Hot и Cold Observable](reactive.md#объясните-разницу-между-hot-и-cold-observable)
* [Какова роль Подписки в реактивном программировании?](reactive.md#какова-роль-подписки-в-реактивном-программировании)
* [Как отписаться от потока для предотвращения утечки памяти?](reactive.md#как-отписаться-от-потока-для-предотвращения-утечки-памяти)
* [Какие есть операторы в Project Reactor и для чего они используются?](reactive.md#какие-есть-операторы-в-project-reactor-и-для-чего-они-используются)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Servlets, JSP, JSTL
+ [Что такое _«сервлет»_?](servlets.md#Что-такое-сервлет)
+ [В чем заключаются преимущества технологии сервлетов над CGI (Common Gateway Interface)?](servlets.md#В-чем-заключаются-преимущества-технологии-сервлетов-над-cgi-common-gateway-interface)
+ [Какова структура веб-проекта?](servlets.md#Какова-структура-веб-проекта)
+ [Что такое _«контейнер сервлетов»_?](servlets.md#Что-такое-контейнер-сервлетов)
+ [Зачем нужны сервера приложений, если есть контейнеры сервлетов?](servlets.md#Зачем-нужны-сервера-приложений-если-есть-контейнеры-сервлетов)
+ [Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?](servlets.md#Как-контейнер-сервлетов-управляет-жизненным-циклом-сервлета-когда-и-какие-методы-вызываются)
+ [Что такое _«дескриптор развертывания»_?](servlets.md#Что-такое-дескриптор-развертывания)
+ [Какие действия необходимо проделать при создании сервлетов?](servlets.md#Какие-действия-необходимо-проделать-при-создании-сервлетов)
+ [В каком случае требуется переопределять метод `service()`?](servlets.md#В-каком-случае-требуется-переопределять-метод-service)
+ [Есть ли смысл определять для сервлета конструктор? Каким образом лучше инициализировать данные?](servlets.md#Есть-ли-смысл-определять-для-сервлета-конструктор-Каким-образом-лучше-инициализировать-данные)
+ [Почему необходимо переопределить только `init()` метод без аргументов?](servlets.md#Почему-необходимо-переопределить-только-init-метод-без-аргументов)
+ [Какие наиболее распространенные задачи выполняются в контейнере сервлетов?](servlets.md#Какие-наиболее-распространенные-задачи-выполняются-в-контейнере-сервлетов)
+ [Что вы знаете о _сервлетных фильтрах_?](servlets.md#Что-вы-знаете-о-сервлетных-фильтрах)
+ [Зачем в сервлетах используются различные _listener_?](servlets.md#Зачем-в-сервлетах-используются-различные-listener)
+ [Когда стоит использовать фильтры сервлетов, а когда слушателей?](servlets.md#Когда-стоит-использовать-фильтры-сервлетов-а-когда-слушателей)
+ [Как реализовать запуск сервлета одновременно с запуском приложения?](servlets.md#Как-реализовать-запуск-сервлета-одновременно-с-запуском-приложения)
+ [Как обработать в приложении исключения, выброшенные другим сервлетом?](servlets.md#Как-обработать-в-приложении-исключения-выброшенные-другим-сервлетом)
+ [Что представляет собой `ServletConfig`?](servlets.md#Что-представляет-собой-servletconfig)
+ [Что представляет собой `ServletContext`?](servlets.md#Что-представляет-собой-servletcontext)
+ [В чем отличия `ServletContext` и `ServletConfig`?](servlets.md#В-чем-отличия-servletcontext-и-servletconfig)
+ [Для чего нужен интерфейс `ServletResponse`?](servlets.md#Для-чего-нужен-интерфейс-servletresponse)
+ [Для чего нужен интерфейс `ServletRequest`?](servlets.md#Для-чего-нужен-интерфейс-servletrequest)
+ [Что такое `Request Dispatcher`?](servlets.md#Что-такое-request-dispatcher)
+ [Как из одного сервлета вызвать другой сервлет?](servlets.md#Как-из-одного-сервлета-вызвать-другой-сервлет)
+ [Чем отличается `sendRedirect()` от `forward()`?](servlets.md#Чем-отличается-sendredirect-от-forward)
+ [Для чего используются атрибуты сервлетов и как происходит работа с ними?](servlets.md#Для-чего-используются-атрибуты-сервлетов-и-как-происходит-работа-с-ними)
+ [Каким образом можно допустить в сервлете deadlock?](servlets.md#Каким-образом-можно-допустить-в-сервлете-deadlock)
+ [Как получить реальное расположение сервлета на сервере?](servlets.md#Как-получить-реальное-расположение-сервлета-на-сервере)
+ [Как получить информацию о сервере из сервлета?](servlets.md#Как-получить-информацию-о-сервере-из-сервлета)
+ [Как получить IP адрес клиента на сервере?](servlets.md#Как-получить-ip-адрес-клиента-на-сервере)
+ [Какие классы-обертки для сервлетов вы знаете?](servlets.md#Какие-классы-обертки-для-сервлетов-вы-знаете)
+ [В чем отличия `GenericServlet` и `HttpServlet`?](servlets.md#В-чем-отличия-genericservlet-и-httpservlet)
+ [Почему `HttpServlet` класс объявлен как абстрактный?](servlets.md#Почему-httpservlet-класс-объявлен-как-абстрактный)
+ [Какие основные методы присутствуют в классе `HttpServlet`?](servlets.md#Какие-основные-методы-присутствуют-в-классе-httpservlet)
+ [Стоит ли волноваться о многопоточной безопасности работая с сервлетами?](servlets.md#Стоит-ли-волноваться-о-многопоточной-безопасности-работая-с-сервлетами)
+ [Какой метод HTTP не является неизменяемым?](servlets.md#Какой-метод-http-не-является-неизменяемым)
+ [Какие есть методы отправки данных с клиента на сервер?](servlets.md#Какие-есть-методы-отправки-данных-с-клиента-на-сервер)
+ [В чем разница между методами `GET` и `POST`?](servlets.md#В-чем-разница-между-методами-get-и-post)
+ [В чем разница между `PrintWriter` и `ServletOutputStream`?](servlets.md#В-чем-разница-между-printwriter-и-servletoutputstream)
+ [Можно ли одновременно использовать в сервлете `PrintWriter` и `ServletOutputStream`?](servlets.md#Можно-ли-одновременно-использовать-в-сервлете-printwriter-и-servletoutputstream)
+ [Расскажите об интерфейсе `SingleThreadModel`.](servlets.md#Расскажите-об-интерфейсе-singlethreadmodel)
+ [Что означает _URL encoding_? Как это осуществить в Java?](servlets.md#Что-означает-url-encoding-Как-это-осуществить-в-java)
+ [Какие различные методы управления сессией в сервлетах вы знаете?](servlets.md#Какие-различные-методы-управления-сессией-в-сервлетах-вы-знаете)
+ [Что такое _cookies_?](servlets.md#Что-такое-cookies)
+ [Какие методы для работы с cookies предусмотрены в сервлетах?](servlets.md#Какие-методы-для-работы-с-cookies-предусмотрены-в-сервлетах)
+ [Что такое _URL Rewriting_?](servlets.md#Что-такое-url-rewriting)
+ [Зачем нужны и чем отличаются методы `encodeURL()` и `encodeRedirectURL()`?](servlets.md#Зачем-нужны-и-чем-отличаются-методы-encodeurl-и-encoderedirecturl)
+ [Что такое _«сессия»_?](servlets.md#Что-такое-сессия)
+ [Как уведомить объект в сессии, что сессия недействительна или закончилась?](servlets.md#Как-уведомить-объект-в-сессии-что-сессия-недействительна-или-закончилась)
+ [Какой существует эффективный способ удостоверится, что все сервлеты доступны только для пользователя с верной сессией?](servlets.md#Какой-существует-эффективный-способ-удостоверится-что-все-сервлеты-доступны-только-для-пользователя-с-верной-сессией)
+ [Как мы можем обеспечить _transport layer security_ для нашего веб приложения?](servlets.md#Как-мы-можем-обеспечить-transport-layer-security-для-нашего-веб-приложения)
+ [Как организовать подключение к базе данных, обеспечить журналирование в сервлете?](servlets.md#Как-организовать-подключение-к-базе-данных-обеспечить-журналирование-в-сервлете)
+ [Какие основные особенности появились в спецификации _Servlet 3_?](servlets.md#Какие-основные-особенности-появились-в-спецификации-servlet-3)
+ [Какие способы аутентификации доступны сервлету?](servlets.md#Какие-способы-аутентификации-доступны-сервлету)
+ [Что такое _Java Server Pages (JSP)_?](servlets.md#Что-такое-java-server-pages-jsp)
+ [Зачем нужен JSP?](servlets.md#Зачем-нужен-jsp)
+ [Опишите, как обрабатываются JSP страницы, начиная от запроса к серверу, заканчивая ответом пользователю.](servlets.md#Опишите-как-обрабатываются-jsp-страницы-начиная-от-запроса-к-серверу-заканчивая-ответом-пользователю)
+ [Расскажите об этапах (фазах) жизненного цикла JSP.](servlets.md#Расскажите-об-этапах-фазах-жизненного-цикла-jsp)
+ [Расскажите о методах жизненного цикла JSP.](servlets.md#Расскажите-о-методах-жизненного-цикла-jsp)
+ [Какие методы жизненного цикла JSP могут быть переопределены?](servlets.md#Какие-методы-жизненного-цикла-jsp-могут-быть-переопределены)
+ [Как можно предотвратить прямой доступ к JSP странице из браузера?](servlets.md#Как-можно-предотвратить-прямой-доступ-к-jsp-странице-из-браузера)
+ [Какая разница между _динамическим_ и _статическим_ содержимым JSP?](servlets.md#Какая-разница-между-динамическим-и-статическим-содержимым-jsp)
+ [Как закомментировать код в JSP?](servlets.md#Как-закомментировать-код-в-jsp)
+ [Какие существуют основные типы тегов JSP?](servlets.md#Какие-существуют-основные-типы-тегов-jsp)
+ [Что вы знаете о действиях JSP (_Action tag_ и _JSP Action Elements_).](servlets.md#Что-вы-знаете-о-действиях-jsp-action-tag-и-jsp-action-elements)
+ [Взаимодействие _JSP - сервлет - JSP_.](servlets.md#Взаимодействие-jsp---сервлет---jsp)
+ [Какие области видимости переменных существуют в JSP?](servlets.md#Какие-области-видимости-переменных-существуют-в-jsp)
+ [Какие неявные, внутренние объекты и методы есть на JSP странице?](servlets.md#Какие-неявные-внутренние-объекты-и-методы-есть-на-jsp-странице)
+ [Какие неявные объекты не доступны в обычной JSP странице?](servlets.md#Какие-неявные-объекты-не-доступны-в-обычной-jsp-странице)
+ [Что вы знаете о `PageContext` и какие преимущества его использования?](servlets.md#Что-вы-знаете-о-pagecontext-и-какие-преимущества-его-использования)
+ [Как сконфигурировать параметры инициализации для JSP?](servlets.md#Как-сконфигурировать-параметры-инициализации-для-jsp)
+ [Почему не рекомендуется использовать скриплеты (скриптовые элементы) в JSP?](servlets.md#Почему-не-рекомендуется-использовать-скриплеты-скриптовые-элементы-в-jsp)
+ [Можно ли определить класс внутри JSP страницы?](servlets.md#Можно-ли-определить-класс-внутри-jsp-страницы)
+ [Что вы знаете о Языке выражений JSP (JSP Expression Language EL)?](servlets.md#Что-вы-знаете-о-Языке-выражений-jsp-jsp-expression-language--el)
+ [Какие типы EL операторов вы знаете?](servlets.md#Какие-типы-el-операторов-вы-знаете)
+ [Назовите неявные, внутренние объекты JSP EL и их отличия от объектов JSP.](servlets.md#Назовите-неявные-внутренние-объекты-jsp-el-и-их-отличия-от-объектов-jsp)
+ [Как отключить возможность использования EL в JSP?](servlets.md#Как-отключить-возможность-использования-el-в-jsp)
+ [Как узнать тип HTTP метода используя JSP EL?](servlets.md#Как-узнать-тип-http-метода-используя-jsp-el)
+ [Что такое _JSTL (JSP Standard tag library)_?](servlets.md#Что-такое-jstl-jsp-standard-tag-library)
+ [Из каких групп тегов состоит библиотека _JSTL_?](servlets.md#Из-каких-групп-тегов-состоит-библиотека-jstl)
+ [Какая разница между `<c:set>` и `<jsp:useBean>`?](servlets.md#Какая-разница-между-cset-и-jspusebean)
+ [Чем отличается `<c:import>` от `<jsp:include>` и директивы `<%@include %>`?](servlets.md#Чем-отличается-cimport-от-jspinclude-и-директивы-include-)
+ [Как можно расширить функциональность JSP?](servlets.md#Как-можно-расширить-функциональность-jsp)
+ [Что вы знаете о написании пользовательских JSP тегов?](servlets.md#Что-вы-знаете-о-написании-пользовательских-jsp-тегов)
+ [Приведите пример использования собственных тегов.](servlets.md#Приведите-пример-использования-собственных-тегов)
+ [Как сделать перенос строки в HTML средствами JSP?](servlets.md#Как-сделать-перенос-строки-в-html-средствами-jsp)
+ [Почему не нужно конфигурировать стандартные JSP теги в `web.xml`?](servlets.md#Почему-не-нужно-конфигурировать-стандартные-jsp-теги-в-webxml)
+ [Как можно обработать ошибки JSP страниц?](servlets.md#Как-можно-обработать-ошибки-jsp-страниц)
+ [Как происходит обработка ошибок с помощью JSTL?](servlets.md#Как-происходит-обработка-ошибок-с-помощью-jstl)
+ [Как конфигурируется JSP в дескрипторе развертывания.](servlets.md#Как-конфигурируется-jsp-в-дескрипторе-развертывания)
+ [Можно ли использовать Javascript на JSP странице?](servlets.md#Можно-ли-использовать-javascript-на-jsp-странице)
+ [Всегда ли создается объект сессии на JSP странице, можно ли отключить его создание?](servlets.md#Всегда-ли-создается-объект-сессии-на-jsp-странице-можно-ли-отключить-его-создание)
+ [Какая разница между `JSPWriter` и сервлетным `PrintWriter`?](servlets.md#Какая-разница-между-jspwriter-и-сервлетным-printwriter)
+ [Опишите общие практические принципы работы с JSP.](servlets.md#Опишите-общие-практические-принципы-работы-с-jsp)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Базы данных
+ [Что такое _«база данных»_?](db.md#Что-такое-база-данных)
+ [Что такое _«система управления базами данных»_?](db.md#Что-такое-система-управления-базами-данных)
+ [Что такое _«реляционная модель данных»_?](db.md#Что-такое-реляционная-модель-данных)
+ [Дайте определение терминам _«простой»_, _«составной» (composite)_, _«потенциальный» (candidate)_ и _«альтернативный» (alternate)_ ключ.](db.md#Дайте-определение-терминам-простой-составной-composite-потенциальный-candidate-и-альтернативный-alternate-ключ)
+ [Что такое _«первичный ключ» (primary key)_? Каковы критерии его выбора?](db.md#Что-такое-первичный-ключ-primary-key-Каковы-критерии-его-выбора)
+ [Что такое _«внешний ключ» (foreign key)_?](db.md#Что-такое-внешний-ключ-foreign-key)
+ [Что такое _«нормализация»_?](db.md#Что-такое-нормализация)
+ [Какие существуют нормальные формы?](db.md#Какие-существуют-нормальные-формы)
+ [Что такое _«денормализация»_? Для чего она применяется?](db.md#Что-такое-денормализация-Для-чего-она-применяется)
+ [Какие существуют типы связей в базе данных? Приведите примеры.](db.md#Какие-существуют-типы-связей-в-базе-данных-Приведите-примеры)
+ [Что такое _«индексы»_? Для чего их используют? В чём заключаются их преимущества и недостатки?](db.md#Что-такое-индексы-Для-чего-их-используют-В-чём-заключаются-их-преимущества-и-недостатки)
+ [Какие типы индексов существуют?](#Какие-типы-индексов-существуют)
+ [В чем отличие между кластерными и некластерными индексами?](db.md#В-чем-отличие-между-кластерными-и-некластерными-индексами)
+ [Имеет ли смысл индексировать данные, имеющие небольшое количество возможных значений?](db.md#Имеет-ли-смысл-индексировать-данные-имеющие-небольшое-количество-возможных-значений)
+ [Когда полное сканирование набора данных выгоднее доступа по индексу?](db.md#Когда-полное-сканирование-набора-данных-выгоднее-доступа-по-индексу)
+ [Что такое _«транзакция»_?](db.md#Что-такое-транзакция)
+ [Назовите основные свойства транзакции.](db.md#Назовите-основные-свойства-транзакции)
+ [Какие существуют уровни изолированности транзакций?](db.md#Какие-существуют-уровни-изолированности-транзакций)
+ [Какие проблемы могут возникать при параллельном доступе с использованием транзакций?](db.md#Какие-проблемы-могут-возникать-при-параллельном-доступе-с-использованием-транзакций)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## SQL
+ [Что такое _«SQL»_?](sql.md#Что-такое-sql)
+ [Какие существуют операторы SQL?](sql.md#Какие-существуют-операторы-sql)
+ [Что означает `NULL` в SQL?](sql.md#Что-означает-null-в-sql)
+ [Что такое _«временная таблица»_? Для чего она используется?](sql.md#Что-такое-временная-таблица-Для-чего-она-используется)
+ [Что такое _«представление» (view)_ и для чего оно применяется?](sql.md#Что-такое-представление-view-и-для-чего-оно-применяется)
+ [Каков общий синтаксис оператора `SELECT`?](sql.md#Каков-общий-синтаксис-оператора-select)
+ [Что такое `JOIN`?](sql.md#Что-такое-join)
+ [Какие существуют типы `JOIN`?](sql.md#Какие-существуют-типы-join)
+ [Что лучше использовать `JOIN` или подзапросы?](sql.md#Что-лучше-использовать-join-или-подзапросы)
+ [Для чего используется оператор `HAVING`?](sql.md#Для-чего-используется-оператор-having)
+ [В чем различие между операторами `HAVING` и `WHERE`?](sql.md#В-чем-различие-между-операторами-having-и-where)
+ [Для чего используется оператор `ORDER BY`?](sql.md#Для-чего-используется-оператор-order-by)
+ [Для чего используется оператор `GROUP BY`?](sql.md#Для-чего-используется-оператор-group-by)
+ [Как `GROUP BY` обрабатывает значение `NULL`?](sql.md#Как-group-by-обрабатывает-значение-null)
+ [В чем разница между операторами `GROUP BY` и `DISTINCT`?](sql.md#В-чем-разница-между-операторами-group-by-и-distinct)
+ [Перечислите основные агрегатные функции.](sql.md#Перечислите-основные-агрегатные-функции)
+ [В чем разница между `COUNT(*)` и `COUNT({column})`?](sql.md#В-чем-разница-между-count-и-countcolumn)
+ [Что делает оператор `EXISTS`?](sql.md#Что-делает-оператор-exists)
+ [Для чего используются операторы `IN`, `BETWEEN`, `LIKE`?](sql.md#Для-чего-используются-операторы-in-between-like)
+ [Для чего применяется ключевое слово `UNION`?](sql.md#Для-чего-применяется-ключевое-слово-union)
+ [Какие ограничения на целостность данных существуют в SQL?](sql.md#Какие-ограничения-на-целостность-данных-существуют-в-sql)
+ [Какие отличия между ограничениями `PRIMARY` и `UNIQUE`?](sql.md#Какие-отличия-между-ограничениями-primary-и-unique)
+ [Может ли значение в столбце, на который наложено ограничение `FOREIGN KEY`, равняться `NULL`?](sql.md#Может-ли-значение-в-столбце-на-который-наложено-ограничение-foreign-key-равняться-null)
+ [Как создать индекс?](sql.md#Как-создать-индекс)
+ [Что делает оператор `MERGE`?](sql.md#Что-делает-оператор-merge)
+ [В чем отличие между операторами `DELETE` и `TRUNCATE`?](sql.md#В-чем-отличие-между-операторами-delete-и-truncate)
+ [Что такое _«хранимая процедура»_?](sql.md#Что-такое-хранимая-процедура)
+ [Что такое _«триггер»_?](sql.md#Что-такое-триггер)
+ [Что такое _«курсор»_?](sql.md#Что-такое-курсор)
+ [Опишите разницу типов данных `DATETIME` и `TIMESTAMP`.](sql.md#Опишите-разницу-типов-данных-datetime-и-timestamp)
+ [Для каких числовых типов недопустимо использовать операции сложения/вычитания?](sql.md#Для-каких-числовых-типов-недопустимо-использовать-операции-сложениявычитания)
+ [Какое назначение у операторов `PIVOT` и `UNPIVOT` в Transact-SQL?](sql.md#Какое-назначение-у-операторов-pivot-и-unpivot-в-transact-sql)
+ [Расскажите об основных функциях ранжирования в Transact-SQL.](sql.md#Расскажите-об-основных-функциях-ранжирования-в-transact-sql)
+ [Для чего используются операторы `INTERSECT`, `EXCEPT` в Transact-SQL?](sql.md#Для-чего-используются-операторы-intersect-except-в-transact-sql)
+ [Напишите запрос...](sql.md#Напишите-запрос)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## JDBC
+ [Что такое _JDBC_?](jdbc.md#Что-такое-jdbc)
+ [В чем заключаются преимущества использования JDBC?](jdbc.md#В-чем-заключаются-преимущества-использования-jdbc)
+ [Что из себя представляет JDBC URL?](jdbc.md#Что-из-себя-представляет-jdbc-url)
+ [Из каких частей стоит JDBC?](jdbc.md#Из-каких-частей-стоит-jdbc)
+ [Перечислите основные типы данных используемые в JDBC. Как они связаны с типами Java?](jdbc.md#Перечислите-основные-классы-и-интерфейсы-jdbc)
+ [Опишите основные этапы работы с базой данных с использованием JDBC.](jdbc.md#Опишите-основные-этапы-работы-с-базой-данных-при-использовании-jdbc)
+ [Как зарегистрировать драйвер JDBC?](jdbc.md#Как-зарегистрировать-драйвер-jdbc)
+ [Как установить соединение с базой данных?](jdbc.md#Как-установить-соединение-с-базой-данных)
+ [Какие уровни изоляции транзакций поддерживаются в JDBC?](jdbc.md#Какие-уровни-изоляции-транзакций-поддерживаются-в-jdbc)
+ [При помощи чего формируются запросы к базе данных?](jdbc.md#При-помощи-чего-формируются-запросы-к-базе-данных)
+ [Чем отличается Statement от PreparedStatement?](jdbc.md#Чем-отличается-statement-от-preparedstatement)
+ [Как осуществляется запрос к базе данных и обработка результатов?](jdbc.md#Как-осуществляется-запрос-к-базе-данных-и-обработка-результатов)
+ [Как вызвать хранимую процедуру?](jdbc.md#Как-вызвать-хранимую-процедуру)
+ [Как закрыть соединение с базой данных?](jdbc.md#Как-закрыть-соединение-с-базой-данных)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Тестирование
+ [Что такое _«модульное тестирование»_?](test.md#Что-такое-модульное-тестирование)
+ [Что такое _«интеграционное тестирование»_?](test.md#Что-такое-интеграционное-тестирование)
+ [Чем интеграционное тестирование отличается от модульного?](test.md#Чем-интеграционное-тестирование-отличается-от-модульного)
+ [Какие существуют виды тестовых объектов?](test.md#Какие-существуют-виды-тестовых-объектов)
+ [Чем _stub_ отличается от _mock_?](test.md#Чем-stub-отличается-от-mock)
+ [Что такое _«фикстуры»_?](test.md#Что-такое-фикстуры)
+ [Какие аннотации фикстур существуют в JUnit?](test.md#Какие-аннотации-фикстур-существуют-в-junit)
+ [Для чего в JUnit используется аннотация `@Ignore`?](test.md#Для-чего-в-junit-используется-аннотация-ignore)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Журналирование
+ [Какие существуют типы логов?](log.md#Какие-существуют-типы-логов)
+ [Из каких частей состоит система журналирования log4j?](log.md#Из-каких-частей-состоит-система-журналирования-log4j)
+ [Что такое _Logger_ в log4j?](log.md#Что-такое-logger-в-log4j)
+ [Что такое _Appender_ в log4j?](log.md#Что-такое-appender-в-log4j)
+ [Что такое _Layout_ в log4j?](log.md#Что-такое-layout-в-log4j)
+ [Перечислите уровни журналирования в log4j? Назовите порядок их приоритетности.](log.md#Перечислите-уровни-журналирования-в-log4j-Назовите-порядок-их-приоритетности)
+ [Какие существуют способы конфигурирования log4j?](log.md#Какие-существуют-способы-конфигурирования-log4j)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## UML
+ [Что такое _UML_?](uml.md#Что-такое-uml)
+ [Что такое _«диаграмма»_, _«нотация»_ и _«метамодель»_ в UML?](uml.md#Что-такое-диаграмма-нотация-и-метамодель-в-uml)
+ [Какие существуют типы диаграмм?](uml.md#Какие-существуют-типы-диаграмм)
+ [Какие виды отношений существуют в структурной диаграмме классов?](uml.md#Какие-виды-отношений-существуют-в-структурной-диаграмме-классов)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## XML
+ [Что такое _XML_?](xml.md#Что-такое-xml)
+ [Что такое _DTD_?](xml.md#Что-такое-dtd)
+ [Чем _well-formed XML_ отличается от _valid XML_?](xml.md#Чем-well-formed-xml-отличается-от-valid-xml)
+ [Что такое «_пространство имен_» в XML?](xml.md#Что-такое-пространство-имен-в-xml)
+ [Что такое XSD? В чём его преимущества перед XML DTD?](xml.md#Что-такое-xsd-В-чём-его-преимущества-перед-xml-dtd)
+ [Какие типы существуют в XSD?](xml.md#Какие-типы-существуют-в-xsd)
+ [Какие вы знаете методы чтения XML? Опишите сильные и слабые стороны каждого метода.](xml.md#Какие-вы-знаете-методы-чтения-xml-Опишите-сильные-и-слабые-стороны-каждого-метода)
+ [Когда следует использовать _DOM_, а когда _SAX_, _StAX_ анализаторы?](xml.md#Когда-следует-использовать-dom-а-когда-sax-stax-анализаторы)?
+ [Какие вы знаете способы записи XML?](xml.md#Какие-вы-знаете-способы-записи-xml)
+ [Что такое _JAXP_?](xml.md#Что-такое-jaxp)
+ [Что такое _XSLT_?](xml.md#Что-такое-xslt)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Шаблоны проектирования
+ [Что такое _«шаблон проектирования»_?](patterns.md#Что-такое-шаблон-проектирования)
+ [Назовите основные характеристики шаблонов.](patterns.md#Назовите-основные-характеристики-шаблонов)
+ [Типы шаблонов проектирования.](patterns.md#Типы-шаблонов-проектирования)
+ [Приведите примеры основных шаблонов проектирования.](patterns.md#Приведите-примеры-основных-шаблонов-проектирования)
+ [Приведите примеры порождающих шаблонов проектирования.](patterns.md#Приведите-примеры-порождающих-шаблонов-проектирования)
+ [Приведите примеры структурных шаблонов проектирования.](patterns.md#Приведите-примеры-структурных-шаблонов-проектирования)
+ [Приведите примеры поведенческих шаблонов проектирования.](patterns.md#Приведите-примеры-поведенческих-шаблонов-проектирования)
+ [Что такое _«антипаттерн»_? Какие антипаттерны вы знаете?](patterns.md#Что-такое-антипаттерн-Какие-антипаттерны-вы-знаете)
+ [Что такое _Dependency Injection_?](patterns.md#Что-такое-dependency-injection)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Основы HTML
+ [Что такое _«HTML»_?](html.md#Что-такое-html)
+ [Что такое _«XHTML»_?](html.md#Что-такое-xhtml)
+ [Что такое `DOCTYPE` и зачем он нужен?](html.md#Что-такое-doctype-и-зачем-он-нужен)
+ [Для чего предназначен тег `<head>`?](html.md#Для-чего-предназначен-тег-head)
+ [Чем отличается `<div>` от `<span>`?](html.md#Чем-отличается-div-от-span)
+ [Как обозначаются комментарии в HTML?](html.md#Как-обозначаются-комментарии-в-html)
+ [Каким образом задаётся адрес документа, на который следует перейти?](html.md#Каким-образом-задаётся-адрес-документа-на-который-следует-перейти)
+ [Как сделать ссылку на адрес электронной почты?](html.md#Как-сделать-ссылку-на-адрес-электронной-почты)
+ [Для чего предназначен тег `<em>`?](html.md#Для-чего-предназначен-тег-em)
+ [Для чего предназначены теги `<ol>`, `<ul>`, `<li>`?](html.md#Для-чего-предназначены-теги-ol-ul-li)
+ [Для чего предназначены теги `<dl>`, `<dt>`, `<dd>`?](html.md#Для-чего-предназначены-теги-dl-dt-dd)
+ [Для чего предназначены теги `<tr>`, `<th>`, `<td>`?](html.md#Для-чего-предназначены-теги-tr-th-td)
+ [Обязательно ли писать атрибут `alt` в теге `<img>`?](html.md#Обязательно-ли-писать-атрибут-alt-в-теге-img)
+ [В каком регистре лучше писать HTML-код?](html.md#В-каком-регистре-лучше-писать-html-код)
+ [Что такое «мнемоника (entity)»?](html.md#Что-такое-мнемоника-entity)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Основы CSS
+ [Что такое _«CSS»_?](css.md#Что-такое-css)
+ [Как в CSS обозначаются комментарии?](css.md#Как-в-css-обозначаются-комментарии)
+ [Что такое _«селектор»_?](css.md#Что-такое-селектор)
+ [Перечислите основные виды селекторов.](css.md#Перечислите-основные-виды-селекторов)
+ [Что такое псевдокласс?](css.md#Что-такое-псевдокласс)
+ [Какие существуют селекторы аттрибутов?](css.md#Какие-существуют-селекторы-аттрибутов)
+ [В чем разница между `#my` и `.my`?](css.md#В-чем-разница-между-my-и-my)
+ [В чем разница между `margin` и `padding`?](css.md#В-чем-разница-между-margin-и-padding)
+ [В чем заключается разница между значениями `0` и `auto` в свойстве `margin`?](css.md#В-чем-заключается-разница-между-значениями-0-и-auto-в-свойстве-margin)
+ [Какое свойство задает цвет фона?](css.md#Какое-свойство-задает-цвет-фона)
+ [Как убрать подчеркивание для всех ссылок на странице?](css.md#Как-убрать-подчеркивание-для-всех-ссылок-на-странице)
+ [Для чего используется свойство `clear`?](css.md#Для-чего-используется-свойство-clear)
+ [Как сделать жирным текст во всех элементах `<p>`?](css.md#Как-сделать-жирным-текст-во-всех-элементах-p)
+ [Как задать красный цвет для всех элементов, имеющих класс `red`?](css.md#Как-задать-красный-цвет-для-всех-элементов-имеющих-класс-red)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Основы WEB
+ [Что такое _WWW_?](web.md#Что-такое-www)
+ [Что такое _W3C_?](web.md#Что-такое-w3c)
+ [Какие существуют уровни модели _OSI_?](web.md#Какие-существуют-уровни-модели-osi)
+ [Что такое _TCP/IP_?](web.md#Что-такое-tcpip)
+ [Что такое _UDP_?](web.md#Что-такое-udp)
+ [Чем отличаются _TCP_ и _UDP_?](web.md#Чем-отличаются-tcp-и-udp)
+ [Что такое протокол передачи данных? Какие протоколы вы знаете?](web.md#Что-такое-протокол-передачи-данных-Какие-протоколы-вы-знаете)
+ [Что такое _HTTP_ и _HTTPS_? Чем они отличаются?](web.md#Что-такое-http-и-https-Чем-они-отличаются)
+ [Что такое _FTP_?](web.md#Что-такое-ftp)
+ [Чем отличаются методы _GET_ и _POST_?](web.md#Чем-отличаются-методы-get-и-post)
+ [Что такое _MIME тип_?](web.md#Что-такое-mime-тип)
+ [Что такое _Web server_?](web.md#Что-такое-web-server)
+ [Что такое _Web application_?](web.md#Что-такое-web-application)
+ [Что такое _Application server_?](web.md#Что-такое-application-server)
+ [Чем отличаются _Web server_ и _Application server_?](web.md#Чем-отличаются-web-server-и-application-server)
+ [Что такое _AJAX_? Как принципиально устроена эта технология?](web.md#Что-такое-ajax-Как-принципиально-устроена-эта-технология)
+ [Что такое _WebSocket_?](web.md#Что-такое-websocket)
+ [Что такое _JSON_?](web.md#Что-такое-json)
+ [Что такое _JSON схема_?](web.md#Что-такое-json-схема)
+ [Что такое _cookies_?](web.md#Что-такое-cookies)
+ [Что такое _«сессия»_?](web.md#Что-такое-сессия)
+ [Что такое _«авторизация»_ и _«аутентификация»_? Чем они отличаются?](web.md#Что-такое-авторизация-и-аутентификация-Чем-они-отличаются)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Apache Kafka
* [Что такое Apache Kafka?](kafka.md#что-такое-apache-kafka)
* [Основные компоненты Kafka](kafka.md#основные-компоненты-kafka)
**Архитектура компонентов**
* Topic
* [Архитектура топика](kafka.md#архитектура-топика)
* [Настройки топика Kafka](kafka.md#настройки-топика-kafka)
* Broker
* [Архитектура брокера](kafka.md#архитектура-брокера)
* [Настройки брокера Kafka](kafka.md#настройки-брокера-kafka)
* Producer
* [Архитектура продюсера](kafka.md#архитектура-продюсера)
* [Настройки продюсера](kafka.md#настройки-продюсера)
* [Пример конфигурации Kafka Producer](kafka.md#пример-конфигурации-kafka-producer)
* Consumer
* [Архитектура консюмера](kafka.md#архитектура-консюмера)
* [Настройки консюмера](kafka.md#настройки-консюмера)
* [Пример конфигурации Kafka Consumer](kafka.md#пример-конфигурации-kafka-consumer)
**Kafka API**
* [Основные API Kafka](kafka.md#основные-api-kafka)
* [Какова роль Producer API?](kafka.md#какова-роль-producer-api)
* [Какова роль Consumer API?](kafka.md#какова-роль-consumer-api)
* [Какова роль Connector API?](kafka.md#какова-роль-connector-api)
* [Какова роль Streams API?](kafka.md#какова-роль-streams-api)
* [Какова роль Transactions API?](kafka.md#какова-роль-transactions-api)
* [Какова роль Quota API?](kafka.md#какова-роль-quota-api)
* [Какова роль AdminClient API?](kafka.md#какова-роль-AdminClient-api)
**Kafka Consumer**
* [Для чего нужен координатор группы?](kafka.md#для-чего-нужен-координатор-группы)
* [Для чего нужен Consumer heartbeat thread?](kafka.md#для-чего-нужен-consumer-heartbeat-thread)
* [Как Kafka обрабатывает сообщения?](kafka.md#как-kafka-обрабатывает-сообщения)
* [Как Kafka обрабатывает задержку консюмера?](kafka.md#как-kafka-обрабатывает-задержку-консюмера)
* [Для чего нужны методы subscribe() и poll()?](kafka.md#для-чего-нужны-методы-subscribe-и-poll)
* [Для чего нужен метод position()?](kafka.md#для-чего-нужен-метод-position)
* [Для чего нужны методы commitSync() и commitAsync()?](kafka.md#для-чего-нужны-методы-commitsync-и-commitasync)
**Другие вопросы**
* [Для чего нужен идемпотентный продюсер?](kafka.md#для-чего-нужен-идемпотентный-продюсер)
* [Для чего нужен интерфейс Partitioner?](kafka.md#для-чего-нужен-интерфейс-partitioner)
* [Для чего нужен Broker log cleaner thread?](kafka.md#для-чего-нужен-broker-log-cleaner-thread)
* [Для чего нужен Kafka Mirror Maker?](kafka.md#для-чего-нужен-kafka-mirror-maker)
* [Для чего нужна Schema Registry?](kafka.md#для-чего-нужна-schema-registry)
* [Для чего нужен Streams DSL?](kafka.md#для-чего-нужен-streams-dsl)
* [Как Kafka обеспечивает версионирование сообщений?](kafka.md#как-kafka-обеспечивает-версионирование-сообщений)
* [Как потребители получают сообщения от брокера?](kafka.md#как-потребители-получают-сообщения-от-брокера)
**Сравнение с другими компонентами и системами**
* [В чем разница между Kafka Consumer и Kafka Stream?](kafka.md#в-чем-разница-между-kafka-consumer-и-kafka-stream)
* [В чем разница между Kafka Streams и Apache Flink?](kafka.md#в-чем-разница-между-kafka-streams-и-apache-flink)
* [В чем разница между Kafka и Flume?](kafka.md#в-чем-разница-между-kafka-и-flume)
* [В чем разница между Kafka и RabbitMQ?](kafka.md#в-чем-разница-между-kafka-и-rabbitmq)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Дополнительные материалы
+ [4 толковых канала на Youtube про технические собеседования](https://habr.com/ru/post/454264/)
+ [A list of fancy questions I've been asked during the interviews I had](https://github.com/d1mnewz/interviews)
+ [Job interview in English: как готовиться и что отвечать](https://dou.ua/lenta/articles/interview-in-english/)
+ [Senior Engineer в поисках работы. О задачах на технических собеседованиях и теоретических вопросах](https://habr.com/ru/post/442442/)
+ [What to ask an interviewer during a tech interview](https://hackernoon.com/what-to-ask-an-interviewer-during-a-tech-interview-865a293e548c)
+ [Spring Boot Interview Questions](https://www.baeldung.com/spring-boot-interview-questions)
+ [Top Spring Framework Interview Questions](https://www.baeldung.com/spring-interview-questions)
+ [Spring Interview Questions](https://www.interviewbit.com/spring-interview-questions/)
+ [Hibernate Interview Questions](https://www.adaface.com/blog/hibernate-interview-questions/)
+ [Hibernate Interview Questions](https://www.adaface.com/blog/hibernate-interview-questions/)
+ [Java Interview Questions](https://labex.io/interview-questions/java)
[к оглавлению](#Вопросы-для-собеседования-на-java-developer)
## Источники
+ [Вопросы на собеседование Junior Java Developer](https://jsehelper.blogspot.ru)