Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SCJD - пройден, готов ответить на ваши вопросы :), 368 из 400 
:(
    Опции темы
Royan
Дата 29.10.2008, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 3
Всего: 15



Итак вот столько очков я выбил в каждой из категорий, по которым оценивается SCJD

General Con: 100 90
Documentation: 70 70
OOD: 30 30
GUI: 40 28
Locking: 80 80 
Data Store: 40 40 
Network Server: 40 30
Всего: 368 из 400 возможных

Для тех кто знаком с тематикой предлагаю перейти к моим заметкам о том какие решения я принял в той или иной области и моим объяснениям почему, по-моему мнению, мне вычли баллы.
Для тех кто незнаком с темой, предлагаю начать свое знакомство с ней вот отсюда:
http://www.sun.com/training/catalog/courses/CX-310-252A.xml
или отсюда
http://faq.javaranch.com/java/ScjdFaq

Если уж совсем коротко, то для того чтобы получить SCJD, надо выполнить задание (assignment), которое, грубо говоря, разбито на три части. Первое – приложение,  работающее с неким файлом данных через файловую систему, второе – standalone GUI приложение, которое умеет соединяться с удаленным сервером по сети (сервер это третья часть). Соединение можно реализовать либо через RMI, либо через сокеты, по выбору. Собственно само ТЗ содержит некие обязательные условия, которые надо выполнить в точности, малейшее отклонение влечет за собой автоматический неуд, и некоторые условия, которые выполнить желательно (как я понимаю невыполнение коих влечет за собой вычет баллов).

Итак по пунктам.

General considerations (90 из 100):
Здесь оценивают насколько ваш код легок для понимания и дальнейшей поддержки.
Думаю минус 10 баллов я получил в том числе и за использование класса Constants, который (как следует из его названия) служит для хранения констант и имеет примерно следующую структуру:
Код
public final class Constants {
   public final static int GENERIC_INT = 0;
   // другие константыобщего назначения
   public final static class Network {
       // остальные константы относящиеся к сетевой специфике
       public final static int GENERIC_INT = 10000;
   }
}


Доки (70 из 70)
Нужно задокументировать весь код (ну это в идеале smile ), используя стиль javadoc (кстати предоставление сгенерированного javadoc'а является обязательным условием). О том как правильно писать комментарии в java коде написано тут: http://java.sun.com/docs/codeconv/html/Cod...s.doc4.html#385
О том какая прикольная тула javadoc написано тут:
http://java.sun.com/javase/6/docs/technote...adoc/index.html самое клевое что я узнал документируя свой код это то что есть такие прикольные тэги как {@inheritDoc} и {@code}

OOD (30 из 30)
Я использовал паттерн MVC для реализации взаимодействия GUI элементов, который собственно представлял из себя внутренний класс основного окна приложения. Еще у меня была крайне удобная (по крайней мере я так считаю) иерархия из всего двух интерфейсов – один для имплементации локального общения с фалом данных (этот интерфейс был родителем), а второй для реализации сетевого общения, которое я решил писать с помощью RMI.

GUI (28 из 40)
Понять за что я получил минус 12 очков я не могу, может быть за то, что вместо реализации контекстного меню на таблице, где выводились записи, я обрабатывал двойной щелчок по JTable'у по которому вылетало диалоговое окно с различными вариантами дальнейших действий, но наверно не только за это.

Locking (80 из 80)
Судя по постам на javaranch (http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=forum&f=25) этот критерий является самым провальным, ну или на нем проседают большинство оценок. То есть мне повезло smile
Короче для синхронизации того кода, что использовался мной из нескольких потоков я использовал ReentrantLock. Причина проста – мне классы из concurrency пекеджа нравится больше чем классический вариант с synchronized блоками. Разумеется у такого подхода есть и технические плюсы, вытекающие из свойств собственно класса ReentrantLock. Кстати, будет не лишним сказать, что я не поленился написать тесты для своего многопоточного кода, которые по своей сути были весьма просты. От 100 до 1000 потоков одновременно читали и записывали в используемый мной файл данных. После чего я открывал его из моего GUI приложения и если он не был в результате теста испорчен, я считал, что все в порядке. Кстати этот подход позволил мне найти один весьма неприятный баг, который я бы вряд ли нашел не написав тестов.

Data store (40 из 40)
Че это такое я понятия не имею, но я рад что получил за это 40 из 40 возможных баллов.

Network Server (30 из 40):
Реализовал тут классический RMI сервер без каких либо примечательных особенностей. Кстати на использование RMI налагаются обязательные к выполнению условия, самым важным, пожалуй, является то что нельзя использовать динамическую загрузку, необходимо предоставить stub RMI класса. За что я тут получил минус 10? Может за то что при старте сервера у меня открывалось окно, которое содержало всего одну кнопку "Stop server", которая соответственно сервер останавливала, однако если закрыть это окно, то единственный вариант убить сервер заключался в том, что нужно было тридцать три раза долбануть Ctrl+C дабы завершить java процесс (ну как любой процесс в командной строчке). Мда, эту фичу я прикручивал в последнюю очередь и элементарно забыл добавить обработчик события WINDOW_CLOSED.


Вот собственно и все!
Если какие вопросы, не стесняйтесь задавать!


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Keyo
Дата 30.10.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 10.4.2008

Репутация: нет
Всего: нет



класс... поздравляю. Сами готовились? Откуда брали материал для подготовки, если не секрет?
PM MAIL   Вверх
Royan
Дата 30.10.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 3
Всего: 15



Keyo, Спасибо, в общем-то понятие "брать материял" для этого экзамена не совсем пременимо, в силу недостатка практического опыта у меня возникали вопросы реализации того или иного компонента, тогда я либо задавал вопросы здесь, либо на google группах (кстати люди там супер, самые разнообразные идеи - это все там), а в конце всю специфику уточнял в баре "Большой лось" Вот, примерно так.

Это сообщение отредактировал(а) Royan - 30.10.2008, 12:45


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
SoulKeeper
Дата 30.10.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 11
Всего: 15



Сколько времени дается на экзамен? Ограничения на использование IDE?

И вообще процедуру прохождения экзамена было бы хорошо описать в деталях. В прочем как и SCJP smile

Это сообщение отредактировал(а) SoulKeeper - 30.10.2008, 14:27
PM MAIL   Вверх
fixxer
Дата 30.10.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Скажи, а кроме практического задания входит ли тест в сертификацию? Если да, то в чем отличие теста от SCJP?


--------------------
user posted image
PM MAIL ICQ   Вверх
Royan
Дата 31.10.2008, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 3
Всего: 15



Итак SCJD состоит из двух частей. Первая - практическая часть (о которой я писал выше), вторая это эссе - письменный экзамен состоящий из 4-5 вопросов, касающихся деталей вашего задания. Считается, что вторая часть способна показать, что именно вы являетесь автором первой части. Вопросы там задаются из серии "Какую технологию вы использовали для реализации взаимодействия клиента и сервера и почему?" ну и подобные. Поэтому, отвечая на вопрос fixxer' скажу, нет, тест не входит, письменное эссе тестом все-таки считать трудно.
Схема получения SCJD такова. Вы покупаете первую часть экзамена, (как покупать я писал в теме про SCJP) скачиваете ее с сайта http://www.certmanager.net/sun_assignment/ То что вы скачиваете представляет собой обычный jar архив, в котором находится ваше задание в виде html файла. В этом задании все разжевано по кусочкам, что нужно сделать, что нельзя, какие правила и как вы должны потом предоставить результаты своей работы. Когда вы выполняете свое задание, то также запаковываете его в jar архив и заливаете им на вышеупомянутый сайт. Залить можно только один раз, поэтому у вас есть только один шанс, о чем вас заранее всячески предупреждают и просят перед отправкой все тщательно перепроверить . Как только вы залили свое задание, вы быстренько  покупаете вторую часть экзамена и бежите сдавать письменное эссе. С письменным эссе рекомендуют не тянуть, потому что вашу первую часть будут проверять только когда вы сдадите эссе. На проверку задания обычно уходит 4-6 недель. В моем случае управились за четыре.

Еще один важный для понимания момент при загрузке задания, среди прочих загружаемых файлов в одном и них вы обязаны указать версию JRE, на которой вы тестировали свое приложение и версию операционной системы. Это по понятным причинам сделано дабы исключить ситуацию когда кто-то пишет свое SCJD под маком, а его проверяют на XP.

Цитата(SoulKeeper @  30.10.2008,  11:14 Найти цитируемый пост)
Сколько времени дается на экзамен?

Ограничений нет, есть только условие что JRE, используемое в задании должно быть только release версий (никакие beta версии использовать нельзя) причем релиз версия должна быть не старше 18 месяцев на день загрузки вашего задания. То есть, например, релиз версия JRE 1.6.0_07 вышла 1 января 2007 года (я говорю, например, это не значит, что она действительно вышла 1 января 2008) Если вы ее указываете при загрузке первой части вашего задания то собственно загрузить это задание вы обязаны не позднее 30 июня 2009, в противном случае вы должны использовать более свежую версию JRE.


Цитата(SoulKeeper @  30.10.2008,  11:14 Найти цитируемый пост)
Ограничения на использование IDE?

Таких ограничений нет, но есть условие, чтобы в архиве, который вы в итоге загрузите не должно быть файлов кроме тех, которые требуется в ТЗ, таким образом, наличие файла проекта в архиве, или еще какой-то, случайно или неслучайно сгенерированной вашим IDE фигни, повлечет за собой автоматический неуд и вам придется покупать resubmition и переделывать работу.

Это сообщение отредактировал(а) Royan - 31.10.2008, 02:13


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
AlexeyVorotnikov
Дата 1.11.2008, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



А  можно поподробнее про Locking? В смысле как ты его реализовал?

Это сообщение отредактировал(а) AlexeyVorotnikov - 1.11.2008, 10:54


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
COVD
Дата 1.11.2008, 14:21 (ссылка) |    (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Это по понятным причинам сделано дабы исключить ситуацию когда кто-то пишет свое SCJD под маком, а его проверяют на XP.


А как же сановский лозунг  smile   . 
PM MAIL   Вверх
Royan
Дата 2.11.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 3
Всего: 15



Цитата(AlexeyVorotnikov @  1.11.2008,  07:46 Найти цитируемый пост)
А  можно поподробнее про Locking? В смысле как ты его реализовал?


Реализовал очень просто:
Код

private final ReentrantLock lock;

//...

/** Thread-safe method */
public void methodXxx() {
    lock.lock();
    try {
         // основной код мметода
    } finally {
        lock.unlock();
    }
}


Собственно так реализованы все методы пакета concurrent

Цитата(COVD @  1.11.2008,  11:21 Найти цитируемый пост)
А как же сановский лозунг

Ну на всякий случай я так понимаю. У тех, кто оценивает вашу работу очень строгие правила, если в stdout или в stderr вывалился stack-trace, ваша работа автоматически считается невыполненной.


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.