Вопросы по синтаксису Java (элементы языка java)
Достаточно обширный раздел вопросов покрывает следующие темы:
- Ключевые слова - проверяет знание ключевых слов java, например for, switch, instanceof, class, throws и так далее.
- Операции - логические операции, арифметические, побитовые операции и так далее
- Управляющие конструкции которые отвечают за ход выполнения программы: циклы for, while, операции ветвления (if-else, switch)
- Основные типы данных - примитивы и их обертки, класс String
- Обработка исключительных ситуаций и ошибок, иерархия исключений: Throwable, Exception, Error, RuntimeException.
Вопросы проверяют как практические так и теоретические знания. Практические вопросы содержат фрагменты кода и требуют предельной внимательности при вычисления выражений в уме.
Вопросы касающиеся нововведений языка java (аннотации/annotations, параметризируемые типы/generics) сведены к минимуму. Вместо этого больше проверяется внимательность тестируемого и понимание им некоторых java-специфических нюансов программирования.
На что обратить внимание
При ответе на вопросы по элемнтам языка java следует помнить, что java является регистро-зависимым языком, а также то, что в java есть некоторые ключевые слова, которые не используются, но являются зарезервированными - например goto.
При ответе на вопросы по управляющим конструкциям следите за блочностью, а также переходами continue, break.
При обработке исключительных ситуаций, возникших в коде, обратите внимание на видимость переменных в блоках try-catch-finally.
Пример вопросов по синтаксису и элементам языка.
Ниже представлено несколько примеров для того, чтобы продемонстрировать ответы на типичные вопросы данного раздела:
Пример 1
Каким будет результат компиляции и выполнения данного кода:
public class Switch {
public static void main(String[] args) {
int i = 3;
switch(i) {
default:
System.out.println("default");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
}
}
}
На первый взгляд может показаться, что правильный ответ - "default". Но если присмотреться внимательнее, в операторе switch пропущены ключевые слова break. Это значит, что после выполнения одного блока case ход выполнения программы будет идти на следующий оператор case и так далее. то есть правильным ответом будет:
default
1
2
Пример 2
Что напечатает следующий код:
int i = 0;
System.out.print(++i);
System.out.print(i++);
System.out.print(i);
Тут нужно понимать разницу между префиксными и постфиксными операциями инкремента и декремента. В постфиксных операциях значение сначала используется а затем изменяется, а в префиксных - наоборот.
Значит во фрагменте кода первым будет напечатано число 1. Затем значение 1 опять будет использовано для печати и только потом увеличено на 1. Третьим будет напечатано число 2. Итого ответ - 112.