Статьи

Сертификация Java: подтверждать или не подтверждать

Профессиональная сертификация всегда немного спорный вопрос, с пользой против стоимости / времени, обсуждавшихся тех, кто имеет право. Благодаря Java-сертификации Oracle я считаю, что есть две основные аудитории, которые могут извлечь выгоду:

  • Те, кто начинает карьеру в области программного обеспечения. Твердый опыт работы с наглядным кодом всегда будет главным требованием при найме на работу от потенциальных работодателей. Однако в отсутствие этого сертификаты Java являются объективным способом продемонстрировать базовый уровень владения соответствующим навыком. С возможностью младшего программиста, когда кандидаты имеют ограниченный стаж работы, сертификация может быть разницей между пребыванием в куче резюме и попаданием в кресло для интервью. Точно так же, если у вас есть солидная история работы, но вы претендуете на работу, которая ориентирована на API, который вы не использовали в проекте, сертификация может помочь восполнить этот пробел в вашем резюме.
  • Те, кто ищет новые навыки или для объективной проверки своего предметного опыта. Oracle приложила усилия для того, чтобы их сертификаты отражали навыки и знания, необходимые для профессиональной деятельности. Если вы новичок в Java-выпуске или API, подготовка к этим экзаменам может помочь установить границы того, какие темы вам действительно нужно знать. Если у вас уже есть опыт работы с предметом, вы можете использовать эти экзамены, чтобы убедиться, что вы действительно знаете столько, сколько вы думаете.

Стать сертифицированным партнером Oracle, программистом Java SE 8

Несколько лет назад Oracle обновила свои пути сертификации Java. В то время они ввели разные уровни сертификации. Следуя по пути Java-программиста, вы должны пройти сертификацию «Associate» раньше других (например, сертификации «Professional» или «Master»). Из этого правила есть одно исключение — если вы уже прошли предыдущую сертификацию Java, у них есть доступные пути обновления.

Для этого сертификата требуется один экзамен: Java SE 8 Programmer I 1Z0-808. Чтобы сдать этот экзамен, вы начинаете с покупки ваучера в Oracle University. После этой покупки вы теперь можете зарегистрироваться для сдачи экзамена в проктальном экзаменационном центре. Экзамен содержит набор из 77 вопросов с несколькими вариантами ответов, которые способствуют вашему окончательному баллу. Возможно, что во время экзамена будет добавлено больше вопросов, однако они «не оценены». К сожалению, вам не сказали, какие вопросы оцениваются, а какие нет. Весь экзамен должен быть завершен в течение 150 минут.

Во время экзамена вы сможете записывать заметки по материалам, предоставленным центром. Абсолютно никакие другие записи не могут быть внесены в комнату для тестирования, и вам придется вернуть материал, который они предоставили после завершения экзамена. В этот момент вам, скорее всего, не терпится узнать свои результаты, но центр тестирования не предоставит эту информацию. Вместо этого вам нужно подождать, пока ваш счет будет опубликован на веб-сайте Oracle CertView. Если вы сдали экзамен с баллом 65% и выше, вы сдали и получили статус Oracle Certified Associate, Java SE 8 Programmer.

Для получения полной информации и начать процесс регистрации, перейдите в Oracle University .

Просто убедитесь, что вы регистрируетесь на экзамен Java SE 8 Programmer I 1Z0-808, поскольку на этой странице также перечислены предыдущие экзамены для SE 5/6 и SE 7.

Экзаменационные советы

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

Прочитайте то, что на самом деле написано … не то, что вы ожидаете быть там .

Распространенное предложение — сначала проверить, является ли один из ответов «Это не компилируется». Теория заключается в том, что если это не один из доступных вариантов, вам не нужно беспокоиться о вопросе, пытаясь обмануть вас хитрой ошибкой компиляции. Это, конечно, правда, однако я считаю, что это заставляет людей лениво читать. Позвольте привести пример. Каков вывод следующего кода?

01
02
03
04
05
06
07
08
09
10
11
public class Person {  
    private String fullName = "Jason Shapiro";
     
    public void Person() {
        fullName = "J. Shapiro";
    }
 
    public static void main(String[] args) {
        System.out.println( new Person().fullName );
    }
}

Допустим, закралась тестовая тревога, и ваша первая мысль: «Хм… разве не было какого-то правила, которое говорит, что я не могу получить доступ к переменным экземпляра в статическом методе? Я знаю, что я получаю доступ к fullName, отправляя сообщение Person, но оно находится внутри main… ». Итак, вы быстро проверяете список доступных опций и отмечаете, что« Не компилируется »в списке нет. Вы вздыхаете с облегчением, правильно полагаете, что это законно, и быстро выбираете «J. Шапиро », так как конструктор будет выполнен после явной инициализации fullName. К сожалению, этот ответ неверен. Если вы посмотрите внимательно (и я уверен, что некоторые из вас поймали это), обратите внимание, что Person () не является конструктором. Имеет возвращаемое значение; следовательно, это метод.

Практикуйтесь в чтении кода в разных форматах.

Есть общее ощущение, что чем больше у вас опыта с Java, тем легче эти экзамены. Хотя это обычно так, опытные разработчики часто привыкают к определенному стилю кодирования. Когда представленный стиль отличается, это может стать проблемой для читателя. Так какие вещи могут быть разными? Использование пробелов и фигурных скобок являются основными виновниками. Вы должны, по крайней мере, убедиться, что вы знаете правила, когда скобки требуются, а когда они являются необязательными. Например, вы можете использовать цикл do… while так:

1
2
3
do {
    System.out.println(i.next().fullName);
} while( i.hasNext() );

Но вы также должны привыкнуть читать это так:

1
do System.out.println(i.next().fullName); while( i.hasNext() );

Точно так же вы можете быть знакомы с многомерными массивами, такими как:

1
int[][][] studentIdsByLocation = new int[20][83][2];

… но знаете ли вы, что следующий синтаксис также является законным?

1
int[] studentIdsByLocation[][] = new int[20][83][2];

Помните, что все набранные вопросы стоят одного очка. Даже действительно сложные!

У вас есть 150 минут, чтобы ответить на все вопросы, поэтому, если вы обнаружите, что у вас уходит слишком много времени на один вопрос, отметьте его как вопрос, к которому можно вернуться в конце. Лучше пропустить один момент по сложному вопросу, чем, возможно, не хватит времени на вопросы, ответы на которые вы знаете!

Следуйте вашим заказам!

Есть много правил упорядочения и приоритета в Java. После нескольких лет программирования легко забыть все, кроме самых распространенных примеров. Первый, о котором нужно напомнить, это порядок приоритета операторов. Создайте случайное выражение с несколькими операторами и проверьте сами, можете ли вы определить правильные результаты. Возможно, вы помните, что умножение происходит перед сложением, но как все это согласуется с операторами post и pre-increment? Например, каковы значения x и y после выполнения этого кода:

1
2
3
4
5
6
7
int x = 3;
int y = 5;
y = y++;
y = y++;
y = y++;
x = 4 * ++y - 3 + x * y;
x = x++;

Если вы сказали что-то кроме x = 39 и y = 6, вам захочется потратить немного больше времени на эту тему. В этом конкретном примере строки y = y ++; и х = х ++; действительно не имеет никакого эффекта. Оба используют оператор постинкремента, поэтому текущее значение возвращается и присваивается переменной, перезаписывая приращение.

Другая связанная тема, с которой нужно ознакомиться, это порядок загрузки классов и создания объектов. Вы должны быть знакомы с тем, когда статические блоки инициализации вызываются (и что они вызываются только один раз в течение жизни класса), и как они работают с блоками инициализации экземпляра, встроенными переменными инициализации и конструкторами. Создайте трехуровневую цепочку иерархии объектов (например, Person -> Employee -> Consultant) и добавьте все эти структуры инициализации с помощью операторов печати. Затем создайте экземпляр наиболее конкретного типа (консультант) — дважды. Попробуйте другой пример, в котором вы просто создаете переменные Консультант, Сотрудник и Персона (оставьте их пустыми). Какие печатные выписки называются? Запомните этот процесс загрузки классов и создания экземпляров.

Наконец, ознакомьтесь с порядком выбора при вызове перегруженного метода с примитивным аргументом.

Если у нас есть следующие методы:

1
2
3
public void computeIt(Long val) { }
public void computeIt(int... val) { }
public void computeIt(double val) { }

… И сделайте следующий вызов метода:

1
obj.computeIt(5);

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

  1. Точное совпадение примитивов с параметром метода имеет самый высокий приоритет при выборе метода.
  2. Если точный тип примитива недоступен для byte, short, char, int или long:
    1. Доступен следующий примитив целого числа большего размера (byte, short, int и long).
    2. Наименьший возможный десятичный примитив (float, double).
  3. … и для поплавка:
    1. Двойной примитив.
  4. Точный класс-оболочка (в данном случае, Integer).
  5. Варарги точного примитивного типа.
  6. Если varargs для точного примитива недоступен для byte, short, char, int или long:
    1. Доступно следующее большее число целых чисел varargs (byte, short, int и long).
    2. Доступны следующие наименьшие размеры десятичных переменных (число с плавающей запятой, двойное число).
  7. … и для поплавка:
    1. Двойные Варарги.
  8. Наконец: varargs точного класса оболочки.

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

Неизменность и захват возвращаемых значений

Из классов, которые вы должны знать для экзамена — все из которых перечислены здесь .

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

1
2
3
String fullName = "Jason Shapiro";
fullName.toUpperCase();
System.out.println(fullName);

Если вы читаете слишком быстро, вы можете забыть, что строки являются неизменяемыми, и, следовательно, неправильно предполагать, что fullName теперь «JASON SHAPIRO». Если бы код был написан следующим образом, «JASON SHAPIRO» был бы правильным выводом:

1
2
3
String fullName = "Jason Shapiro";
fullName = fullName.toUpperCase();
System.out.println(fullName);

Это, вероятно, правило, с которым вы уже знакомы, но беспокойство при тестировании в сочетании с ограничением по времени позволяет легко пропустить неправильный код из-за неизменности. Поэтому, прежде чем сдавать экзамен, напомните себе, какие объекты являются неизменяемыми, и всегда проверяйте, фиксируется ли возвращаемое значение.

Для получения дополнительных советов и изучения тем, охватываемых экзаменом Associate, посетите мой онлайн-курс в Udemy:

Изучите Java SE 8 и подготовьтесь к экзамену OCA по программированию на Java

Что я собираюсь получить от этого курса?

  • Читать и писать основные программы командной строки на Java
  • Знать, как использовать интегрированную среду разработки (Eclipse) для разработки и отладки программ
  • Создание HTML-документации (Javadoc) для кода
  • Получите полное представление о темах, рассмотренных на экзамене, чтобы стать сертифицированным партнером Oracle, программистом Java SE 8 (Java SE 8 Programmer I 1Z0-808)

Освойте основы Java и темы Oracle Certified Associate, экзамен по программированию для Java SE 8 (1Z0-808)!