Подорож на планету Java. Мій досвід проходження сертифікації Java Developer 11

Мене звуть Євген і більше 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 — 9-ю. Це і дало стимул пройти сертифікацію і ознайомитися з новою версією мови. Але час минав, реліз був перенесений спочатку на півроку, а потім і зовсім на другу половину 2017-го. До того ж довгоочікувана Java 9 принесла з собою нову політику випуску версії JDK з шестимісячним циклом випуску Java, де реліз виходив кожні півроку, і наступним LTS (Long Term Support) — релізом стала Java 11. Так що довелося чекати березня 2019 року, коли Oracle оголосила про запуск нової Oracle Certified Professional: Java 11 Developer certification . Недовго думаючи, я вирішив пройти цю сертифікаційну програму, отримати новий значок в колекцію і поділитися досвідом у цій статті.

Ілюстрації: Дмитро Яценко

Навіщо взагалі потрібен сертифікат?

Питання холиварный, як і питання, чи потрібно програмісту спеціальну вищу освіту. З одного боку, сертифікат не дає ніяких переваг. З іншого боку, його наявність може зачепити очей HR, особливо в ситуації з розробниками, які прийшли з іншої мови або перекваліфіковуються з тестувальників. Крім того, наявність сертифіката покаже, що ви вмієте ставити цілі і досягати їх.

Моїми стимулами були:

Можна, звичайно, досягти цих цілей і без сертифікації, але тим, хто знайомий зі 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?

  1. Тепер інтерфейс має приватні методи примірника і приватні статичні методи (нововведення Java 9).
  2. Новий статичний метод List.of() повертає незмінний List і генерує виняток UnsupportedOperationException в процесі виконання, якщо ви спробуєте його змінити (нововведення Java 9).
  3. Необхідно розуміти особливості використання зарезервованого типу для локальних змінних var. Для цього рекомендую подивитися офіційне відео Oracle з 17-ї хвилини (нововведення Java 10).
  4. Потрібно знати принцип роботи і обчислене значення нових статичних методів Arrays.mismatch і Arrays.compare (Java 9...11).
  5. Треба знати функціональний інтерфейс Provider і те, що змінні, які використовуються в лямбда-вирази, повинні бути final або effectively final.
  6. Потрібно бути знайомим з методом StringBuilder.replace().
  7. Необхідно знати, що робить специфічний метод String.intern().
  8. Потрібно розбиратися в модульності Java, знати її фішки і основні принципи. Зокрема, вам стане в нагоді знання таких модулів JDK, як java.base, java.desktop java.se, та інструментів jdeps, jmod, jlink. Також важливо розуміти, як скомпілювати і запустити додаток Java з допомогою командного рядка (Java 9).
  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 , пов'язуємо акаунти, замовляємо, оплачуємо і йдемо здавати. Сертифікаційних центрів в Одесі немає, але в Києві їх вистачає. До того ж графік їх роботи досить гнучкий, так що є привід відвідати столичних друзів/родичів ;)

Щодо процедури іспиту. Якщо ви здавали іспит на права, то це щось схоже, але тільки довше. Прийти в центр треба за 15-20 хвилин до зазначеного часу. Всі особисті речі потрібно здати в клітинку. Перед початком самого іспиту вас фотографують, просять підписати кілька паперів та перевіряють ваші документи (в моєму випадку це внутрішній і закордонний паспорт). На іспиті вам видають маркер і дві ламіновані папірці, на яких ви можете робити позначки. В процесі проходження тестів можна позначати питання, щоб повернутися до них згодом. Якщо ви виходите в туалет, то це відбувається за рахунок часу іспиту (!).

Під час моєї здачі трапилася цікава ситуація: ближче до кінця тесту клацнув світло, UPS не спрацював, і комп'ютер пішов на перезавантаження, а мій мозок — панічний ступор :)

Але всі дані вже були відправлені на сервер, і сесія здачі іспиту продовжилася без урахування часу, витраченого на перезавантаження ПК і вхід в режим здачі сесії.

Щіпка натхнення

Результати іспиту прийдуть протягом 15 хвилин на вашу скриньку. Так що довго мучитися в здогадках не доведеться. Загалом іспит має досить низький прохідний бал, тому після відповідної підготовки, виконання певної кількості mock-тестів та обліку вищенаведених порад і рекомендацій ви без праці отримаєте результат, який вас задовольнить.

Удачі і спасибі за увагу!

P. S. Java 11 Programmer II (1Z0-816) (старий OCP 8 (1Z0-809) ) is coming soon... Про це я розповім в наступній статті.

Опубліковано: 17/09/19 @ 10:00
Розділ Різне

Рекомендуємо:

Кейс: Збільшення трафіку для сайту в напрямку «Зовнішня реклама»
Навіщо розвивати українську мову в ІТ-секторі
Front-end дайджест #36: New React Dev Tools і поліпшення продуктивності Instagram
NPX, або Прощайте, глобальні залежності
Складнощі тестування мікросервісів та що з ними робити