1
1
Fork 0

First release

This commit is contained in:
enhorse 2017-05-07 09:05:47 +05:00
commit 37716acc5d
34 changed files with 9649 additions and 0 deletions

10
.gitignore vendored Normal file
View File

@ -0,0 +1,10 @@
# IntelliJ
*.iml
out/
.idea/
# System specific
.DS_Store
# Maven
target/

730
README.md Normal file
View File

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

BIN
con4md.jar Normal file

Binary file not shown.

1117
concurrency.md Normal file

File diff suppressed because it is too large Load Diff

1234
core.md Normal file

File diff suppressed because it is too large Load Diff

153
css.md Normal file
View File

@ -0,0 +1,153 @@
[Вопросы для собеседования на Java Junior](README.md)
#Основы CSS
+ [Что такое _«CSS»_?](#Что-такое-css)
+ [Как в CSS обозначаются комментарии?](#Как-в-css-обозначаются-комментарии)
+ [Что такое _«селектор»_?](#Что-такое-селектор)
+ [Перечислите основные виды селекторов.](#Перечислите-основные-виды-селекторов)
+ [Что такое псевдокласс?](#Что-такое-псевдокласс)
+ [Какие существуют селекторы аттрибутов?](#Какие-существуют-селекторы-аттрибутов)
+ [В чем разница между `#my` и `.my`?](#В-чем-разница-между-my-и-my)
+ [В чем разница между `margin` и `padding`?](#В-чем-разница-между-margin-и-padding)
+ [В чем заключается разница между значениями `0` и `auto` в свойстве `margin`?](#В-чем-заключается-разница-между-значениями-0-и-auto-в-свойстве-margin)
+ [Какое свойство задает цвет фона?](#Какое-свойство-задает-цвет-фона)
+ [Как убрать подчеркивание для всех ссылок на странице?](#Как-убрать-подчеркивание-для-всех-ссылок-на-странице)
+ [Для чего используется свойство `clear`?](#Для-чего-используется-свойство-clear)
+ [Как сделать жирным текст во всех элементах `<p>`?](#Как-сделать-жирным-текст-во-всех-элементах-p)
+ [Как задать красный цвет для всех элементов, имеющих класс `red`?](#Как-задать-красный-цвет-для-всех-элементов-имеющих-класс-red)
##Что такое _«CSS»_?
__CSS, Cascading Style Sheets (каскадные таблицы стилей)__ - формальный язык описания внешнего вида документа, написанного с использованием языка разметки, который применяется к элементам web-страницы для управления их видом и положением.
Основной целью разработки CSS являлось разделение описания логической структуры web-страницы, которое производится с помощью HTML или других языков разметки от описания внешнего вида этой web-страницы, которое производится с помощью CSS.
[к оглавлению](#Основы-css)
##Как в CSS обозначаются комментарии?
Чтобы пометить, что текст является комментарием, применяют конструкцию `/* ... */`
[к оглавлению](#Основы-css)
##Что такое селектор»_?
__Селектор__ это правило, на основании которого осуществляется выбор элементов в HTML документе для того, чтобы применить к ним определённые стили.
```css
p {
text-align: center;
font-size: 20px;
}
/* p это селектор, text-align и font-size это свойства, а center и 20px значения. */
```
[к оглавлению](#Основы-css)
##Перечислите основные виды селекторов.
+ __селектор `*`__ - выбор всех элементов;
+ __селектор элемента__ - выбор всех элементов в HTML документе, имеющих указанный тег (например: `div`);
+ __селектор класса__ - выбор всех элементов в HTML документе, имеющих указанный класс (например: `.center`);
+ __селектор идентификатора__ - выбор элемента в HTML документе, имеющего указанный идентификатор (например: `#footer`);
+ __селекторы псевдоклассов__ - выбор всех элементов в HTML документе, имеющих указанный псевдокласс (например: `p:first-of-type`);
+ __селекторы атрибутов__ - выбор элементов в зависимости от указанного атрибута элемента или его значения (например: `[href*="youtube"]`).
[к оглавлению](#Основы-css)
##Что такое псевдокласс?
Псевдокласс определяет динамическое состояние элементов, которое изменяется из-за действий пользователя, или же соответствует текущему положению в дереве документа. В отличие от настоящего класса, в явном виде псеводкласс в HTML не указывается, а в CSS указывается через `:` непосредственно после селектора.
Наиболее известные псевдоклассы:
+ `:link` применяется к непосещенным ссылкам;
+ `:visited` применяется к посещенным ссылкам;
+ `:hover` применяется, когда курсор мыши находится в пределах элемента, но не активирует его;
+ `:active` применяется при активации элемента;
+ `:focus` применяется к элементу при получении им фокуса;
+ `:first-child` применяется к первому дочернему элементу селектора, который расположен в дереве элементов документа.
```css
a.snowman:link {
color: blue;
}
a.snowman:visited {
color: purple;
}
a.snowman:active {
color: red;
}
a.snowman:hover {
text-decoration: none;
color: blue;
background-color: yellow;
}
```
[к оглавлению](#Основы-css)
##Какие существуют селекторы аттрибутов?
+ __`[атрибут]`__ - все элементы, имеющие указанный `атрибут`;
+ __`[атрибут=значение]`__ - все элементы, имеющие `атрибут`, значение которого равно `"значение"`;
+ __`[атрибут^=занчение]`__ - все элементы, имеющие `атрибут`, значение которого начинается с `значение`;
+ __`[атрибут|=значение]`__ - все элементы, имеющие `атрибут`, значение которого равно `значение` или начинается с `значение` следующим образом `значение-*` (`значение` с обязательным дефисом, после которого идёт остальное содержимое значения);
+ __`[атрибут$=значение]`__ - все элементы, имеющие `атрибут`, значение которого заканчивается на `значение`;
+ __`[атрибут*=значение]`__ - все элементы, имеющие `атрибут`, значение которого содержит подстроку `значение`;
+ __`[атрибут~=значение]`__ - все элементы, имеющие `атрибут`, значение которого содержит `значение` как одно из значений через пробел.
[к оглавлению](#Основы-css)
##В чем разница между `#my` и `.my`?
`#my` — селектор идентификатора, а `.my` — селектор класса.
[к оглавлению](#Основы-css)
##В чем разница между `margin` и `padding`?
`margin` — внешний отступ, а `padding` — внутренний отступ.
[к оглавлению](#Основы-css)
##В чем заключается разница между значениями `0` и `auto` в свойстве `margin`?
В вертикальных полях — `auto` всегда означает `0`. В горизонтальных полях — `auto` означает `0` только тогда, когда свойство `width` также `auto`.
[к оглавлению](#Основы-css)
##Какое свойство задает цвет фона?
Цвет фона задает свойство `background-color`.
[к оглавлению](#Основы-css)
##Как убрать подчеркивание для всех ссылок на странице?
```css
a {
text-decoration: none;
}
```
[к оглавлению](#Основы-css)
##Для чего используется свойство `clear`?
`clear` устанавливает, с какой стороны элемента запрещено его обтекание другими элементами.
[к оглавлению](#Основы-css)
##Как сделать жирным текст во всех элементах `<p>`?
```css
p {
font-weight: bold;
}
```
[к оглавлению](#Основы-css)
##Как задать красный цвет для всех элементов, имеющих класс `red`?
```css
.red {
color: red;
}
```
[к оглавлению](#Основы-css)
#Источники
+ [myway-blog.ru](http://myway-blog.ru/interview-frontend-web-programmer/)
+ [htmlbook.ru](http://stepbystep.htmlbook.ru/?id=43)
+ [itchief.ru](https://itchief.ru/lessons/html-and-css/css-selectors)

273
db.md Normal file
View File

@ -0,0 +1,273 @@
[Вопросы для собеседования на Java Junior](README.md)
#Базы данных
+ [Что такое _«база данных»_?](#Что-такое-база-данных)
+ [Что такое _«система управления базами данных»_?](#Что-такое-система-управления-базами-данных)
+ [Что такое _«реляционная модель данных»_?](#Что-такое-реляционная-модель-данных)
+ [Дайте определение терминам _«простой»_, _«составной» (composite)_, _«потенциальный» (candidate)_ и _«альтернативный» (alternate)_ ключ.](#Дайте-определение-терминам-простой-составной-composite-потенциальный-candidate-и-альтернативный-alternate-ключ)
+ [Что такое _«первичный ключ» (primary key)_? Каковы критерии его выбора?](#Что-такое-первичный-ключ-primary-key-Каковы-критерии-его-выбора)
+ [Что такое _«внешний ключ» (foreign key)_?](#Что-такое-внешний-ключ-foreign-key)
+ [Что такое _«нормализация»_?](#Что-такое-нормализация)
+ [Какие существуют нормальные формы?](#Какие-существуют-нормальные-формы)
+ [Что такое _«денормализация»_? Для чего она применяется?](#Что-такое-денормализация-Для-чего-она-применяется)
+ [Какие существуют типы связей в базе данных? Приведите примеры.](#Какие-существуют-типы-связей-в-базе-данных-Приведите-примеры)
+ [Что такое _«индексы»_? Для чего их используют? В чём заключаются их преимущества и недостатки?](#Что-такое-индексы-Для-чего-их-используют-В-чём-заключаются-их-преимущества-и-недостатки)
+ [Какие типы индексов существуют?](#Какие-типы-индексов-существуют)
+ [В чем отличие между кластерными и некластерными индексами?](#В-чем-отличие-между-кластерными-и-некластерными-индексами)
+ [Имеет ли смысл индексировать данные, имеющие небольшое количество возможных значений?](#Имеет-ли-смысл-индексировать-данные-имеющие-небольшое-количество-возможных-значений)
+ [Когда полное сканирование набора данных выгоднее доступа по индексу?](#Когда-полное-сканирование-набора-данных-выгоднее-доступа-по-индексу)
+ [Что такое _«транзакция»_?](#Что-такое-транзакция)
+ [Назовите основные свойства транзакции.](#Назовите-основные-свойства-транзакции)
+ [Какие существуют уровни изолированности транзакций?](#Какие-существуют-уровни-изолированности-транзакций)
+ [Какие проблемы могут возникать при параллельном доступе с использованием транзакций?](#Какие-проблемы-могут-возникать-при-параллельном-доступе-с-использованием-транзакций)
##Что такое база данных»_?
__База данных__ — организованный и адаптированный для обработки вычислительной системой набор информации.
[к оглавлению](#Базы-данных)
##Что такое система управления базами данных»_?
__Система управления базами данных (СУБД)__ - набор средств общего или специального назначения, обеспечивающий создание, доступ к материалам и управление базой данных.
Основные функции СУБД:
+ управление данными
+ журнализация изменений данных
+ резервное копирование и восстановление данных;
+ поддержка языка определения данных и манипулирования ими.
[к оглавлению](#Базы-данных)
##Что такое реляционная модель данных»_?
__Реляционная модель данных__ — это логическая модель данных и прикладная теория построения реляционных баз данных.
Реляционная модель данных включает в себя следующие компоненты:
+ _Структурный аспект_ — данные представляют собой набор отношений.
+ _Аспект целостности_ — отношения отвечают определенным условиям целостности: уровня домена (типа данных), уровня отношения и уровня базы данных.
+ _Аспект обработки (манипулирования)_ — поддержка операторов манипулирования отношениями (реляционная алгебра, реляционное исчисление).
+ _Нормальная форма_ - свойство отношения в реляционной модели данных, характеризующее его с точки зрения избыточности и определённое как совокупность требований, которым должно удовлетворять отношение.
[к оглавлению](#Базы-данных)
##Дайте определение терминам _«простой»_, составной» (composite)_, _«потенциальный» (candidate)_ и альтернативный» (alternate)_ ключ.
__Простой ключ__ состоит из одного атрибута (поля). __Составной__ - из двух и более.
__Потенциальный ключ__ - простой или составной ключ, который уникально идентифицирует каждую запись набора данных. При этом потенциальный ключ должен обладать критерием неизбыточности: при удалении любого из полей набор полей перестает уникально идентифицировать запись.
Из множества всех потенциальных ключей набора данных выбирают первичный ключ, все остальные ключи называют __альтернативными__.
[к оглавлению](#Базы-данных)
##Что такое _«первичный ключ» (primary key)_? Каковы критерии его выбора?
__Первичный ключ (primary key)__ в реляционной модели данных один из _потенциальных ключей_ отношения, выбранный в качестве основного ключа (ключа по умолчанию).
Если в отношении имеется единственный потенциальный ключ, он является и первичным ключом. Если потенциальных ключей несколько, один из них выбирается в качестве первичного, а другие называют альтернативными»_.
В качестве первичного обычно выбирается тот из потенциальных ключей, который наиболее удобен. Поэтому в качестве первичного ключа, как правило, выбирают тот, который имеет наименьший размер (физического хранения) и/или включает наименьшее количество атрибутов. Другой критерий выбора первичного ключа — сохранение его уникальности со временем. Поэтому в качестве первичного ключа стараются выбирать такой потенциальный ключ, который с наибольшей вероятностью никогда не утратит уникальность.
[к оглавлению](#Базы-данных)
##Что такое _«внешний ключ» (foreign key)_?
__Внешний ключ (foreign key)__ — подмножество атрибутов некоторого отношения A, значения которых должны совпадать со значениями некоторого потенциального ключа некоторого отношения B.
[к оглавлению](#Базы-данных)
##Что такое _«нормализация»_?
_Нормализация_ - это процесс преобразования отношений базы данных к виду, отвечающему нормальным формам (пошаговый, обратимый процесс замены исходной схемы другой схемой, в которой наборы данных имеют более простую и логичную структуру).
Нормализация предназначена для приведения структуры базы данных к виду, обеспечивающему минимальную логическую избыточность, и не имеет целью уменьшение или увеличение производительности работы или же уменьшение или увеличение физического объёма базы данных. Конечной целью нормализации является уменьшение потенциальной противоречивости хранимой в базе данных информации.
[к оглавлению](#Базы-данных)
##Какие существуют нормальные формы?
__Первая нормальная форма (1NF)__ - Отношение находится в 1NF, если значения всех его атрибутов атомарны (неделимы).
__Вторая нормальная форма (2NF)__ - Отношение находится в 2NF, если оно находится в 1NF, и при этом все неключевые атрибуты зависят только от ключа целиком, а не от какой-то его части.
__Третья нормальная форма (3NF)__ - Отношение находится в 3NF, если оно находится в 2NF и все неключевые атрибуты не зависят друг от друга.
__Четвёртая нормальная форма (4NF)__ - Отношение находится в 4NF , если оно находится в 3NF и если в нем не содержатся независимые группы атрибутов, между которыми существует отношение «многие-ко-многим».
__Пятая нормальная форма (5NF)__ - Отношение находится в 5NF, когда каждая нетривиальная зависимость соединения в ней определяется потенциальным ключом (ключами) этого отношения.
__Шестая нормальная форма (6NF)__ - Отношение находится в 6NF, когда она удовлетворяет всем нетривиальным зависимостям соединения, т.е. когда она неприводима, то есть не может быть подвергнута дальнейшей декомпозиции без потерь. Каждая переменная отношения, которая находится в 6NF, также находится и в 5NF. Введена как обобщение пятой нормальной формы для хронологической базы данных.
__Нормальная форма Бойса-Кодда, усиленная 3 нормальная форма (BCNF)__ - Отношение находится в BCNF, когда каждая её нетривиальная и неприводимая слева функциональная зависимость имеет в качестве своего детерминанта некоторый потенциальный ключ.
__Доменно-ключевая нормальная форма (DKNF)__ - Отношение находится в DKNF, когда каждое наложенное на неё ограничение является логическим следствием ограничений доменов и ограничений ключей, наложенных на данное отношение.
[к оглавлению](#Базы-данных)
##Что такое _«денормализация»_? Для чего она применяется?
__Денормализация базы данных__ — это процесс осознанного приведения базы данных к виду, в котором она не будет соответствовать правилам нормализации. Обычно это необходимо для повышения производительности и скорости извлечения данных, за счет увеличения избыточности данных.
[к оглавлению](#Базы-данных)
##Какие существуют типы связей в базе данных? Приведите примеры.
+ __Один к одному__ - любому значению атрибута А соответствует только одно значение атрибута В, и наоборот.
>Каждый университет гарантированно имеет 1-го ректора: _1 университет → 1 ректор_.
+ __Один ко многим__ - любому значению атрибута А соответствует 0, 1 или несколько значений атрибута В.
>В каждом университете есть несколько факультетов: _1 университет → много факультетов_.
+ __Многие ко многим__ - любому значению атрибута А соответствует 0, 1 или несколько значений атрибута В, и любому значению атрибута В соответствует 0, 1 или несколько значение атрибута А.
>1 профессор может преподавать на нескольких факультетах, в то же время на 1-ом факультете может преподавать несколько профессоров: _Несколько профессоров ↔ Несколько факультетов_.
[к оглавлению](#Базы-данных)
##Что такое _«индексы»_? Для чего их используют? В чём заключаются их преимущества и недостатки?
__Индекс (index)__ — объект базы данных, создаваемый с целью повышения производительности выборки данных.
Наборы данных могут иметь большое количество записей, которые хранятся в произвольном порядке, и их поиск по заданному критерию путём последовательного просмотра набора данных запись за записью может занимать много времени. Индекс формируется из значений одного или нескольких полей и указателей на соответствующие записи набора данных, - таким образом, достигается значительный прирост скорости выборки из этих данных.
Преимущества
+ ускорение поиска и сортировки по определенному полю или набору полей.
+ обеспечение уникальности данных.
Недостатки
+ требование дополнительного места на диске и в оперативной памяти и чем больше/длиннее ключ, тем больше размер индекса.
+ замедление операций вставки, обновления и удаления записей, поскольку при этом приходится обновлять сами индексы.
Индексы предпочтительней для:
+ Поля-счетчика, чтобы в том числе избежать и повторения значений в этом поле;
+ Поля, по которому проводится сортировка данных;
+ Полей, по которым часто проводится соединение наборов данных. Поскольку в этом случае данные располагаются в порядке возрастания индекса и соединение происходит значительно быстрее;
+ Поля, которое объявлено первичным ключом (primary key);
+ Поля, в котором данные выбираются из некоторого диапазона. В этом случае как только будет найдена первая запись с нужным значением, все последующие значения будут расположены рядом.
Использование индексов нецелесообразно для:
+ Полей, которые редко используются в запросах;
+ Полей, которые содержат всего два или три значения, например: ужской_, енский пол_ или значения _«да»_, _«нет»_.
[к оглавлению](#Базы-данных)
##Какие типы индексов существуют?
__По порядку сортировки__
+ _упорядоченные_ — индексы, в которых элементы упорядочены;
+ озрастающие_;
+ _убывающие_;
+ еупорядоченные_ — индексы, в которых элементы неупорядочены.
__По источнику данных__
+ _индексы по представлению (view)_;
+ _индексы по выражениям_.
__По воздействию на источник данных__
+ _кластерный индекс_ - при определении в наборе данных физическое расположение данных перестраивается в соответствии со структурой индекса. Логическая структура набора данных в этом случае представляет собой скорее словарь, чем индекс. Данные в словаре физически упорядочены, например по алфавиту. Кластерные индексы могут дать существенное увеличение производительности поиска данных даже по сравнению с обычными индексами. Увеличение производительности особенно заметно при работе с последовательными данными.
+ екластерный индекс_ — наиболее типичные представители семейства индексов. В отличие от кластерных, они не перестраивают физическую структуру набора данных, а лишь организуют ссылки на соответствующие записи. Для идентификации нужной записи в наборе данных некластерный индекс организует специальные указатели, включающие в себя: информацию об идентификационном номере файла, в котором хранится запись; идентификационный номер страницы соответствующих данных; номер искомой записи на соответствующей странице; содержимое столбца.
__По структуре__
+ _B*-деревья_;
+ _B+-деревья_;
+ _B-деревья_;
+ _Хэши_.
__По количественному составу__
+ _простой индекс (индекс с одним ключом)_ — строится по одному полю;
+ _составной (многоключевой, композитный) индекс_ — строится по нескольким полям при этом важен порядок их следования;
+ _индекс с включенными столбцами_ — некластеризованный индекс, дополнительно содержащий кроме ключевых столбцов еще и неключевые;
+ _главный индекс (индекс по первичному ключу)_ — это тот индексный ключ, под управлением которого в данный момент находится набор данных. Набор данных не может быть отсортирован по нескольким индексным ключам одновременно. Хотя, если один и тот же набор данных открыт одновременно в нескольких рабочих областях, то у каждой копии набора данных может быть назначен свой главный индекс.
__По характеристике содержимого__
+ _уникальный индекс_ состоит из множества уникальных значений поля;
+ _плотный индекс_ (NoSQL) — индекс, при котором, каждом документе в индексируемой коллекции соответствует запись в индексе, даже если в документе нет индексируемого поля.
+ _разреженный индекс_ (NoSQL) — тот, в котором представлены только те документы, для которых индексируемый ключ имеет какое-то определённое значение (существует).
+ _пространственный индекс_ — оптимизирован для описания географического местоположения. Представляет из себя многоключевой индекс состоящий из широты и долготы.
+ _составной пространственный индекс_ — индекс, включающий в себя кроме широты и долготы ещё какие-либо мета-данные (например теги). Но географические координаты должны стоять на первом месте.
+ _полнотекстовый (инвертированный) индекс_ — словарь, в котором перечислены все слова и указано, в каких местах они встречаются. При наличии такого индекса достаточно осуществить поиск нужных слов в нём и тогда сразу же будет получен список документов, в которых они встречаются.
+ _хэш-индекс_ предполагает хранение не самих значений, а их хэшей, благодаря чему уменьшается размер (а, соответственно, и увеличивается скорость их обработки) индексов из больших полей. Таким образом, при запросах с использованием хэш-индексов, сравниваться будут не искомое со значения поля, а хэш от искомого значения с хэшами полей.
Из-за нелинейнойсти хэш-функций данный индекс нельзя сортировать по значению, что приводит к невозможности использования в сравнениях больше/меньше и «is null». Кроме того, так как хэши не уникальны, то для совпадающих хэшей применяются методы разрешения коллизий.
+ _битовый индекс (bitmap index)_ — метод битовых индексов заключается в создании отдельных битовых карт (последовательностей 0 и 1) для каждого возможного значения столбца, где каждому биту соответствует запись с индексируемым значением, а его значение равное 1 означает, что запись, соответствующая позиции бита содержит индексируемое значение для данного столбца или свойства.
+ _обратный индекс (reverse index)_ — B-tree индекс, но с реверсированным ключом, используемый в основном для монотонно возрастающих значений (например, автоинкрементный идентификатор) в OLTP системах с целью снятия конкуренции за последний листовой блок индекса, т.к. благодаря переворачиванию значения две соседние записи индекса попадают в разные блоки индекса. Он не может использоваться для диапазонного поиска.
+ ункциональный индекс, индекс по вычисляемому полю (function-based index)_ — индекс, ключи которого хранят результат пользовательских функций. Функциональные индексы часто строятся для полей, значения которых проходят предварительную обработку перед сравнением в команде SQL. Например, при сравнении строковых данных без учета регистра символов часто используется функция UPPER. Кроме того, функциональный индекс может помочь реализовать любой другой отсутствующий тип индексов данной СУБД.
+ _первичный индекс_ — уникальный индекс по полю первичного ключа.
+ _вторичный индекс_ — индекс по другим полям (кроме поля первичного ключа).
+ _XML-индекс_ — вырезанное материализованное представление больших двоичных XML-объектов (BLOB) в столбце с типом данных xml.
__По механизму обновления__
+ _полностью перестраиваемый_ — при добавлении элемента заново перестраивается весь индекс.
+ _пополняемый (балансируемый)_ — при добавлении элементов индекс перестраивается частично (например одна из ветви) и периодически балансируется.
__По покрытию индексируемого сод