Что я не ожидал увидеть в тесте Java Programmer I (1Z0-803)

от автора

Здесь нету примеров идеального кода, пяти шагов «как получить сертификат с вероятностью 100%, гарантия». Нету даже фотографий котиков :/

В лучших стилях жанра «Смотрите, я получил сертификат!»

Случилось это…

В Праге, в центре тестирования Gopas, посредником был «Pearson VUE». Стоимость — 245 USD.

Довела меня до этого…

Обещанная на работе прибавка к зарплате. Осертифицироваться я хотел давно, но всегда успешно находил отговорку для переноса экзамена на «более подходящее время».

Терпение и труд все перетрут

Если у вас есть опыт программирования на Java (каких-нибудь 1+ лет), то особая подготовка не нужна, просмотрите темы экзамена и восстановите возможные пробелы. Лично я глянул sample questions и попросил экзамен не с самого утра дабы выспаться.

Неожиданности

Следующие примеры не делают экзамен сложным, но упоминание о них, вероятно, может быть полезными для людей, которые тоже решили пренебречь подготовкой.

  1. Изменение и передача аргумента в одной строчке, по типу
    doStuff(i++, ++j, (k+=1)); 

    «И где неожиданность?» — спросите вы.
    Да, ничего сложного, но… В начале теста было два-три примера где нужно просто определить результат вызова метода с подобными изменениями аргументов. А потом где-то в 15-ти (число очень «на глаз») вопросах над аргументами по-разному «издевались» и от этого зависел правильный ответ, хотя пример был на совершенно другую тему. Т.е. если вдруг по каким-то причинам вы запутались с аргументами, то получите вдобавок минусы по наследованию и обработке исключений например.

  2. == vs. equals
    Тема заезженная и я предполагал, что Oracle захочет основательно ее проверить, но количество вопросов на эту тему превысило мои ожидания. На вскидку их было около десяти (всего вопросов 90). Мы люди взрослые и оператор "==" для сравнения объектов обычно не используем, поэтому некоторые нюансы забываются. В основном надо было оценить результат сравнения String’ов, было банальное типа
    String s = "im string"; String s2 = new String("im string");  System.out.println(s == s2); System.out.println(s.equals(s2)); 

    а было и что-то типа

    public class HelloWorlder {      public String name;      public HelloWorlder(String name){         this.name = name;     }      public static void main(String[] args){         HelloWorlder h = new HelloWorlder("String");         HelloWorlder h2 = new HelloWorlder("String");          System.out.println(h.name == h2.name);         System.out.println(h.name.equals(h2.name));     }  } 

    Кроме String’ов сравнивали объекты без переопределенного equals, но это просто к слову.

  3. «Сделай это инкапсулированно» — говорили они.
    Попалось мне такое три раза, всегда давался класс (или два) и предлагались на выбор несколько изменений кода (типа поменять видимость переменной, добавить метод и т.п.). Два вопроса были абсолютно нормальными, а вот в третьем путем исключения остался один вариант — объявить переменную с default visibility как final. Инкапсуляция. Я допускаю, что что-нибудь упускаю, но остальные варианты определенно не подходили.
  4. Семь раз отмерь
    Как я и догадывался из sample questions, очень много вопросов было на внимательность. Примеры:
    • большой кусок кода, который запускался
      public static int main(String[] args) 

      или

      public static void main(String args) 

    • Высчитывания сколько раз в консоль выпишется какая-нибудь цифра в результате выполнения while-цикла вложенного в for-цикл, каждый имеет continue, break, exceptions и т.п. Не торопимся и считаем, времени у нас достаточно.
    • Compilation failed, Runtime exception, Exception at line «n» и т.п. Такие варианты ответов попадаются часто (самый популярный — Compilation failed). В каждом таком примере необходимо внимательно смотреть все названия, декларации, вызываемые методы, параметры и т.д.

Но бояться нечего, большинство вопросов близки к практике. Есть и интересные вопросы, мне понравилось задание «выберите три bad practices» из предложенных, запомнилась инициализация char массива

char[] array = { 97, 'b' }; 

надо было вспомнить, что 97 это ‘a’.

Если вам кажется, что сертификат стоит дороже, чем польза от него, то можете попробовать договориться с работодателем на оплату оного, лично мне удалось.

Не забываем, что 1 / 2 = 0, спасибо за внимание, если интересуют примеры — обращайтесь, пока помню 🙂

Послесловие: При написании поста постоянно вспоминал пословицу «Краткость — сестра таланта».

ссылка на оригинал статьи http://habrahabr.ru/post/197694/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *