java-interview icon indicating copy to clipboard operation
java-interview copied to clipboard

Вопросы и ответы к интервью Java разработчика

Свёрстанные вопросы и ответы by Victoria Demidova
Telegram Bot by cmmttd

Вопросы для собеседования на Java Developer

  • ООП icon
  • JVM icon
  • Java Core icon
  • Java Collections Framework icon
  • Java 8 icon
  • Потоки ввода-вывода в Java icon
  • Сериализация icon
  • Многопоточность icon
  • Servlets, JSP, JSTL icon
  • Базы данных icon
  • SQL icon
  • JDBC icon
  • Тестирование icon
  • Журналирование icon
  • UML icon
  • XML icon
  • Шаблоны проектирования icon
  • Основы HTML icon
  • Основы CSS icon
  • Основы Web icon
  • Дополнительные материалы icon

ООП

  • Что такое ООП?
  • Назовите основные принципы ООП.
  • Что такое «инкапсуляция»?
  • Что такое «наследование»?
  • Что такое «полиморфизм»?
  • Что такое «абстракция»?
  • Что представляет собой «обмен сообщениями»?
  • Расскажите про основные понятия ООП: «класс», «объект», «интерфейс».
  • В чем заключаются преимущества и недостатки объектно-ориентированного подхода в программировании?
  • Что подразумевают в плане принципов ООП выражения «является» и «имеет»?
  • В чем разница между композицией и агрегацией?
  • Что такое статическое и динамическое связывание?

к оглавлению

JVM

  • За что отвечает JVM
  • Classloader
  • Области данных времени выполнения
  • Frames
  • Execution Engine
  • Полезные ссылки

к оглавлению

Java Core

  • Чем различаются JRE, JVM и JDK?
  • Какие существуют модификаторы доступа?
  • О чем говорит ключевое слово final?
  • Какими значениями инициализируются переменные по умолчанию?
  • Что вы знаете о функции main()?
  • Какие логические операции и операторы вы знаете?
  • Что такое тернарный оператор выбора?
  • Какие побитовые операции вы знаете?
  • Где и для чего используется модификатор abstract?
  • Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
  • Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
  • Почему в некоторых интерфейсах вообще не определяют методов?
  • Почему нельзя объявить метод интерфейса с модификатором final?
  • Что имеет более высокий уровень абстракции - класс, абстрактный класс или интерфейс?
  • Может ли объект получить доступ к private-переменной класса? Если, да, то каким образом?
  • Каков порядок вызова конструкторов и блоков инициализации с учётом иерархии классов?
  • Зачем нужны и какие бывают блоки инициализации?
  • К каким конструкциям Java применим модификатор static?
  • Для чего в Java используются статические блоки инициализации?
  • Что произойдёт, если в блоке инициализации возникнет исключительная ситуация?
  • Какое исключение выбрасывается при возникновении ошибки в блоке инициализации класса?
  • Может ли статический метод быть переопределён или перегружен?
  • Могут ли нестатические методы перегрузить статические?
  • Можно ли сузить уровень доступа/тип возвращаемого значения при переопределении метода?
  • Возможно ли при переопределении метода изменить: модификатор доступа; возвращаемый тип; тип аргумента или их количество; имена аргументов или их порядок, убирать, добавлять, изменять порядок следования элементов секции throws?
  • Как получить доступ к переопределенным методам родительского класса?
  • Можно ли объявить метод абстрактным и статическим одновременно?
  • В чем разница между членом экземпляра класса и статическим членом класса?
  • Где разрешена инициализация статических/нестатических полей?
  • Какие типы классов бывают в java?
  • Расскажите про вложенные классы. В каких случаях они применяются?
  • Что такое «статический класс»?
  • Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?
  • Что такое «локальный класс»? Каковы его особенности?
  • Что такое «анонимные классы»? Где они применяются?
  • Каким образом из вложенного класса получить доступ к полю внешнего класса?
  • Для чего используется оператор assert?
  • Для чего нужен сборщик мусора?
  • Как работает сборщик мусора?
  • Какие разновидности сборщиков мусора реализованы в виртуальной машине HotSpot?
  • Опишите алгоритм работы какого-нибудь сборщика мусора реализованного в виртуальной машине HotSpot.
  • Что такое finalize()? Зачем он нужен?
  • Что произойдет со сборщиком мусора, если выполнение метода finalize() требует ощутимо много времени, или в процессе выполнения будет выброшено исключение?
  • Чем отличаются final, finally и finalize()?
  • Что такое Heap и Stack память в Java? Какая разница между ними?
  • Верно ли утверждение, что примитивные типы данных всегда хранятся в стеке, а экземпляры ссылочных типов данных в куче?
  • Каким образом передаются переменные в методы, по значению или по ссылке?
  • Расскажите про приведение типов. Что такое понижение и повышение типа?
  • Когда в приложении может быть выброшено исключение ClassCastException?
  • Что такое литералы?
  • Что такое autoboxing («автоупаковка») в Java и каковы правила упаковки примитивных типов в классы-обертки?
  • Какие есть особенности класса String?
  • Что такое «пул строк»?
  • Почему String неизменяемый и финализированный класс?
  • Почему char[] предпочтительнее String для хранения пароля?
  • Почему строка является популярным ключом в HashMap в Java?
  • Что делает метод intern() в классе String?.
  • Можно ли использовать строки в конструкции switch?
  • Какая основная разница между String, StringBuffer, StringBuilder?
  • Что такое класс Object? Какие в нем есть методы?
  • Расскажите про клонирование объектов.
  • В чем отличие между поверхностным и глубоким клонированием?
  • Какой способ клонирования предпочтительней?
  • Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?
  • Дайте определение понятию «конструктор».
  • Что такое «конструктор по умолчанию»?
  • Чем отличаются конструкторы по-умолчанию, копирования и конструктор с параметрами?
  • Где и как вы можете использовать закрытый конструктор?
  • Расскажите про классы-загрузчики и про динамическую загрузку классов.
  • Что такое Reflection?
  • Зачем нужен equals(). Чем он отличается от операции ==?
  • equals() порождает отношение эквивалентности. Какими свойствами обладает такое отношение?
  • Если вы хотите переопределить equals(), какие условия должны удовлетворяться для переопределенного метода?
  • Правила переопределения метода Object.equals().
  • Какая связь между hashCode() и equals()?
  • Если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?
  • Что будет, если переопределить equals() не переопределяя hashCode()? Какие могут возникнуть проблемы?
  • Каким образом реализованы методы hashCode() и equals() в классе Object?
  • Для чего нужен метод hashCode()?
  • Правила переопределения метода Object.hashCode().
  • Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете hashCode()?
  • Могут ли у разных объектов быть одинаковые hashCode()?
  • Если у класса Point{int x, y;} реализовать метод equals(Object that) {(return this.x == that.x && this.y == that.y)}, но сделать хэш-код в виде int hashCode() {return x;}, то будут ли корректно такие точки помещаться и извлекаться из HashSet?
  • Могут ли у разных объектов (ref0 != ref1) быть ref0.equals(ref1) == true?
  • Могут ли у разных ссылок на один объект (ref0 == ref1) быть ref0.equals(ref1) == false?
  • Можно ли так реализовать метод equals(Object that) {return this.hashCode() == that.hashCode()}?
  • В equals() требуется проверять, что аргумент equals(Object that) такого же типа что и сам объект. В чем разница между this.getClass() == that.getClass() и that instanceof MyClass?
  • Можно ли реализовать метод equals() класса MyClass вот так: class MyClass {public boolean equals(MyClass that) {return this == that;}}?
  • Есть класс Point{int x, y;}. Почему хэш-код в виде 31 * x + y предпочтительнее чем x + y?
  • Опишите иерархию исключений.
  • Какие виды исключений в Java вы знаете, чем они отличаются?
  • Что такое checked и unchecked exception?
  • Какой оператор позволяет принудительно выбросить исключение?
  • О чем говорит ключевое слово throws?
  • Как написать собственное («пользовательское») исключение?
  • Какие существуют unchecked exception?
  • Что такое Error?
  • Что вы знаете о OutOfMemoryError?
  • Опишите работу блока try-catch-finally.
  • Что такое механизм try-with-resources?
  • Возможно ли использование блока try-finally (без catch)?
  • Может ли один блок catch отлавливать сразу несколько исключений?
  • Всегда ли исполняется блок finally?
  • Существуют ли ситуации, когда блок finally не будет выполнен?
  • Может ли метод main выбросить исключение во вне и если да, то где будет происходить обработка данного исключения?
  • Предположим, есть метод, который может выбросить IOException и FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?
  • Что такое generics?
  • Что такое «интернационализация», «локализация»?

к оглавлению

Java Collections

  • Что такое «коллекция»?
  • Назовите основные интерфейсы JCF и их реализации.
  • Расположите в виде иерархии следующие интерфейсы: List, Set, Map, SortedSet, SortedMap, Collection, Iterable, Iterator, NavigableSet, NavigableMap.
  • Почему Map — это не Collection, в то время как List и Set являются Collection?
  • В чем разница между классами java.util.Collection и java.util.Collections?
  • Что такое «fail-fast поведение»?
  • Какая разница между fail-fast и fail-safe?
  • Приведите примеры итераторов реализующих поведение fail-safe
  • Чем различаются Enumeration и Iterator.
  • Как между собой связаны Iterable и Iterator?
  • Как между собой связаны Iterable, Iterator и «for-each»?
  • Сравните Iterator и ListIterator.
  • Что произойдет при вызове Iterator.next() без предварительного вызова Iterator.hasNext()?
  • Сколько элементов будет пропущено, если Iterator.next() будет вызван после 10-ти вызовов Iterator.hasNext()?
  • Как поведёт себя коллекция, если вызвать iterator.remove()?
  • Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()?
  • Как избежать ConcurrentModificationException во время перебора коллекции?
  • Какая коллекция реализует дисциплину обслуживания FIFO?
  • Какая коллекция реализует дисциплину обслуживания FILO?
  • Чем отличается ArrayList от Vector?
  • Зачем добавили ArrayList, если уже был Vector?
  • Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
  • Что работает быстрее ArrayList или LinkedList?
  • Какое худшее время работы метода contains() для элемента, который есть в LinkedList?
  • Какое худшее время работы метода contains() для элемента, который есть в ArrayList?
  • Какое худшее время работы метода add() для LinkedList?
  • Какое худшее время работы метода add() для ArrayList?
  • Необходимо добавить 1 млн. элементов, какую структуру вы используете?
  • Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
  • Предложите эффективный алгоритм удаления нескольких рядом стоящих элементов из середины списка, реализуемого ArrayList.
  • Сколько необходимо дополнительной памяти при вызове ArrayList.add()?
  • Сколько выделяется дополнительно памяти при вызове LinkedList.add()?
  • Оцените количество памяти на хранение одного примитива типа byte в LinkedList?
  • Оцените количество памяти на хранение одного примитива типа byte в ArrayList?
  • Для ArrayList или для LinkedList операция добавления элемента в середину (list.add(list.size()/2, newElement)) медленнее?
  • В реализации класса ArrayList есть следующие поля: Object[] elementData, int size. Объясните, зачем хранить отдельно size, если всегда можно взять elementData.length?
  • Сравните интерфейсы Queue и Deque.
  • Кто кого расширяет: Queue расширяет Deque, или Deque расширяет Queue?
  • Почему LinkedList реализует и List, и Deque?
  • LinkedList — это односвязный, двусвязный или четырехсвязный список?
  • Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)?
  • Что позволяет сделать PriorityQueue?
  • Stack считается «устаревшим». Чем его рекомендуют заменять? Почему?
  • Зачем нужен HashMap, если есть Hashtable?
  • В чем разница между HashMap и IdentityHashMap? Для чего нужна IdentityHashMap?
  • В чем разница между HashMap и WeakHashMap? Для чего используется WeakHashMap?
  • В WeakHashMap используются WeakReferences. А почему бы не создать SoftHashMap на SoftReferences?
  • В WeakHashMap используются WeakReferences. А почему бы не создать PhantomHashMap на PhantomReferences?
  • LinkedHashMap - что в нем от LinkedList, а что от HashMap?
  • В чем проявляется «сортированность» SortedMap, кроме того, что toString() выводит все элементы по порядку?
  • Как устроен HashMap?
  • Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресации и на основе метода цепочек. Как реализована HashMap? Почему, по вашему мнению, была выбрана именно эта реализация? В чем плюсы и минусы каждого подхода?
  • Как работает HashMap при попытке сохранить в него два элемента по ключам с одинаковым hashCode(), но для которых equals() == false?
  • Какое начальное количество корзин в HashMap?
  • Какова оценка временной сложности операций над элементами из HashMap? Гарантирует ли HashMap указанную сложность выборки элемента?
  • Возможна ли ситуация, когда HashMap выродится в список даже с ключами имеющими разные hashCode()?
  • В каком случае может быть потерян элемент в HashMap?
  • Почему нельзя использовать byte[] в качестве ключа в HashMap?
  • Какова роль equals() и hashCode() в HashMap?
  • Каково максимальное число значений hashCode()?
  • Какое худшее время работы метода get(key) для ключа, которого нет в HashMap?
  • Какое худшее время работы метода get(key) для ключа, который есть в HashMap?
  • Сколько переходов происходит в момент вызова HashMap.get(key) по ключу, который есть в таблице?
  • Сколько создается новых объектов, когда вы добавляете новый элемент в HashMap?
  • Как и когда происходит увеличение количества корзин в HashMap?
  • Объясните смысл параметров в конструкторе HashMap(int initialCapacity, float loadFactor).
  • Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()?
  • Как перебрать все ключи Map?
  • Как перебрать все значения Map?
  • Как перебрать все пары «ключ-значение» в Map?
  • В чем отличия TreeSet и HashSet?
  • Что будет, если добавлять элементы в TreeSet по возрастанию?
  • Чем LinkedHashSet отличается от HashSet?
  • Для Enum есть специальный класс java.util.EnumSet. Зачем? Чем авторов не устраивал HashSet или TreeSet?
  • Какие существуют способы перебирать элементы списка?
  • Каким образом можно получить синхронизированные объекты стандартных коллекций?
  • Как получить коллекцию только для чтения?
  • Напишите однопоточную программу, которая заставляет коллекцию выбросить ConcurrentModificationException.
  • Приведите пример, когда какая-либо коллекция выбрасывает UnsupportedOperationException.
  • Реализуйте симметрическую разность двух коллекций используя методы Collection (addAll(...), removeAll(...), retainAll(...)).
  • Как, используя LinkedHashMap, сделать кэш c «invalidation policy»?
  • Как одной строчкой скопировать элементы любой collection в массив?
  • Как одним вызовом из List получить List со всеми элементами, кроме первых и последних 3-х?
  • Как одной строчкой преобразовать HashSet в ArrayList?
  • Как одной строчкой преобразовать ArrayList в HashSet?
  • Сделайте HashSet из ключей HashMap.
  • Сделайте HashMap из HashSet<Map.Entry<K, V>>.

к оглавлению

Java 8

  • Какие нововведения, появились в Java 8 и JDK 8?
  • Что такое «лямбда»? Какова структура и особенности использования лямбда-выражения?
  • К каким переменным есть доступ у лямбда-выражений?
  • Как отсортировать список строк с помощью лямбда-выражения?
  • Что такое «ссылка на метод»?
  • Какие виды ссылок на методы вы знаете?
  • Объясните выражение System.out::println.
  • Что такое «функциональные интерфейсы»?
  • Для чего нужны функциональные интерфейсы Function<T,R>, DoubleFunction<R>, IntFunction<R> и LongFunction<R>?
  • Для чего нужны функциональные интерфейсы UnaryOperator<T>, DoubleUnaryOperator, IntUnaryOperator и LongUnaryOperator?
  • Для чего нужны функциональные интерфейсы BinaryOperator<T>, DoubleBinaryOperator, IntBinaryOperator и LongBinaryOperator?
  • Для чего нужны функциональные интерфейсы Predicate<T>, DoublePredicate, IntPredicate и LongPredicate?
  • Для чего нужны функциональные интерфейсы Consumer<T>, DoubleConsumer, IntConsumer и LongConsumer?
  • Для чего нужны функциональные интерфейсы Supplier<T>, BooleanSupplier, DoubleSupplier, IntSupplier и LongSupplier?
  • Для чего нужен функциональный интерфейс BiConsumer<T,U>?
  • Для чего нужен функциональный интерфейс BiFunction<T,U,R>?
  • Для чего нужен функциональный интерфейс BiPredicate<T,U>?
  • Для чего нужны функциональные интерфейсы вида _To_Function?
  • Для чего нужны функциональные интерфейсы ToDoubleBiFunction<T,U>, ToIntBiFunction<T,U> и ToLongBiFunction<T,U>?
  • Для чего нужны функциональные интерфейсы ToDoubleFunction<T>, ToIntFunction<T> и ToLongFunction<T>?
  • Для чего нужны функциональные интерфейсы ObjDoubleConsumer<T>, ObjIntConsumer<T> и ObjLongConsumer<T>?
  • Что такое StringJoiner?
  • Что такое default методы интрефейса?
  • Как вызывать default метод интерфейса в реализующем этот интерфейс классе?
  • Что такое static метод интерфейса?
  • Как вызывать static метод интерфейса?
  • Что такое Optional?
  • Что такое Stream?
  • Какие существуют способы создания стрима?
  • В чем разница между Collection и Stream?
  • Для чего нужен метод collect() в стримах?
  • Для чего в стримах применяются методы forEach() и forEachOrdered()?
  • Для чего в стримах предназначены методы map() и mapToInt(), mapToDouble(), mapToLong()?
  • Какова цель метода filter() в стримах?
  • Для чего в стримах предназначен метод limit()?
  • Для чего в стримах предназначен метод sorted()?
  • Для чего в стримах предназначены методы flatMap(), flatMapToInt(), flatMapToDouble(), flatMapToLong()?
  • Расскажите о параллельной обработке в Java 8.
  • Какие конечные методы работы со стримами вы знаете?
  • Какие промежуточные методы работы со стримами вы знаете?
  • Как вывести на экран 10 случайных чисел, используя forEach()?
  • Как можно вывести на экран уникальные квадраты чисел используя метод map()?
  • Как вывести на экран количество пустых строк с помощью метода filter()?
  • Как вывести на экран 10 случайных чисел в порядке возрастания?
  • Как найти максимальное число в наборе?
  • Как найти минимальное число в наборе?
  • Как получить сумму всех чисел в наборе?
  • Как получить среднее значение всех чисел?
  • Какие дополнительные методы для работы с ассоциативными массивами (maps) появились в Java 8?
  • Что такое LocalDateTime?
  • Что такое ZonedDateTime?
  • Как получить текущую дату с использованием Date Time API из Java 8?
  • Как добавить 1 неделю, 1 месяц, 1 год, 10 лет к текущей дате с использованием Date Time API?
  • Как получить следующий вторник используя Date Time API?
  • Как получить вторую субботу текущего месяца используя Date Time API?
  • Как получить текущее время с точностью до миллисекунд используя Date Time API?
  • Как получить текущее время по местному времени с точностью до миллисекунд используя Date Time API?
  • Как определить повторяемую аннотацию?
  • Что такое Nashorn?
  • Что такое jjs?
  • Какой класс появился в Java 8 для кодирования/декодирования данных?
  • Как создать Base64 кодировщик и декодировщик?

к оглавлению

Потоки ввода/вывода в Java

  • В чём заключается разница между IO и NIO?
  • Какие особенности NIO вы знаете?
  • Что такое «каналы»?
  • Какие существуют виды потоков ввода/вывода?
  • Назовите основные классы потоков ввода/вывода.
  • В каких пакетах расположены классы потоков ввода/вывода?
  • Какие подклассы класса InputStream вы знаете, для чего они предназначены?
  • Для чего используется PushbackInputStream?
  • Для чего используется SequenceInputStream?
  • Какой класс позволяет читать данные из входного байтового потока в формате примитивных типов данных?
  • Какие подклассы класса OutputStream вы знаете, для чего они предназначены?
  • Какие подклассы класса Reader вы знаете, для чего они предназначены?
  • Какие подклассы класса Writer вы знаете, для чего они предназначены?
  • В чем отличие класса PrintWriter от PrintStream?
  • Чем отличаются и что общего у InputStream, OutputStream, Reader, Writer?
  • Какие классы позволяют преобразовать байтовые потоки в символьные и обратно?
  • Какие классы позволяют ускорить чтение/запись за счет использования буфера?
  • Какой класс предназначен для работы с элементами файловой системы?
  • Какие методы класса File вы знаете?
  • Что вы знаете об интерфейсе FileFilter?
  • Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?
  • Что вы знаете о RandomAccessFile?
  • Какие режимы доступа к файлу есть у RandomAccessFile?
  • Какие классы поддерживают чтение и запись потоков в компрессированном формате?
  • Существует ли возможность перенаправить потоки стандартного ввода/вывода?
  • Какой символ является разделителем при указании пути в файловой системе?
  • Что такое «абсолютный путь» и «относительный путь»?
  • Что такое «символьная ссылка»?

к оглавлению

Сериализация

  • Что такое «сериализация»?
  • Опишите процесс сериализации/десериализации с использованием Serializable.
  • Как изменить стандартное поведение сериализации/десериализации?
  • Как исключить поля из сериализации?
  • Что обозначает ключевое слово transient?
  • Какое влияние оказывают на сериализуемость модификаторы полей static и final
  • Как не допустить сериализацию?
  • Как создать собственный протокол сериализации?
  • Какая роль поля serialVersionUID в сериализации?
  • Когда стоит изменять значение поля serialVersionUID?
  • В чем проблема сериализации Singleton?
  • Какие существуют способы контроля за значениями десериализованного объекта

к оглавлению

Многопоточность

  • Расскажите о модели памяти Java?
  • Что такое «потокобезопасность»?
  • В чём разница между «конкуренцией» и «параллелизмом»?
  • Что такое «кооперативная многозадачность»? Какой тип многозадачности использует Java? Чем обусловлен этот выбор?
  • Что такое ordering, as-if-serial semantics, sequential consistency, visibility, atomicity, happens-before, mutual exclusion, safe publication?
  • Чем отличается процесс от потока?
  • Что такое «зелёные потоки» и есть ли они в Java?
  • Каким образом можно создать поток?
  • Чем различаются Thread и Runnable?
  • В чём заключается разница между методами start() и run()?
  • Как принудительно запустить поток?
  • Что такое «монитор» в Java?
  • Дайте определение понятию «синхронизация».
  • Какие существуют способы синхронизации в Java?
  • В каких состояниях может находиться поток?
  • Можно ли создавать новые экземпляры класса, пока выполняется static synchronized метод?
  • Зачем может быть нужен private мьютекс?
  • Как работают методы wait() и notify()/notifyAll()?
  • В чем разница между notify() и notifyAll()?
  • Почему методы wait() и notify() вызываются только в синхронизированном блоке?
  • Чем отличается работа метода wait() с параметром и без параметра?
  • Чем отличаются методы Thread.sleep() и Thread.yield()?
  • Как работает метод Thread.join()?
  • Что такое deadlock?
  • Что такое livelock?
  • Как проверить, удерживает ли поток монитор определённого ресурса?
  • На каком объекте происходит синхронизация при вызове static synchronized метода?
  • Для чего используется ключевое слово volatile, synchronized, transient, native?
  • В чём различия между volatile и Atomic переменными?
  • В чём заключаются различия между java.util.concurrent.Atomic*.compareAndSwap() и java.util.concurrent.Atomic*.weakCompareAndSwap().
  • Что значит «приоритет потока»?
  • Что такое «потоки-демоны»?
  • Можно ли сделать основной поток программы демоном?
  • Что значит «усыпить» поток?
  • Чем отличаются два интерфейса Runnable и Callable?
  • Что такое FutureTask?
  • В чем заключаются различия между CyclicBarrier и CountDownLatch?
  • Что такое race condition?
  • Существует ли способ решения проблемы race condition?
  • Как остановить поток?
  • Почему не рекомендуется использовать метод Thread.stop()?
  • Что происходит, когда в потоке выбрасывается исключение?
  • В чем разница между interrupted() и isInterrupted()?
  • Что такое «пул потоков»?
  • Какого размера должен быть пул потоков?
  • Что будет, если очередь пула потоков уже заполнена, но подаётся новая задача?
  • В чём заключается различие между методами submit() и execute() у пула потоков?
  • В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
  • Как поделиться данными между двумя потоками?
  • Какой параметр запуска JVM используется для контроля размера стека потока?
  • Как получить дамп потока?
  • Что такое ThreadLocal-переменная?
  • Назовите различия между synchronized и ReentrantLock?
  • Что такое ReadWriteLock?
  • Что такое «блокирующий метод»?
  • Что такое «фреймворк Fork/Join»?
  • Что такое Semaphore?
  • Что такое double checked locking Singleton?
  • Как создать потокобезопасный Singleton?
  • Чем полезны неизменяемые объекты?
  • Что такое busy spin?
  • Перечислите принципы, которым вы следуете в многопоточном программировании?
  • Какое из следующих утверждений о потоках неверно?
  • Даны 3 потока Т1, Т2 и Т3? Как реализовать выполнение в последовательности Т1, Т2, Т3?
  • Напишите минимальный неблокирующий стек (всего два метода — push() и pop()).
  • Напишите минимальный неблокирующий стек (всего два метода — push() и pop()) с использованием Semaphore.
  • Напишите минимальный неблокирующий ArrayList (всего четыре метода — add(), get(), remove(), size()).
  • Напишите потокобезопасную реализацию класса с неблокирующим методом BigInteger next(), который возвращает элементы последовательности: [1, 2, 4, 8, 16, ...].
  • Напишите простейший многопоточный ограниченный буфер с использованием synchronized.
  • Напишите простейший многопоточный ограниченный буфер с использованием ReentrantLock.

к оглавлению

Servlets, JSP, JSTL

  • Что такое «сервлет»?
  • В чем заключаются преимущества технологии сервлетов над CGI (Common Gateway Interface)?
  • Какова структура веб-проекта?
  • Что такое «контейнер сервлетов»?
  • Зачем нужны сервера приложений, если есть контейнеры сервлетов?
  • Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?
  • Что такое «дескриптор развертывания»?
  • Какие действия необходимо проделать при создании сервлетов?
  • В каком случае требуется переопределять метод service()?
  • Есть ли смысл определять для сервлета конструктор? Каким образом лучше инициализировать данные?
  • Почему необходимо переопределить только init() метод без аргументов?
  • Какие наиболее распространенные задачи выполняются в контейнере сервлетов?
  • Что вы знаете о сервлетных фильтрах?
  • Зачем в сервлетах используются различные listener?
  • Когда стоит использовать фильтры сервлетов, а когда слушателей?
  • Как реализовать запуск сервлета одновременно с запуском приложения?
  • Как обработать в приложении исключения, выброшенные другим сервлетом?
  • Что представляет собой ServletConfig?
  • Что представляет собой ServletContext?
  • В чем отличия ServletContext и ServletConfig?
  • Для чего нужен интерфейс ServletResponse?
  • Для чего нужен интерфейс ServletRequest?
  • Что такое Request Dispatcher?
  • Как из одного сервлета вызвать другой сервлет?
  • Чем отличается sendRedirect() от forward()?
  • Для чего используются атрибуты сервлетов и как происходит работа с ними?
  • Каким образом можно допустить в сервлете deadlock?
  • Как получить реальное расположение сервлета на сервере?
  • Как получить информацию о сервере из сервлета?
  • Как получить IP адрес клиента на сервере?
  • Какие классы-обертки для сервлетов вы знаете?
  • В чем отличия GenericServlet и HttpServlet?
  • Почему HttpServlet класс объявлен как абстрактный?
  • Какие основные методы присутствуют в классе HttpServlet?
  • Стоит ли волноваться о многопоточной безопасности работая с сервлетами?
  • Какой метод HTTP не является неизменяемым?
  • Какие есть методы отправки данных с клиента на сервер?
  • В чем разница между методами GET и POST?
  • В чем разница между PrintWriter и ServletOutputStream?
  • Можно ли одновременно использовать в сервлете PrintWriter и ServletOutputStream?
  • Расскажите об интерфейсе SingleThreadModel.
  • Что означает URL encoding? Как это осуществить в Java?
  • Какие различные методы управления сессией в сервлетах вы знаете?
  • Что такое cookies?
  • Какие методы для работы с cookies предусмотрены в сервлетах?
  • Что такое URL Rewriting?
  • Зачем нужны и чем отличаются методы encodeURL() и encodeRedirectURL()?
  • Что такое «сессия»?
  • Как уведомить объект в сессии, что сессия недействительна или закончилась?
  • Какой существует эффективный способ удостоверится, что все сервлеты доступны только для пользователя с верной сессией?
  • Как мы можем обеспечить transport layer security для нашего веб приложения?
  • Как организовать подключение к базе данных, обеспечить журналирование в сервлете?
  • Какие основные особенности появились в спецификации Servlet 3?
  • Какие способы аутентификации доступны сервлету?
  • Что такое Java Server Pages (JSP)?
  • Зачем нужен JSP?
  • Опишите, как обрабатываются JSP страницы, начиная от запроса к серверу, заканчивая ответом пользователю.
  • Расскажите об этапах (фазах) жизненного цикла JSP.
  • Расскажите о методах жизненного цикла JSP.
  • Какие методы жизненного цикла JSP могут быть переопределены?
  • Как можно предотвратить прямой доступ к JSP странице из браузера?
  • Какая разница между динамическим и статическим содержимым JSP?
  • Как закомментировать код в JSP?
  • Какие существуют основные типы тегов JSP?
  • Что вы знаете о действиях JSP (Action tag и JSP Action Elements).
  • Взаимодействие JSP - сервлет - JSP.
  • Какие области видимости переменных существуют в JSP?
  • Какие неявные, внутренние объекты и методы есть на JSP странице?
  • Какие неявные объекты не доступны в обычной JSP странице?
  • Что вы знаете о PageContext и какие преимущества его использования?
  • Как сконфигурировать параметры инициализации для JSP?
  • Почему не рекомендуется использовать скриплеты (скриптовые элементы) в JSP?
  • Можно ли определить класс внутри JSP страницы?
  • Что вы знаете о Языке выражений JSP (JSP Expression Language – EL)?
  • Какие типы EL операторов вы знаете?
  • Назовите неявные, внутренние объекты JSP EL и их отличия от объектов JSP.
  • Как отключить возможность использования EL в JSP?
  • Как узнать тип HTTP метода используя JSP EL?
  • Что такое JSTL (JSP Standard tag library)?
  • Из каких групп тегов состоит библиотека JSTL?
  • Какая разница между <c:set> и <jsp:useBean>?
  • Чем отличается <c:import> от <jsp:include> и директивы <%@include %>?
  • Как можно расширить функциональность JSP?
  • Что вы знаете о написании пользовательских JSP тегов?
  • Приведите пример использования собственных тегов.
  • Как сделать перенос строки в HTML средствами JSP?
  • Почему не нужно конфигурировать стандартные JSP теги в web.xml?
  • Как можно обработать ошибки JSP страниц?
  • Как происходит обработка ошибок с помощью JSTL?
  • Как конфигурируется JSP в дескрипторе развертывания.
  • Можно ли использовать Javascript на JSP странице?
  • Всегда ли создается объект сессии на JSP странице, можно ли отключить его создание?
  • Какая разница между JSPWriter и сервлетным PrintWriter?
  • Опишите общие практические принципы работы с JSP.

к оглавлению

Базы данных

  • Что такое «база данных»?
  • Что такое «система управления базами данных»?
  • Что такое «реляционная модель данных»?
  • Дайте определение терминам «простой», «составной» (composite), «потенциальный» (candidate) и «альтернативный» (alternate) ключ.
  • Что такое «первичный ключ» (primary key)? Каковы критерии его выбора?
  • Что такое «внешний ключ» (foreign key)?
  • Что такое «нормализация»?
  • Какие существуют нормальные формы?
  • Что такое «денормализация»? Для чего она применяется?
  • Какие существуют типы связей в базе данных? Приведите примеры.
  • Что такое «индексы»? Для чего их используют? В чём заключаются их преимущества и недостатки?
  • Какие типы индексов существуют?
  • В чем отличие между кластерными и некластерными индексами?
  • Имеет ли смысл индексировать данные, имеющие небольшое количество возможных значений?
  • Когда полное сканирование набора данных выгоднее доступа по индексу?
  • Что такое «транзакция»?
  • Назовите основные свойства транзакции.
  • Какие существуют уровни изолированности транзакций?
  • Какие проблемы могут возникать при параллельном доступе с использованием транзакций?

к оглавлению

SQL

  • Что такое «SQL»?
  • Какие существуют операторы SQL?
  • Что означает NULL в SQL?
  • Что такое «временная таблица»? Для чего она используется?
  • Что такое «представление» (view) и для чего оно применяется?
  • Каков общий синтаксис оператора SELECT?
  • Что такое JOIN?
  • Какие существуют типы JOIN?
  • Что лучше использовать JOIN или подзапросы?
  • Для чего используется оператор HAVING?
  • В чем различие между операторами HAVING и WHERE?
  • Для чего используется оператор ORDER BY?
  • Для чего используется оператор GROUP BY?
  • Как GROUP BY обрабатывает значение NULL?
  • В чем разница между операторами GROUP BY и DISTINCT?
  • Перечислите основные агрегатные функции.
  • В чем разница между COUNT(*) и COUNT({column})?
  • Что делает оператор EXISTS?
  • Для чего используются операторы IN, BETWEEN, LIKE?
  • Для чего применяется ключевое слово UNION?
  • Какие ограничения на целостность данных существуют в SQL?
  • Какие отличия между ограничениями PRIMARY и UNIQUE?
  • Может ли значение в столбце, на который наложено ограничение FOREIGN KEY, равняться NULL?
  • Как создать индекс?
  • Что делает оператор MERGE?
  • В чем отличие между операторами DELETE и TRUNCATE?
  • Что такое «хранимая процедура»?
  • Что такое «триггер»?
  • Что такое «курсор»?
  • Опишите разницу типов данных DATETIME и TIMESTAMP.
  • Для каких числовых типов недопустимо использовать операции сложения/вычитания?
  • Какое назначение у операторов PIVOT и UNPIVOT в Transact-SQL?
  • Расскажите об основных функциях ранжирования в Transact-SQL.
  • Для чего используются операторы INTERSECT, EXCEPT в Transact-SQL?
  • Напишите запрос...

к оглавлению

JDBC

  • Что такое JDBC?
  • В чем заключаются преимущества использования JDBC?
  • Что из себя представляет JDBC URL?
  • Из каких частей стоит JDBC?
  • Перечислите основные типы данных используемые в JDBC. Как они связаны с типами Java?
  • Опишите основные этапы работы с базой данных с использованием JDBC.
  • Как зарегистрировать драйвер JDBC?
  • Как установить соединение с базой данных?
  • Какие уровни изоляции транзакций поддерживаются в JDBC?
  • При помощи чего формируются запросы к базе данных?
  • Чем отличается Statement от PreparedStatement?
  • Как осуществляется запрос к базе данных и обработка результатов?
  • Как вызвать хранимую процедуру?
  • Как закрыть соединение с базой данных?

к оглавлению

Тестирование

  • Что такое «модульное тестирование»?
  • Что такое «интеграционное тестирование»?
  • Чем интеграционное тестирование отличается от модульного?
  • Какие существуют виды тестовых объектов?
  • Чем stub отличается от mock?
  • Что такое «фикстуры»?
  • Какие аннотации фикстур существуют в JUnit?
  • Для чего в JUnit используется аннотация @Ignore?

к оглавлению

Журналирование

  • Какие существуют типы логов?
  • Из каких частей состоит система журналирования log4j?
  • Что такое Logger в log4j?
  • Что такое Appender в log4j?
  • Что такое Layout в log4j?
  • Перечислите уровни журналирования в log4j? Назовите порядок их приоритетности.
  • Какие существуют способы конфигурирования log4j?

к оглавлению

UML

  • Что такое UML?
  • Что такое «диаграмма», «нотация» и «метамодель» в UML?
  • Какие существуют типы диаграмм?
  • Какие виды отношений существуют в структурной диаграмме классов?

к оглавлению

XML

  • Что такое XML?
  • Что такое DTD?
  • Чем well-formed XML отличается от valid XML?
  • Что такое «пространство имен» в XML?
  • Что такое XSD? В чём его преимущества перед XML DTD?
  • Какие типы существуют в XSD?
  • Какие вы знаете методы чтения XML? Опишите сильные и слабые стороны каждого метода.
  • Когда следует использовать DOM, а когда SAX, StAX анализаторы??
  • Какие вы знаете способы записи XML?
  • Что такое JAXP?
  • Что такое XSLT?

к оглавлению

Шаблоны проектирования

  • Что такое «шаблон проектирования»?
  • Назовите основные характеристики шаблонов.
  • Типы шаблонов проектирования.
  • Приведите примеры основных шаблонов проектирования.
  • Приведите примеры порождающих шаблонов проектирования.
  • Приведите примеры структурных шаблонов проектирования.
  • Приведите примеры поведенческих шаблонов проектирования.
  • Что такое «антипаттерн»? Какие антипаттерны вы знаете?
  • Что такое Dependency Injection?

к оглавлению

Основы HTML

  • Что такое «HTML»?
  • Что такое «XHTML»?
  • Что такое DOCTYPE и зачем он нужен?
  • Для чего предназначен тег <head>?
  • Чем отличается <div> от <span>?
  • Как обозначаются комментарии в HTML?
  • Каким образом задаётся адрес документа, на который следует перейти?
  • Как сделать ссылку на адрес электронной почты?
  • Для чего предназначен тег <em>?
  • Для чего предназначены теги <ol>, <ul>, <li>?
  • Для чего предназначены теги <dl>, <dt>, <dd>?
  • Для чего предназначены теги <tr>, <th>, <td>?
  • Обязательно ли писать атрибут alt в теге <img>?
  • В каком регистре лучше писать HTML-код?
  • Что такое «мнемоника (entity)»?

к оглавлению

Основы CSS

  • Что такое «CSS»?
  • Как в CSS обозначаются комментарии?
  • Что такое «селектор»?
  • Перечислите основные виды селекторов.
  • Что такое псевдокласс?
  • Какие существуют селекторы аттрибутов?
  • В чем разница между #my и .my?
  • В чем разница между margin и padding?
  • В чем заключается разница между значениями 0 и auto в свойстве margin?
  • Какое свойство задает цвет фона?
  • Как убрать подчеркивание для всех ссылок на странице?
  • Для чего используется свойство clear?
  • Как сделать жирным текст во всех элементах <p>?
  • Как задать красный цвет для всех элементов, имеющих класс red?

к оглавлению

Основы WEB

  • Что такое WWW?
  • Что такое W3C?
  • Какие существуют уровни модели OSI?
  • Что такое TCP/IP?
  • Что такое UDP?
  • Чем отличаются TCP и UDP?
  • Что такое протокол передачи данных? Какие протоколы вы знаете?
  • Что такое HTTP и HTTPS? Чем они отличаются?
  • Что такое FTP?
  • Чем отличаются методы GET и POST?
  • Что такое MIME тип?
  • Что такое Web server?
  • Что такое Web application?
  • Что такое Application server?
  • Чем отличаются Web server и Application server?
  • Что такое AJAX? Как принципиально устроена эта технология?
  • Что такое WebSocket?
  • Что такое JSON?
  • Что такое JSON схема?
  • Что такое cookies?
  • Что такое «сессия»?
  • Что такое «авторизация» и «аутентификация»? Чем они отличаются?

к оглавлению

Дополнительные материалы

к оглавлению

Источники