
- •Что такое ооп?
- •Что такое «абстракция»?
- •Расскажите про основные понятия ооп: «класс», «объект», «интерфейс».
- •Чем различаются jre, jvm и jdk?
- •Какие существуют модификаторы доступа?
- •О чем говорит ключевое слово final?
- •Что вы знаете о функции main()?
- •Какие логические операции и операторы вы знаете?
- •Что такое тернарный оператор выбора?
- •Где и для чего используется модификатор abstract?
- •Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
- •Чем абстрактный класс отличается от интерфейса? в каких случаях следует использовать абстрактный класс, а в каких интерфейс?
- •Зачем нужны и какие бывают блоки инициализации?
- •Могут ли нестатические методы перегрузить статические?
- •Как получить доступ к переопределенным методам родительского класса?
- •Можно ли объявить метод абстрактным и статическим одновременно?
- •В чем разница между членом экземпляра класса и статическим членом класса?
- •Где разрешена инициализация статических/нестатических полей?
- •Какие типы классов бывают в java?
- •Расскажите про вложенные классы. В каких случаях они применяются?
- •Что такое «статический класс»?
- •Какие существуют особенности использования вложенных классов: статических и внутренних? в чем заключается разница между ними?
- •Что такое «локальный класс»? Каковы его особенности?
- •Что такое «анонимные классы»? Где они применяются?
- •Как работает сборщик мусора?
- •Что такое «пул строк»?
- •Что такое finalize()? Зачем он нужен?
- •Что произойдет со сборщиком мусора, если выполнение метода finalize() требует ощутимо много времени, или в процессе выполнения будет выброшено исключение?
- •Чем отличаются final, finally и finalize()?
- •Расскажите про приведение типов. Что такое понижение и повышение типа?
- •Почему строка является популярным ключом в HashMap в Java?
- •Можно ли использовать строки в конструкции switch?
- •Какая основная разница между String, StringBuffer, StringBuilder?
- •Что такое класс Object? Какие в нем есть методы?
- •Какими свойствами обладает порождаемое equals() отношение эквивалентности?
- •Правила переопределения метода Object.Equals().
- •Могут ли у разных объектов быть одинаковые hashCode()?
- •Опишите иерархию исключений.
- •Какие виды исключений в Java вы знаете, чем они отличаются?
- •Какой оператор позволяет принудительно выбросить исключение?
- •О чем говорит ключевое слово throws?
- •Как написать собственное («пользовательское») исключение?
- •Опишите работу блока try-catch-finally.
- •В чем разница между классами java.Util.Collection и java.Util.Collections?
- •Как поведёт себя коллекция, если вызвать iterator.Remove()?
- •Чем отличается ArrayList от LinkedList? в каких случаях лучше использовать первый, а в каких второй?
- •Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
- •LinkedList — это односвязный, двусвязный или четырехсвязный список?
- •Как устроен HashMap?
- •Что будет, если добавлять элементы в TreeSet по возрастанию?
- •Расскажите о модели памяти Java?
- •Что такое «потокобезопасность»?
- •Чем отличается процесс от потока?
- •Что такое «зелёные потоки» и есть ли они в Java?
- •Каким образом можно создать поток?
- •Чем различаются Thread и Runnable?
- •В чём заключается разница между методами start() и run()?
- •Как принудительно запустить поток?
- •Что такое «монитор» в Java?
- •Дайте определение понятию «синхронизация».
- •Какие существуют способы синхронизации в Java?
- •В каких состояниях может находиться поток?
- •Можно ли создавать новые экземпляры класса, пока выполняется static synchronized метод?
- •Зачем может быть нужен private мьютекс?
- •Как работают методы wait() и notify()/notifyAll()?
- •В чем разница между notify() и notifyAll()?
- •Для чего используется ключевое слово volatile, synchronized, transient, native?
- •Что значит «приоритет потока»?
- •Почему не рекомендуется использовать метод Thread.Stop()?
- •Что происходит, когда в потоке выбрасывается исключение?
- •Что такое «пул потоков»?
- •Что будет, если очередь пула потоков уже заполнена, но подаётся новая задача?
- •В чём заключается различие между методами submit() и execute() у пула потоков?
- •В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
- •Чем полезны неизменяемые объекты?
- •Даны 3 потока т1, т2 и т3? Как реализовать выполнение в последовательности т1, т2, т3?
- •Что такое «шаблон проектирования»?
- •Назовите основные характеристики шаблонов.
- •Типы шаблонов проектирования.
- •Приведите примеры основных шаблонов проектирования.
- •Приведите примеры порождающих шаблонов проектирования.
- •Приведите примеры структурных шаблонов проектирования.
- •Приведите примеры поведенческих шаблонов проектирования.
- •Что такое «антипаттерн»? Какие антипаттерны вы знаете?
Какие виды исключений в Java вы знаете, чем они отличаются?
Throwable - базовый класс для всех исключительных ситуаций;
Error - базовый класс для исключительных ситуаций, которые вызваны серьезными сбоями в работе JVM. При возникновении данной ситуации скорее всего потребуется переустановка JVM; Эти исключение не перехватываемые.
Exception - Базовый класс для исключений, с которыми дело мы имеем в программах, т.е. исключение ввода-вывода.
RuntimeException - Все исключения, кроме данного, должны быть перехвачены. Это неконтролируемые классы, такие, как деление на ноль (“ArithmeticException”). По логике программы нужно смотреть, где может возникнуть такое исключение и где его нужно обрабатывать, а где это сделать в принципе невозможно..
Какой оператор позволяет принудительно выбросить исключение?
Это оператор throw: throw new Exception();
О чем говорит ключевое слово throws?
Модификатор throws прописывается в сигнатуре метода и указывает на то, что метод потенциально может выбросить исключение с указанным типом.
Как написать собственное («пользовательское») исключение?
Вообще, в Java предусмотрены классы исключений практически на все ситуации, но может появится такая ситуация, когда нельзя подобрать по смыслу подходящее исключение. В такой ситуации можно создать свой класс исключительной ситуации. Для того, чтобы это сделать, создаём обычный класс и делаем его наследником класса Exception. Далее создаем конструктор этой реализации. Потом создаем метод-конструктор, но со строковым параметром, где мы это сообщение передаем:
public class MyException extends Exception {
public MyException() {}; // Конструктор
public Myexception (String msg) {
super(msg);
}
}
Единственное, что добавляет этот код к стандартным возможностям - это новое имя исключения. Таким образом можно обработать свою исключительную ситуацию.
Опишите работу блока try-catch-finally.
try {
...
} catch (Имя_класса_исключения е) {
... } catch(...) {
...
}
...
После try мы пишем код, который может потенциально сгенерировать исключение, то есть то исключение, которое возникает в этом блоке, будет перехвачено данным блоком, в заголовке блока catch мы указываем имя класса исключения, для которого предназначен данный блок, и этот блок будет срабатывать только при возникновении данного исключения или исключения которое порождено от данного. Блоков catch может быть несколько
Возможно ли использование блока try-finally (без catch)?
Такая запись допустима, но смысла в такой записи не так много, всё же лучше иметь блок catch, в котором будет обрабатываться необходимое исключение.
Может ли один блок catch отлавливать сразу несколько исключений?
В Java 7 стала доступна новая языковая конструкция, с помощью которой можно перехватывать несколько исключений одним блоком catch:
try {
//...
} catch(IOException | SQLException ex) {
//...
}
Всегда ли исполняется блок finally?
Код в блоке finally будет выполнен всегда, независимо от того, выброшено исключение или нет.
Существуют ли ситуации, когда блок finally не будет выполнен?
Например, когда JVM «умирает» - в такой ситуации finally недостижим и не будет выполнен, так как происходит принудительный системный выход из программы:
try {
System.exit(0);
} catch(Exception e) {
e.printStackTrace();
} finally { }
Что такое «коллекция»?
«Коллекция» - это структура данных, набор каких-либо объектов. Данными (объектами в наборе) могут быть числа, строки, объекты пользовательских классов и т.п.
Назовите основные интерфейсы JCF и их реализации.
Коллекции в джава разбиты на 3 категории:
List (список);
Set (множество);
Map (отображение);
Эти интерфейсы составляют основу для построения классов коллекции Java.
Лист - список объектов. Объекты в список можно добавлять(add), изменять(set), удалять(remove) и извлекать(get). Также существует возможность организации прохода по списку при помощи итератора - вспомогательного объекта, который используется для прохода по коллекции объекта. Классы коллекции: ArrayList - простой список объектов
LinkedList - связанный список объектов
Set - множество неповторяющихся объектов. Те же возможности, что и у List, но объект может входить в множество только 1 раз. Классы коллекции:
HashSet: набор объектов или хеш-множество, где каждый элемент имеет ключ - уникальный хеш-код
TreeSet: набор отсортированных объектов в виде дерева
Map - отображение, ассоциативный массив. В Map добавляется не 1 объект, а пара в виде ключ-значение. Добавление пары с уже существующим Map-ключом приводит к замене, а не к добавлению. Т.е. идентифицирующим полем является ключ и ему соответствует какое-то значение. Получается, что набор ключей - это Set, а сами значения - список. Классы коллекции: HashMap: структура данных в виде словаря, в котором каждый объект имеет уникальный ключ и некоторое значение
TreeMap: структура данных в виде дерева, где каждый элемент имеет уникальный ключ и некоторое значение.