Java-сертификация: прохождение экзамена

15.09.2014 22:58

Итак, сегодня утром я сдал экзамен Oracle Java SE 7 Programmer I (1Z0-803), он же Oracle Java Associate.
Это первый экзамен в иерархии (см. ниже) и является обязательным, т.е без него другие сдать на дадут, хотя раньше было можно. Многие сдают потом 2-й и на этом останавливаются.

Oracle сотрудничает с международным центром Pearson Vue, который, в свою очередь, сотрудничает с центрами на местах.
На Кипре в плане Java таких три, два в Никосии, один в Лимассоле (как выяснилось, народ сдает в Никосии и про местный не все в курсе — подозреваю, что появился он недавно). Находится центр немного в жопе, искал около часа. Но нашел.

Стоимость экзамена: ~250 евро.

Приходить по правилам надо минут за 15 до начала, чтобы сделали фотку, скан удостоверяющего документа с подписью (загранник не подошел, но подошел российский паспорт), можно было сдать все личные вещи и получить взамен специальный лист бумаги и специальную ручку. Это всё описано в policy, если почитать заранее. Взял с собой по случаю купленные наушники, чтобы не слушать окружающих, но 5 молодых киприотов сидели тихо и не мешали (они сдавали какой-то местный экзамен по праву тоже через Pearson Vue, закончили раньше меня).

По поводу самого экзамена. Готовился я к нему больше месяца, брал двухнедельный отпуск, штудировал тесты. Прошел порядка 700 или 800 тестов. Первое время, конечно, самооценка упала, но ближе к экзамену проходил их уже на “ура”. Лично у меня основные трудности были с запоминанием:

  • кастинг вверх и вниз классов с полиморфизмом, особенно в извращенных формах
  • наебки вида if (b2 = b1 == false), которые местами попадались
  • рутинный пересчет значений в циклах — просто отнимает время
  • запоминание дерева checked & unchecked exceptions, особенно когда выбрасывается специфичный exception, где надо понять, надо ли его объявлять во throws, и какой catch его поймает (если есть) — наиболее низкоуровневый

Всё это было на экзамене (и ряд других мелочей вида private static int main(…)), но когда в голове уже практически компилятор, они тоже решаются довольно быстро.
В сети есть пара дампов с вопросами (правда, криво скопированные и потому плохие, т.к. при анализе важна каждая запятая), некоторые из подобных вопросов были на самом экзамене.

В целом, чтобы сдать, надо знать сам язык, String, StringBuilder (и их API, включая типы параметров), ArrayList, exceptions (checked & unchecked), понимать ООП в общем виде.

70 вопросов, набрать надо 63% (44 верных). Множественные ответы местами (3 из 5, например). Два часа на всё про всё. Можно возвращаться назад и пересматривать ответы. У меня как раз осталось полчаса свободных, пробежался, ошибок не нашел.

Что еще важно — смотреть, есть ли в вариантах пункт “Compilation fails” или подобный (”Other result”) — если нет, то можно резко сократить время, не анализируя код на компилируемость, а сразу считать результат его работы.

В самом центре итог и result score не сказали — Oracle сразу уведомил на экране, что результат будет мылом в течение получаса.
Ехал на работу, размышлял, сколько угадал. Когда приехал, проверил почту — 75% (52 верных). Зело обрадовался, начал делиться с окружающими.

В течение пары дней Oracle должен дать линк, подтверждающий прохождение экзамена. Сейчас результат виден, только если залогиниться на их спец. сайте.

Ок, что самое главное для сдачи экзамена?
1. Купить (или найти нахаляву) тесты Enthuware. Они на 10-20% сложнее самого экзамена, но прокачивают они конкретно. Сильно конкретно. Без них результат будет процентов на 20-30 ниже, полагаю. И эти тесты не являются методикой для изучения, их надо проходить после того, как проштудированы книги по самому языку.
2. Иметь в голове компилятор, который за 1-1.5 минуты, глядя на любой Java-код, может сказать:
2.1 скомпилируется ли он
2.2 будет ли результат или вылетит exception
2.3 если будет результат — какой конкретно, учитывая инициализацию, статику, конструкторы (весь flow, включая повторное создание instances), exception, циклы и прочие конструкции
3. Взять пару свободных дней перед экзаменом для конкретного штудирования материала — я выбрал понедельник, когда регистрировался на сайте Pearson Vue
4. Лечь спать в 21:00 — чтобы тупить из-за незнания, а не из-за того, что голова с утра болит
5. Выкинуть месяц жизни при неторопливом сценарии или 2 недели при ускоренном
6. Don’t panic.

Сам я ожидал, что сдам на 80-85% (были такие ощущения). Ну ок, 75% тоже неплохо. Кстати, в определенный исторический момент Oracle снизил для этого экзамена порог с 90 до 70 вопросов и с 77% до 63% проходной.

Наиболее частный вопрос, который мне сегодня задавали: зачем мне это надо. По ряду причин. Сейчас чувствую, что в первую очередь для прокачки мозгов — узнал много вариантов “bad practice” и в моем конкретном случае это одна из ступеней плана личностного роста.
До Нового года будут еще 2 вехи, которые надо будет пройти, не связанные уже с экзаменами.

Для того, чтобы пройти следующий экзамен (1Z0-804, Java SE 7 Programmer II) возьму паузу в 3-6 месяцев. С наскоку его не сдать. Да и жаль очередной месяц жизни.


Назад 

Комментарии на “Java-сертификация: прохождение экзамена”

  1. Alex говорит:

    Ответы Вопросы Экзамен Java без SMS

  2. Максим говорит:

    Андрей. Хеллоую мэн! Мои поздравления с той сертфикацией.

    - Я всё как по себе вспоминаю, множество недель подготовки по тестам, вроде теже Enthuware =)
    - Ты наверно первый человек в моей истории, кто имеет ту же историю, я когда сдавал и после и по сей день, вообще никому это не надо было и уже точно не с кем было ни обсудить ни разделить свою радость, свои переживания, кто прошёл бы через это всё и так же это понимал
    - Да, я сдавал на Java SE programmer 5 и 6 в 2009, когда Java была proprietary of the Sun Microsystems
    - И экзамен первый раз был как раз 2 часа, я сдавал через Prometric в одний из компаний в Москве
    - Мой результат на Java SE 5 был 87% процентов - конечно, как и ты, стараясь, я его сдал =)
    - Затем буквально сразу вышел SE 6 exam и я буквально через месяц за доплату пошёл на него и уже было меньше и вопросов и меньше времени на сдачу - и тот же результат - 87%
    - Я вообще готовился ко всему сам, не помню почему, какая была мотивация, когда на работе не спрашивали и не просили и никто не отправлял, да и нигде за всё время не было интересно и важно никому, просто делал всё самостоятельно, и конечно, во время подготовки всё равно что-то узнаешь полезное, новое, оттачиваешь какие-то моменты
    - И я просто нереально день за днём, неделя за недёлей проходил раз за раз тесты, потом сделал тесты под себя, как мне нравиться и больше подходило для запоминания
    - Да, всё что ты описываешь, тат уже невольно думаешь как компилятор или как компьютер =) когда натаскиваешься порой даже на самые абсурдные варианты когда =)
    - Мне тоже потом спустя время прислали на email всякие логотипы =) Я испытывал наверно теже эмоции как ты, так меня это радовало и их скачивал, думал, куда приаттачить, но мне как-то не повезло, вообще ни с кем не мог разделить эту радость, но хоть маме футболки разьве что ;)
    - Потом from Texas прислали распечатанное свидетельство - простое чёрно-белое вроде что я сдал, фирменную пластиковую карточку - она у меня есть до сих пор, не знаю как, та же мама сохранила =) и ещё черные футболки с логотипом Sun и Java - вроде они по размеру моей мамке подошли =) Все футболки присылали за все три сданные экзамены с небольшой разницой, но я их даже не ожидал и был так приятно удвивлён - и сейчас так приятно вспоминать эти дни
    - Я очень рад за тебя, Андрей, что ты тоже сдал экзамены, прошёл через этот же процесс как и я - мы почти сделали всё тоже самое с разницой в несколько лет, и то, что Java стала собственностью Oracle и что ты уже сдавал на 7-ку, но тот труд, те старания, те переживания и беспокойства =) Nostalgia =)
    - Но ты точно молодец, вот бы было сдорово, если бы ты тогда жил в Москве и мы тогда каким-то образом познакомились
    - В моём окружении почти никому всё подобное вообще не то что было не интересно, да и сама Java как просто что-то, что не особо надо знать, была, хотя для меня Java, как для тебя PHP, первый реальный язык, рабочий и настоящий как первая любовь и на многие годы =)
    - Потом прямо сразу появился бесплатный пробный экзамен по NetBeans - это IDE времена для Java, как сейчас Android Studio для Android и Flutter. Но конечно, я теперь тоже только на IDEA и как её порт под чисто Android разработку - Android Studio от той же JetBrains =) Я этот экзамен тоже сдал, там конечно, никаких двух часов, просто общие вопросы по IDE, как создать Java SE проэкт, как EE и что-то не сложное в общем =) NetBeans в те времена вроде принадлежал Sun и был достаточно удобен. Конечно, я много разрабатывал под JavaME и NetBeans был не заменим для меня. Также я использовал Eclipse на начальных этапах разработки под Android, но потом уже появилась Android Studio и вот сейчас конечно, самая любимая для меня IDEA. Я прямо разделяю Android Studio и IDEA, так я под чисто Android использую Android Studio коненчо, но разработку под Flutter я использую в IntelliJ =) Также недавно писал тестовое задание на Elixir по работа с Raxx/Redix и использовал конечно IntelliJ Idea =)
    - Конечно, такая подготовка не могла не прокачить тебя и меня, и это было действительно мощно - сколько мы сил и старания в это вложили, сколько там вопросов, кроме всяких выдуманных и невообразимых, сколько было и по Threads, и по OOP, там вроде 4 или 5 основных раздела, да и по всем основным фичам языка и даже самой jdk =)
    - И конечно, сейчас я даже его не сдам, т.к. я тоже не робот, и всё не могу помнить, а с годами ведь всё равно известно, что только какие-то вещи используешь, тем более сейчас столько различных 3rd parties libraries, столько уже вещей и в стандартном API, сколько своих стандартных вещей поверх классической Java в Android, хотя были времена, когда я немного писал под Tomcat - Servlets и под JavaSE со Swing UI и классический JDBC использовал =) В Android конечно свой порт Java, во многом внешне по API - это классическая Java SE 8, и мы можем использовать и лямбда, и default interface methods, method reference, и Streams API. Но поверх куча своего Andorid. И плюс почти каждый даже самый маленький проэкт тащит кучу 3rd parties libraries и даже от самого Android в качестве дополнительного API. И Сейчас с годами проэкты просто поражают своей сложностью, с учётом всего стандартного и нестандартного API, сколько только по одному UI и самой архитектуре Android приложеняи надо знать, уметь, по всевозможным фичам всевозможных версий Android, ещё различным разрешениям экрана, различными прошивками Android, даже порой Samsung и некоторые другие manufactures меняют реализациую задокументированного поведения классического API Android и надо дело имить и с этим, а ещё каждая новая версия Android несёт в себе какие-то вещи, которые меняют сложившийся расклад вещей и надо ещё поддерживать и тестировать софт и на Handheld и на Tablets, и чтобы всё не падало, и красиво было, и ещё куча проэктов одновременно, ну “ты-ж программист” и сам делаешь работу порой и за UI из UX, и столько эмоций =)
    А, я помню, ещё codenames Tiger, Mustang, Dolphin - помнишь? Я когда начинал на SE - в компании ещё использовали Tiger, т.к. 6ка только появилась релизной недавно, а клиенты компании конечно ещё использовали 1.5, поэтому ещё до 2010 мы не могли юзать Java 6-ку, хотя так хотелось =) А на J2ME вообще нет ничего подобного, конечно, там свой более компактный API, но при этом там каждый vendor мобильников каким-то образом делал реализацую Java, в отличии от SE - которую почти все использовали от Sun. И вот сколько и как-только не работали различные модели мобильников на J2ME, и до сих пор в Android мире есть что-то подобное, когда какие-то китайцы/корейцы там понаделают дела, да тот же Самсунг =) Сейчас это уже фантастический путь проделан, мне вообще трудно представить, чтобы кто-то из моего окружения имел дело со всем этим в такой степени, т.к. руководитель почти не вёл реальной разработки и тем более не делал столько проэктов, сколько я, в итоге в J2ME разработке был только уже и потом стал использовать LWUIT - это типа Swing UI под J2ME - вроде от ребят из Sun, но вот дело было, что она только тогда появилась и ещё не была стабильно, а у нас были проэкты которые надо было уже делать на нормальном API и UI под J2ME и мне конечно сразу был и удобен и приятен API, но вот вёл он очень не стабильо, особенно с отрисовкой на разных устройствах, вот опят те же вещи с J2ME, и я даже сказал что болею на работе, и пару недель разбирался, отлаживал, оттачивал приложение, чтобы всё работало без багов, что-то потом написал в LWUIT support, но там всё так медленно шло, а после очередного update’а что-то отъежало ещё, в итоге я оставил стабильный и поправленный clone в нашем svn и использовал уже его до последнего =) Потом Android. Сейчас конечно это Kotlin. Мне уже на Java трудно и слово написать, хотя это мой родной язык и читаю и понимаю, но очень отвык, т.к. использую только Kotlin под Android =) Наверно как я любил Java я никого не встречал, да, Москва большая коненчо, с кем бы мог просто пообсуждать какие-то приколы из Java, как например что будет если мы вызовем System.exit в try finally и сработает ли finally =) Ну просто мне так нравилась Java, что хотелось говорить о ней, но я видимо не попал туда, где бывают реальные Java Lovers =) Видимо знающих Java очень много, понимающих меньше, а любящих - редкость и мы из них, right? We love Java! <3 Of course. Конечно, только что зная все фичи и удобства и возможности стандартного Kotlin на сравнение с Java я конечно как любой разумный разработчик, перешёл на Kotlin - ведь это естественный процесс, как когда-то я перешёл с любимого NetBeans на котором я тоже начинал, так как пришла пора и тут ни куда уже не денешься.
    - Я сейчас смотрю там уже Java 13 но я и близко не знаю, что там в 9, 10, 11, 12 - у нас этого в Android нет - максимум это 8, а с приходом Kotlin появились новые фичи и удобства языка, и набор очень удобных стандартных Kotlin extensions, и работа с потоками изящно сделана на Kotlin Coroutines. Сам Kotlin конечно, поверх Java языка, и полностью обратно совместим, так что и с Kotlin напрямую юзаешь кода Java и нет никаких прослоек, никакого JNI для их работы, так что переход максимально прозрачный. Это не как из Java вызывать C++ код через Native прослойку. Здесь всё спокойно. Но de-facto Kotlin уже является стандартом при разработке в Android. Очень много компаний, в том числе и сам Android ведут новую разработку только на Kotlin, многие компании почти полностью перевели codebase на Kotlin или по максимому переходят ещё, считая Java codebase as legacy =) Ну и back-end уже как мне известно, Java девелоперы перешли или ещё переходят на Kotlin. Андрей, может и ты уже перешёл или переходишь? А я уже ещё и на Flutter перешёл - это очередная платформа от Google для кроссплатформенной разработки на Dart языке от того же Google =) под iOS и Android используя единый codebase на Dart, типа того, что сделал Facebook с их React Native на Java Script. Опять же, если брать Dart язык, то он очень mix и Java и Kotlin и JavaScript вещей, и он на столько лёгок, насколько наверно Java Script =) Особенно для начинающих, поэтому сейчас hype - это Flutter разработчики, т.к. платформа очень новая и только более менее стабилизировалась и уже набирает серьёзные обороты, благодаря поддержке Google, ну и язык Dart как неотъемлимая часть платформы, также opensource и развавается язык, такие дела. Вообще, сейчас этого особенно мобильного outsource’а столько, что трудно и описать, любой, кто хоть чуть-чуть понимал в этом, пооткрывал уже свои компании, свой бизнес, свои услуги как продавцы дешёвого кроссплатформенного решения за не большие относительно деньги по мерках US или EU =) и используя особенно разработчиков из СНГ делают хорошие деньги, до сих пор ребята из Украины, Белоруссии и России на этом подвисли и работают за реально небольшие деньги на их management - ну в любом случае, хорошо, когда работа есть, но когда эти бизнесмены не делают хороших условий труда и пользуются незнанием рускоговорящей молодёжи, то это уже другое дело. Конечно, чуть чуть подождём и видно будет спустя год, другой как это hype пройдёт, как сrypto-этими. Так как я вот взял только одну фирму которая так скажем ведёт разработку под ключ, полностью делает приложения используя Flutter или React для зарубежных заказчиков, но всё вроде выглядит на сайте как положено в развитых странах, солидных компаниях, очень качественные фотки, оформление сайта, молодцы дизайнеры, ведь я с годами очень чувствую особенно все эти дела, хотя и всегда ценил качество и старался всё делать наилучшим образом. Так вот, я думаю, так у них интересно, и вроде коллектив хороший, и фотки есть команды, и вроде всё nice, но нет, когда дело дошло по посмотреть сами приложения, которые в портфолио этой компании, то мне стало наверно стыдно и плохо, когда я понял всё положение дел. Приложения в ужасно состоянии на Play Store - я только мог посмотреть сборки по Android. Одни не работали частично, другие косяки явные имели ну прямо сходу. Я не могу так. Мне жаль этих заказчиков. Хотя всё так красиво звучит, и статьи основателей. А в реальности продукты надо поддерживать после релиза и выполнения контракта. Каждая новая версия Android - и полюбому что-то надо проапдейтить, особенно это касасется UI и некоторых вопросов с поведением или поддержки последних лучших фич Android, т.к. буквально две версии Android пропустить и не обновлять приложение и будет видно, как оно просто устарело даже для обычных пользователей. А Google уже очень быстро релизит новые версии и тем более новые фичи. Так вот где я работал, раньше, я конечно почти ничего не понимал, как солдат на войне, что сказали, за то и сражаешься =) Нас так и называли бойцами - буквально, с улыбкой, и не стеснялись, мне было бы стыдно так относиться к реальным разработчикам. Ну так вот спустя годы, сейчас, почитав, отойдя немного ото всего, с высоты птичьего полёта как говориться, вещи как на ладони. И у нас было так, что если клиент по каким-то причинам не знает, что есть такая-то фича в Android котороя очень важна и нужна и придаст больше attraction и nice приложению, или больше стабильности, или клиент её не просил, какуют может самую простую фичу, но ты её как хороший разработчик хочешь сделать, то тебе говорят, что не стоит это делать, если не просили или не платили, а там вопрос то может всего на минуты или пару часов, конечно, я понимаю, это очередная итерация тестирования, если всё ок - релиз и маркетинг команда подключается, которая релизила это. Но есть сторона морали, отвественности и человечности, конечно, ведь не всё можно в контракте прописать, что касается этих вещей. В общем мне и сейчас не понятно, где эта грань, если ты не имеешь дело отвественными партнёрами, которые не только красиво улыбаются и умеют подписывать бумашки и получать деньги, что тоже есть mastery, но и несут со своим именем высокую отсвественность и делают, то что не опишешь в договорах. Я попытался спросить у этой компании, недавней из Украины, но видимо HR не могла на это ответить из-за её коненчо не компетентности в этом вопросе. А я пока сам с этим не столкнусь, и непосредственно не пообщаюсь или/и не поприсутствую на заключении таких договоров, не прочитаю контракты и обязательства, то конечно, без таких важнейших деталей не могу понять, как решается этот момент или есть ли вообще вопрос морали хоть косвенно в этих договорах. Реально, мне честно жаль, что такие случаи есть и часто.
    - Андрей, извини, что так отвлёкся, мысли =)
    - Я очень рад за тебя, за тот твой смылый поступок найти работу, решиться на интервью, потом на перезд и доказать свою компетенцию и подтвердить реальными результатами
    - Мои соболезнования по последним семейным вопросам - из моей истории меня это событие выбило из моей первой Java работы =) Это конечно not funny и я просто не мог работать какое-то время, там не тогда было плохо, это было только лет 23 мне, и я не мог объяснить на работе, куда пропал. Потом уже нашёл другую, тоже на Java =)
    - Давай, держись, ты сильный точно, и старайся всё пережить, делай что у тебя всегда получается отлично - программируй, приности позитив и пользу миру, хорошо!? ;)
    - В общем ты монстр Андрей - мой респект от Java Developer’а Java Developer’у =)
    - С Новым Годом! Дай Бог, чтобы всё наладилось и семейный вопрос ты решил и жил счастливо!
    - Щастливо! И извини, что всё так долго с этим коментом затянулось. Bye =)

  3. Andrey Kashukov говорит:

    Привет, Максим
    Спасибо за развернутый комментарий и за поддержку!
    К Kotlin я присматриваюсь, но в реальной разработке не использую.
    Ты сам в России живешь? Уехал?
    С наступившим!

Написать мне