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