Общие вопросы по Java
Одним из разделов в тесте по Java является раздел общих вопросов. Сюда входят вопросы следующего плана:
- Основные термины (класс, объект, и т.д.)
- Основные аббревиатуры (JDK, JRE, и т.д.)
- Понимание принципов работы виртуальной машины java
- Понимание принципов работы сборщика мусора (garbage collector)
- Умение запустить простую программу
На что обратить внимание
В первую очередь при ответе на любой вопрос нужно четко понять, о чем идет речь в вопросе. Это особенно важно для сложных вопросов.
Если вопрос содержит фрагмент кода на java сперва убедитесь, что код компилируется, затем пересмотрите код на возможные ошибки времени выполнения (runtime exceptions) и только потом переходите к "выполнению" кода в уме.
Если в вопросе требуется выбрать несколько вариантов ответов, не спешите и прочтите все варианты, затем начните читать еще раз и отмечайте правильные, и наконец прочтите варианты ответов еще раз чтобы убедиться в правильности ответов.
Примеры общих вопросов по Java
Ниже представлены несколько примеров общих вопросов по Java с указанием правильных ответов и минимальным объяснением.
Пример 1
Что произойдет после компиляции кода и запуска программы без аргументов:
public class Main {
public static void main(String[] args) {
System.out.println(args.length);
}
}
- 1. Код не скомпилируется
- 2. Код скомпилируется, но во время выполнения будет выброшено исключение NullPointerException
- 3. Код скомпилируется, а на консоль будет выведено число '0'
- 4. Код скомпилируется, но ничего не выведет на консоль
Правильным ответом бует ответ номер 3. Метод main является точкой входа в любую программу на java. Данный метод может принимать параметры снаружи. Эти параметры помещаются в массив и затем могут использоваться внутри программного кода. Массив аргументов инициализируется изначально, а значит NullPointerException брошен не будет, даже при нулевом количестве аргументов.
Пример 2
Как можно уничтожить объект в Java?
- 1. присвоить null всем ссылкам на объект
- 2. вызвать Runtime.getRuntime().gc()
- 3. вызвать метод finilize() у объекта
- 4. этого нельзя сделать вручную
- 5. вызвать деструктор у объекта
Приавильный ответ - 4 - этого нельзя сделать вручную. Метод finilize используется в основном для освобождения ресурсов перед уничтожением объекта. Понятия деструктор в java нет (деструкторы есть в c++).
Вызов Runtime.getRuntime().gc() всего лишь дает запрос виртуальной машине о том, что было бы неплохо начать сборку мусора.
Наконец присвоение всем ссылкам на объект значения null сделает объект доступным для сборщика мусора, но нет никакой гарантии, когда сборка мусора начнется и начнется ли вообще.