Путешествие на планету Java. Мой опыт прохождения cертификации Java 11 Developer
Меня зовут Евгений и более 5 лет я занимался решениями в области Building Information Modelling (BIM), CAD- и CAE-решениями с использованием DSL DesignScript и Python. В 2014 году решил сменить профиль и заняться разработкой на Java. Успел поработать в области разработки и поддержки приложений для настройки компьютерных сетей и управления ими. Сейчас работаю Java-разработчиком в компании AB Soft (Одесса) и занимаюсь разработкой веб-приложений в предметной области облачных коммуникационных решений.
Идея получить сертификат Oracle Certified Professional: Java 11 Developer родилась в моей голове еще в далеком по меркам IT 2016 году, когда компания Oracle объявила о планах выпустить новую версию Java —
Иллюстрации: Дмитрий Яценко
Зачем вообще нужен сертификат?
Вопрос холиварный, как и вопрос, нужно ли программисту специальное высшее образование. С одной стороны, сертификат не дает никаких преимуществ. С другой стороны, его наличие может зацепить глаз HR, особенно в ситуации с разработчиками, которые пришли из другого языка или переквалифицируются из тестировщиков. Кроме того, наличие сертификата покажет, что вы умеете ставить цели и достигать их.
Моими стимулами были:
- желание расширить и консолидировать свои знания и понимание Java, включая те части API, которые редко используются в текущих задачах;
- изучить новшества долгожданных Java 9...11, чтобы быть готовым к будущему, которое обязательно наступит (смахнул скупую мужскую слезу, ковыряя проект на EJB3.0).
Можно, конечно, добиться этих целей и без сертификации, но тем, кто знаком со SMART и с принципом кнута (потеря денег за попытку сертификации) и пряника (документ и значок в коллекцию), нетрудно понять, что так обучение проходит гораздо эффективнее.
Получать сертификат или нет — личное дело каждого. В этой статье я лишь постарался дать свои рекомендации по подготовке к экзамену.
Немного из истории сертификации
Если бы вы сертифицировались по Java 8 и более ранним версиям, то могли сдавать два типа экзамена, каждый из которых давал соответствующий титул: Associate либо Professional. Теперь же появилось одно значительное изменение: титула Oracle Certified Associate (OCA) не существует, и сдача первого экзамена не даст вам ни сертификата, ни титула. То есть чтобы получить сертификат Oracle Certified Professional 11 (OCP 11), вы должны сдать оба экзамена: и Java 11 Programmer I (1Z0-815), и Java 11 Programmer II (1Z0-816). Они основаны на старых OCA 8 (1Z0-808) и OCP 8 (1Z0-809) соответственно.
Много об Oracle Certified Professional: Java 11 Programmer I (1Z0-815)
В этой статье речь пойдет о первом из необходимых экзаменов, Oracle Certified Professional: Java 11 Programmer I (1Z0-815). Подготовка заняла у меня около двух месяцев (по два-три часа в день). На тот момент в интернете было не так много информации о самом экзамене, а обучающей литературы нет и поныне. Поэтому я надеюсь, что мои мысли прольют свет на его самые важные особенности и помогут читателям с легкостью сдать его.
Экзамен сдается на английском, так что ваш уровень языка должен быть достаточным для понимания технической литературы (к слову, вся подготовительная литература написана на нем).
По сути, сам экзамен проверяет знание основ Java без глубокого погружения в отдельные API (IO, NIO 2.0, Concurrency, Stream и т. д.). В основном вам придется работать либо компилятором (указать, скомпилируется ли код), либо JRE (указать на результат выполнения кода или на то, какой Exception будет выброшен).
Но при этом даже опытным программистам не стоит расслабляться и игнорировать подготовку, потому что составители тестов будут пытаться поймать вас на банальной невнимательности, а это не так уж и трудно, учитывая, что в написании компилируемого кода нам помогает IDE.
Пример. Какой тип данных (x + y)?
double x = 39.21; float y = 2.1;
Правильный ответ: строчка float y = 2.1
не компилируется, так как нет символа f после 2.1.
Или же вас попросят рассказать о результате выполнения кода, присланного одним из ваших восточных коллег:
public class Test { public void print(Integer x) { System.out.print("Integer"); } public void print(float x) { System.out.print("float"); } public void print(Object x) { System.out.print("Object"); } public static void main(String[] args) { Test t = new Test(); short s = 123; t.print(s); t.print(true); t.print(6.789); } }
Думаю, многих удивит результат в виде floatObjectObject
.
И подобных вопросов в тесте хватает. Так что рекомендую как минимум сдать mock-тесты и подтянуть те темы, в которых вы могли бы совершить ошибку.
Несмотря на то что для подготовки к экзамену я использовал книгу OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808 авторства Jeanne Boyarsky и Scott Selikoff, я не согласен с мнением авторов, утверждающих, что новый экзамен намного сложнее предыдущего ОСА 8 (1Z0-808). Так, например, я обнаружил всего несколько отличительных особенностей, которых не было в старом экзамене и книге OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808. Большинство из них — это фичи Java 9...11. Ниже я описал основные отличия новой версии экзамена от старой.
О чем необходимо помнить при сдаче экзамена Java 11 Programmer I?
- Теперь интерфейс имеет приватные методы экземпляра и приватные статические методы (новшество Java 9).
- Новый статический метод
List.of()
возвращает неизменяемый List и генерирует исключениеUnsupportedOperationException
в процессе выполнения, если вы попытаетесь его изменить (новшество Java 9). - Необходимо понимать особенности использования зарезервированного типа для локальных переменных
var
. Для этого рекомендую посмотреть официальное видео Oracle с17-й минуты (новшество Java 10). - Нужно знать принцип работы и возвращаемое значение новых статических методов Arrays.mismatch и Arrays.compare (Java 9...11).
- Надо знать функциональный интерфейс Provider и то, что переменные, используемые в лямбда-выражениях, должны быть final или effectively final.
- Требуется быть знакомым с методом
StringBuilder.replace()
. - Необходимо знать, что делает специфический метод
String.intern()
. - Нужно разбираться в модульности Java, знать ее фишки и основные принципы. В частности, вам пригодится знание таких модулей JDK, как java.base, java.desktop, java.se, и инструментов jdeps, jmod, jlink. Также важно понимать, как скомпилировать и запустить приложение Java с помощью командной строки (Java 9).
- Разбираться в java.time (LocalDate, LocalDateTime и т. д.) особо не требуется. Вопросов на знание этого пакета не было, хотя он несколько раз упоминался в ходе экзамена, но на самом деле это были вопросы на знание правил импортирования пакетов. Поэтому главы, посвященные данному API в книге ОСА 8, по большему счету можно просмотреть поверхностно.
Большую часть времени я бы рекомендовал посвятить изучению модульности Java, поскольку более 10% вопросов будут именно о ней. В остальном вопросы на экзамене соответствуют приведенным в книгах по подготовке к старому экзамену OCA 8.
Немного о литературе для подготовки
Для общей подготовки я бы рекомендовала книгу OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808 авторства Jeanne Boyarsky и Scott Selikoff либо OCA Java SE 8 Programmer I Exam Guide (Exams 1Z0-808) авторства Bert Bates и Kathy Sierra. Рекомендую обязательно практиковаться в mock-тестах, приведенных в книгах.
Для изучения модульности — Java 9 Modularity Book.
Достаточно ознакомиться с соответствующими разделами в документации Oracle JDK 11 Documentation, чтобы узнать все, что необходимо, о var, List.of, интерфейсе Provider, StringBuilder.replace, String.intern и новых методах класса Arrays.
О процедуре заказа и прохождения экзамена
Регистрируемся на Pearson VUE и Oracle CertView, связываем аккаунты, заказываем, оплачиваем и идем сдавать. Сертификационных центров в Одессе нет, но в Киеве их хватает. К тому же график их работы довольно гибкий, так что есть повод навестить столичных друзей/родственников ;)
Касательно процедуры сдачи экзамена. Если вы сдавали экзамен на права, то это что-то похожее, но только дольше. Прийти в центр надо за
Во время моей сдачи случилась примечательная ситуация: ближе к концу теста щелкнул свет, UPS не сработал, и компьютер ушел на перезагрузку, а мой мозг — в панический ступор :)
Но все данные уже были отправлены на сервер, и сессия сдачи экзамена продолжилась без учета времени, потраченного на перезагрузку ПК и вход в режим сдачи сессии.
Щепотка вдохновения
Результаты экзамена придут в течение 15 минут на вашу почту. Так что долго мучиться в догадках не придется. В целом экзамен имеет достаточно низкий проходной бал, поэтому после соответствующей подготовки, выполнения определенного количества mock-тестов и учета вышеизложенных советов и рекомендаций вы без труда получите результат, который вас удовлетворит.
Удачи и спасибо за внимание!
P. S. Java 11 Programmer II (1Z0-816) (старый OCP 8 (1Z0-809)) is coming soon... Об этом я расскажу в следующей статье.