Небольшой тест на знание основ синтаксиса Java.
Краткая предыстория. Довелось мне как-то читать лекции по Java выпускникам ВУЗов и молодым специалистам при приеме на работу. Это был мой первый опыт преподавания, первые грабли и шишки. И вот, моё первое занятие: знакомлюсь со студентами, задаю вопросы и начинает у меня складываться неприятное ощущения — ребята уже всё знают. А неприятное оно потому что в это мне не очень верится. Думаю, что многие меня поймут. В начале следующего занятия дал им нижеследующий тест на 15 минут и результат удовлетворил не только меня, но и студентов. Без ошибок не написал никто — средний результат — 50%. Какая польза от теста — закрепление материала, демонстрирует уже работающим программистам, что не всё так просто и режим «расслабона» надо выключить, выявляет белые пятна. Практика хорошая для лекций подобного типа, только требует много времени на первоначальное написание, но, к счастью, легко переиспользуется.
Дисклеймер:
- я знаю, что вы знаете, что все знают, что так никто не пишет. Да, и шутка про вырывания рук тем кто так пишет была смешна первые n раз;
- тест не призван продемонстрировать профпригодность разработчика;
- это будет очень полезно при сдаче на сертификаты от Oracle;
- не претендую на исключительные авторские права, какие-то вопросы можно считать боянами.
- правильных ответов нет. А надо? =)
- Выберите все корректные идентификаторы (имена переменных и классов) с т.з. поддержки языком:
- __B_MyCla$$99
- A$AP
- _variable
- java.lang
- sum41
- стоимостьПоездки
- false
- Static
- 2018_report
- Ни один из вариантов
- Выберите строки, которые не приведут к ошибке компиляции.
- int i1 = 1_234;
- int i = 9L;
- int i = 0b101;
- long big = 0xFFFF__FF_FFL;
- int i = 9f;
- int amount = 1_2_;
- float f1 = 10.0;
- float f2 = 1.0L;
- float f3 = 0xFeFeL;
- double d0 = 0xE;
- double d1 = 1_234_.0;
- double d2 = 1_234._0;
- double d3 = 1_234.0_;
- double d4 = 1_234.0;
- double d5 = 10L;
- Ни один из вариантов
- Сколько раз будет выведена фраза «Hello World»?
3: for(int i=0; i<10 ; ) { 4: i = i++; 5: System.out.println("Hello World"); 6: }
-
- 4
- 9
- 10
- 11
- Ошибка компиляции на строчке 3.
- Ошибка компиляции на строчке 5.
- Программа войдет в бесконечный цикл
- Будет выводить пока не упадет с java.lang.StackOverflowError
-
- Выберите строки, которые не приведут к ошибке компиляции.
- int a = 10; int b = 20; long sum = a + b;
- byte a = 10, b = 20, sum = (byte) a + b;
- byte a = 10, b = 20, sum = (byte)(a + b);
- short a = 10, b = 20, sum = (byte)a + (byte)b;
- short a = 10; byte b = 20; short sum = a + b;
- int a = 10, b = 20, sum = a + b;
- Integer a = 10; int b = 20; Long sum = a + b;
- Long a = new Long(10); byte b = 20; Long sum = a + b;
- Какие из перечисленных способов объявления (и инициализации) массивов не_скомпилируются?
- int[][] scores = new int[5][];
- Object[][][] cubbies = new Object[3][0][5];
- String beans[] = new beans[6];
- java.util.Date[] dates[] = new java.util.Date[2][];
- int[][] types = new int[];
- int[][] java = new int[][];
- int[][] braces = new int[][]{{1},{}};
- int[][] ints2 = {{}};
- int ints3[] = {1, 2, 3};
- int ints4 [], ints5[] = {1, 2, 3}, i = 4;
- int[][] ints5 = {};
- public static void main(String[] args) { … }
- public static void main(String[][] args) { … }
- abstract void do(String… args);
Комментариев нет