Небольшой тест на знание основ синтаксиса Java.

Небольшой тест на знание основ синтаксиса Java.

Краткая предыстория. Довелось мне как-то читать лекции по Java выпускникам ВУЗов и молодым специалистам при приеме на работу. Это был мой первый опыт преподавания, первые грабли и шишки. И вот, моё первое занятие: знакомлюсь со студентами, задаю вопросы и начинает у меня складываться неприятное ощущения — ребята уже всё знают. А неприятное оно потому что в это мне не очень верится. Думаю, что многие меня поймут. В начале следующего занятия дал им нижеследующий тест на 15 минут и результат удовлетворил не только меня, но и студентов. Без ошибок не написал никто — средний результат — 50%. Какая польза от теста — закрепление материала, демонстрирует уже работающим программистам, что не всё так просто и режим «расслабона» надо выключить, выявляет белые пятна. Практика хорошая для лекций подобного типа, только требует много времени на первоначальное написание, но, к счастью, легко переиспользуется.

Дисклеймер:

  • я знаю, что вы знаете, что все знают, что так никто не пишет. Да, и шутка про вырывания рук тем кто так пишет была смешна первые n раз;
  • тест не призван продемонстрировать профпригодность разработчика;
  • это будет очень полезно при сдаче на сертификаты от Oracle;
  • не претендую на исключительные авторские права, какие-то вопросы можно считать боянами.
  • правильных ответов нет. А надо? =)

 

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

Комментариев нет

Добавить комментарий