Pull to refresh

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

Reading time 3 min
Views 41K
Здесь нету примеров идеального кода, пяти шагов «как получить сертификат с вероятностью 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, спасибо за внимание :)

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

UPD: все вопросы из здесьссылка очень похожи на реальные
Tags:
Hubs:
+28
Comments 29
Comments Comments 29

Articles