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

в 17:14, , рубрики: java, oracle, никто не читает теги, сертификация, метки: , , ,

Здесь нету примеров идеального кода, пяти шагов «как получить сертификат с вероятностью 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, спасибо за внимание, если интересуют примеры — обращайтесь, пока помню :)

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

Автор: Encircled

Источник

Поделиться

* - обязательные к заполнению поля