Итак, сегодня утром я сдал экзамен 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 месяцев. С наскоку его не сдать. Да и жаль очередной месяц жизни.