Привет!
Меня зовут Маша, я работаю в КРОК. Сегодня я хочу рассказать вам о получении сертификатов Oracle Certified Associate и Oracle Certified Professional.
Вообще, в спорах о полезности профессиональной сертификации (да и ее необходимости в принципе) среди разработчиков довольно часто ломаются копья. Некоторые уверены, что для найма на приличную работу сертификат крайне желателен. Другие говорят, что “бумажки” не играют особой роли, даже диплом о высшем образовании может не потребоваться, оценивать будут исключительно навыки.
Бывают случаи (вероятно, если процесс собеседования не очень отлажен), когда HR может отсеять человека без сертификата, хотя такой человек на самом деле более чем справился бы с работой. Или, наоборот, среагировать на наличие сертификата, устроить техническое собеседование с разработчиком, который, правда, быстро поймет, что кандидат вообще зашел случайно, и начнет подозревать, что кроме сдачи сертификата он ничего не изучал и не использовал в работе.
Как бы то ни было, есть люди, которым сертификаты нужны. Как для портфолио, так и для себя лично. Под катом я поделюсь впечатлениями от сертификации Oracle по Java: Oracle Certified Associate (1Z0-808) и Oracle Certified Professional (1Z0-809). В мировой практике наличие этих сертификатов является подтверждением определенного уровня квалификации java-разработчика, поэтому многие эту процедуру проходят.
OCA
Немного предыстории. Раньше подобной сертификацией джавистов занималась компания SUN Microsystems, которую в 2009 году купил Oracle. Тестированием на проверку уровня знаний и выдачей сертификатов занимаются две ключевые организации — Virtual University Enterprise (VUE) и Prometric. Я работаю в иркутском центре разработки КРОК, поэтому экзамен сдавала в иркутском сертифицированном центре VUE. Приятно, что обучение и сертификацию с целью профессионального развития у нас можно проходить за счет компании. Более того, сертификацией я смогла не только квалифицировать свой уровень как разработчика, в КРОКе это еще мощный фактор для карьерного роста. Поскольку для компании это тоже бонус – дополнительное преимущество в общем количестве сертифицированных сотрудников на квадратный метр. Говорят, многие заказчики этот факт считают серьезным конкурентным преимуществом.
Теперь по сути. OCA (Oracle Certified Associate) — это начальная ступень сертификации Java-разработчика. Есть специальная книжка для подготовки к OCA, которая написана вполне себе понятным языком, это по силам освоить даже человеку, у которого довольно маленький опыт работы с ООП (любым языком программирования). Книга на английском, в русском переводе я ее не встречала. Но, ещё раз — язык и вправду простой, особых сложностей не будет.
Насколько бы свежа ни была редакция книги, по которой вы готовитесь, не лишним будет держать под рукой эту ссылку. Никакое издание не застраховано от опечаток, а по указанной ссылке отмечено, где именно в книге ошибка или опечатка, и как должно быть на самом деле.
Помню, долго я просидела над одним из тестовых вопросов, никак не могла понять, почему по всему выходит, что правильный ответ B, а в списке ответов помечен D. И в комментарии к правильному ответу все указывало на В… Когда я вспомнила про список опечаток, нашла там этот момент, и все сразу встало на свои места.
Внимательно прорешать тесты из книги — это уже половина успеха. В идеале раза два. Или хотя бы на второй раз пройтись по тем вопросам, в которых сначала допустили ошибку. Не для того, чтобы заучить сами вопросы, а для того, чтобы убедиться, что вы поняли и прочувствовали правильно решение ситуации. Впрочем, мои опытные в программировании друзья, которым пришлось с высоты своих позиций сдавать OCA, применяли другую стратегию: после прочтения второй главы они прорешивали тесты из первой, после прочтения третьей — из второй и так далее по индукции.
Вопросы, которые вы будете прорешивать, могут оказаться очень похожими на те, что будут на тестах. Тем не менее, быть внимательным и читать каждое слово вопроса на экзамене крайне важно. Бывало, прорешаешь дома тесты на второй раз, какой-то вопрос плотно осядет в памяти, приходишь на экзамен — а там такой же вопрос! Радуешься, по памяти отвечаешь, внимательно не вчитываешься. А потом оказывается, что уровень доступа метода отличался, а ты это упустил из виду по причине излишней уверенности в себе…
Итак, OCA оценивает знание фундаментальных основ Java Core. Если у вас за плечами есть опыт разработки, сложным экзамен не покажется. Считаю важным отметить, для OCA надо уметь компилировать в уме. Да-да, надо знать и помнить все эти милые мелочи, которые в обычной жизни за вас делает современная IDE. То есть правила именования переменных, видеть недостижимые блоки кода, излишне обрабатываемые исключения, необработанные и неперброшенные исключения, корректное и некорректное помещение переменных в объекты и многое подобное.
apply)
byte x = 5;
byte y = 10;
_____ z = x + y;
A. int
B. long
C. boolean
D. double
E. short
F. byte
Кому-то может показаться нудным, что на экзамене придется изображать из себя компилятор. Но с другой стороны, понимание, как устроена его логика, способность сходу понять ошибку в коде: эти навыки не мешают, а только помогают в повседневной работе. OCA — своего рода тренировка, прокачка навыка легко читать java-код, не отвлекаясь на непонимание фундамента этого кода.
Могут встречаться вопросы, для которых надо помнить существующие методы, их поведение и сигнатуры. Забегая вперед, таких вопросов будет больше в OCP. Тем не менее, в некоторых вопросах OCA вам, возможно, придется вспомнить методы коллекций и классов работы со строками.
Map<String, Double> map = new HashMap<>();
A. map.add(«pi», 3.14159);
B. map.add(«e», 2L);
C. map.add(«log(1)», new Double(0.0));
D. map.add('x', new Double(123.4));
E. None of the above
Я, будучи перфекционисткой, пыталась заучивать сигнатуры методов, которые мне встречались в вопросах при подготовке. Бесспорно, мне это помогло на экзамене. Тем не менее, общаясь с коллегами, я поняла, что многие ребята относятся к этому проще: читают книгу и внимательно прорешивают тесты, но сигнатуры не зубрят. И действительно, их опыта и интуиции как правило хватило для того, чтобы набрать не менее 65% правильных ответов на экзамене – а это проходной балл как для OCA, так и для OCP.
В центре сертификации вам дадут только маркер и ламинированную картонку. Остальное — за вами.
Итог по OCA — бдите. У вас будет 2,5 часа чтобы справиться с 70 вопросами. Как бы вы ни были прекрасно подготовлены, будьте внимательны к мелочам. Если прорешаете все раньше времени, потратьте еще несколько минут и просмотрите ответы повторно. На экзамене есть механизм, позволяющий отметить вопрос, называется «Mark». Я помечаю те, в которых не полностью уверена, и первым делом вернуться стоит к ним. Кстати, там же есть возможность помечать ответы, которые точно считаете неверными: для этого используйте правую кнопку мыши.
Насчет результатов. На электронную почту мой результат пришел только через несколько дней. Если не хотите ждать столько — проверяйте время от времени свой аккаунт в Oracle. Результат может появиться сначала там, а уже через какое-то время прийти в виде письма.
Что потом
Если это была первая сертификация в жизни, вам присвоят два идентификатора – от VUE и от Oracle – первый позволит аккумулировать данные по всем сертификациям, а второй — в рамках вендора. В будущем такого идентификатора будет достаточно, чтобы подтвердить, что сертификация была пройдена. Постарайтесь его запомнить и сообщать тем, кто вас будет регистрировать на следующие экзамены.
Если Вы считаете, что OCA — это лишь начало вашей Java сертификационной истории, и намерены покорять OCP, то я бы не советовала делать между сдачами тестов больших перерывов. Те знания, которые вы получили при подготовке к OCA, понадобятся и на OCP, поэтому проще начать подготовку к OCP сразу по свежей памяти.
OCP
OCP (Oracle Certified Professional) — вторая ступень сертификации Java-разработчика. Те же 2,5 часа на экзамене, тот же порог сдачи 65% правильно отвеченных вопросов, а количество вопросов увеличилось до 85.
Компиляционные ловушки тоже есть, вроде некорректного типа возвращаемого объекта и отсутствующих скобок. Их мало, но бдительность все равно не теряем.
В целом же, OCP — это проверка теоретических знаний… сигнатур методов и синтаксических конструкций!
Да, снова на большинстве вопросов сидим и компилируем себе потихоньку в уме. Но на этот раз ошибка, если она есть, чаще всего будет на значительно более высоком уровне абстракции. То есть не на уровне синтаксических конструкций, а на уровне работы с классами. Возможно, в этот раз запускать какие-то циклы с подсчетом переменных в уме не придется (или искать ошибки в названиях самих переменных). Но вот помнить правильное применение конкретных конструкций и методов надо.
Для OCP я заучила две полезные таблицы (и не зря, на экзамене пригодились обе). Делюсь ими с вами (первая — целиком из книги).
Таблица 1. Функциональные интерфейсы
Таблица 2. Перечень ограничений inner и nested классов
Ясное дело, выучила я не только их — из-за количества стикеров по всей квартире я на какое-то время забыла, какие в комнате обои (и есть ли они). Помогает метод с заучиванием именно отрывков информации. Само собой, самые запомнившиеся стикеры — это висевшие в ванной.
Если вам мало и этого, можно переключиться совсем в nightmare (как я) и разместить материалы из OCP на обоях домашнего и рабочего компов. Ну и телефона, конечно. Подругу в списке телефонных контактов я переименовала в commit(). И при каждом входящем звонке от нее я повторяла в памяти, что у метода commit() класса Connection нет перегруженных версий (аналогия, конечно же, относится к подруге: она не из тех, кто грузит длинной болтовней).
В этой статье я делаю большой акцент на том, что нужно зубрить. Но это ни в коем случае не исключает того, что для успешной сдачи экзаменов необходимо быть хорошим программистом с глубоким понимаем языка и умением максимально использовать возможности свежей версии Java. Просто большая часть из тех, кто доходит до OCP, уже являются такими специалистами, а вот учить наизусть языковые конструкции в работе как правило не пригождается.
Напоследок парочка хинтов.
1. На OCP ни мне, ни кому-либо из моих знакомых не попался RandomAccessFile.
2. Судя по слухам, сериализацию исключили из OCP. Доказательств мне найти не удалось. Но — I want to believe.
В общем, как-то так. Надеюсь, получилось интересно и полезно. Если есть вопросы, пишите в комментариях.
Автор: pomazkina