Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Tamara Kozina
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 20
1

Нужен совет по задачам Архитектору

23.01.2014, 09:42. Просмотров 1342. Ответов 17
Метки нет (Все метки)

Ребят, буду Вам очень признательна за коммент. Знаю, что я уже 100500я и очередная незнающая мадам на форуме из рекрутмента, а что делать, если Java специалисты очень востребованы и при этом работодатель не всегда знает, где искать свою "звездочку".
Вопрос у меня следующий: сейчас занимаюсь поиском сильного архитектора, с опытом масштабных проектов, с возможностью помимо построения архитектурной концепции проекта по требованию заказчика управлять командой разработчиков, кодить как-то в меньшей степени, больший акцент делать на разработку архитектурных решений. С одной стороны в требованиях прописывают желательный срок работы в качестве архитектора от 1 года. Но по прошествии нескольких интервью выяснилось, что должен быть ну оочень опытный человек. Проектов много, движуха есть. На Java немного прогала, ну т. е. специфику отчасти знаю, но как кроме как оценки опыта в целом, количества и уровня проектов и еще нескольких деталей, я могу понять, что человек действительно-таки "прожженый" в данном вопросе. Совершенно не хочется тратить ни время тех специалистов, которые ищут работу, ни время работодателя напрасно.
Как думаете?


Заранее спасибо за мнения сюда {ссылка удалена}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 09:42
Ответы с готовыми решениями:

Нужен совет
Читаю книгу Герберта Шилдта "Java руководство для начинающего" Есть пример...

Нужен совет с ТЗ
При устройстве на работу дали одно из заданий, которое я не понял как правильно...

Нужен совет
Добрый день. Больше 10 лет программирую в среде Delphi 7-XE3. Участвовал, не...

Нужен совет
Обращаюсь к знающим господам в надежде на подсказку! В общем я хочу сделать web...

Нужен совет
Здравствуйте уважаемые! интересует вопрос: что необходимо для такого рода...

17
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
23.01.2014, 17:08 2
Ну, судя по всему пропущено "не":

но как кроме как оценки опыта в целом, количества и уровня проектов и еще нескольких деталей, я не могу понять, что человек действительно-таки "прожженый" в данном вопросе
И непонятен вопрос. Что делать? Как искать архитектора? Увы, оценить архитектора может только другой архитектор.

P.S. Специалистов, которые Вам нужны, на рынке исчезающе мало. Их надо хантить - искать по компаниям и переманивать.
0
Tamara Kozina
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 20
23.01.2014, 17:24  [ТС] 3
Евгений, спасибо за реакцию. Вы правы, "не" я торжественно пропустила. Вопрос заключался в том, как можно оценить уровень архитектора начально, при этом не имея подобного опыта. Каждый специалист довольно красочно рассказывает о своей многозначительной роли на проекте и о владении той или иной технологии. На встрече у работодателя этого оказывается недостаточно - требуется больший опыт, нежели тот, который демонстрирует специалист. Как пример: товарищ с опытом разработки на Java около 10 лет, с опытом построения архитектуры более трех на проектах крупных банковских систем оказался слаб.
Есть ли возможность выяснить это мне сразу?

По хантингу знаю, только это и остается.

Спасибо в любом случае за ответ.

Тамара
0
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
23.01.2014, 17:38 4
Тамара, тут вообще-то два аспекта.

Первое. Вы, HR, никак не сможете понять уровень человека как архитектора. Я Вам больше скажу - я сам архитектор, у меня 10 лет опыта создания именно архитектуры - и все равно я в процессе интервью смогу определить уровень только лишь приблизительно. Человек может говорить умные слова, причем так, что они складываются в целостную картину. А в процессе работы он делает ошибки. Причем не объективные ошибки, а ошибки в конкретной ситуации. В других ситуациях такие решения могут быть и применимы. В архитектуре вообще практически не существует единственно правильных решений. И находить правильные ситуационные решения - в некоторой степени искусство. Или же серьезный разносторонний опыт.

Есть вторая сторона медали - требования работодателя. Возможно, ему нужно что-то конкретное, возможно - специфическое. Возможно, у работодателя завышенные требования, такое бывает сплошь и рядом. Один человек не может одновременно на высшем уровне разбираться в архитектуре железа, архитектуре промышленного ПО, архитектуре интеграции и архитектуре разработки. Это совершенно разные области. У нас общее архитектурное поле покрывают более 40 человек. И они практически не пересекаются по областям ответственности. Если работодатель хочет одного человека на всю такую область - он никогда никого не найдет. А понимать это и формировать его ожидания должны специалисты.

Вы можете требования опубликовать? Ну и вилку компенсации? А то вдруг сильные архитекторы на такие требования и такие деньги просто не пойдут?
0
Tamara Kozina
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 20
23.01.2014, 18:03  [ТС] 5
Евгений,

По первому моменту поняла. Это мне остается только иметь в виду.

По второму согласна ибо сама регулярно борюсь с составленными требованиями к кандидату, так как сочетание некоторых специализаций практически не возможно, как бы громко это не звучало.
В моем случае, правда, все не так страшно. Описание ниже. По вилке - сложно сказать, средняя ставка 170 000 рублей, плюс\минус - зависит от возможностей специалиста.

Задачи:
∙ Анализ требований заказчиков;
∙ Разработка концепций, архитектурных решений и подходов к реализации
программных продуктов;
∙ Разработка и согласование проектной документации (концепций, технических заданий,
частных технических заданий, спецификаций реализации, презентаций, планов тестирования;
∙ Выполнение роли лидера группы: планирование работы группы, разработка и постановка
задания для разработчиков на реализацию отдельных компонент системы, отслеживание
выполнения задачи разработчиками/ старшими разработчиками, поддержание рабочей
атмосферы в команде;
∙ Обеспечение требуемого качества исходных текстов кода (структурированность,
логичность, расширяемость, наличие и уместность комментариев);
∙ Контроль соответствия разработанных систем архитектурным требованиям;
∙ Кураторство сотрудников на позициях Разработчика и Старшего разработчика.

Навыки:
∙ Опыт работы архитектором Java от 1 года;
∙ Опыт разработки на J2EE;
∙ Знание ОС семейства UNIX (Solaris, Linux);
∙ Опыт работы с базами данных: умение написать SQL-запрос, умение работать с ОРМ.
Знание, что такое Connection Pool, Prepared Statements, умение применять план запроса,
индексы, партиционирование;
∙ Умение локализовать проблему и предложить варианты исправления;
∙ Знание и следование процессам разработки ПО (умение работать с системой
контроля версий, с баг-трекинговой системой, проведение unit-тестирования написанного
кода, код/дизайн ревью).

Условия:
∙ Работа в команде профессионалов, с возможностью карьерного и профессионального роста;
∙ Оформление по Трудовому Кодексу РФ;
∙ Компания оплачивает обучение и сертификацию;
∙ 100% оплата отпуска и больничного листа;
∙ Оформляется добровольное медицинское страхование для сотрудников;
∙ В компании работает собственный медицинский кабинет;
∙ Скидки на посещение фитнес-клуба;
∙ График работы с 10.00 до 18.30.

Что скажете?
0
KuKu
1559 / 1037 / 93
Регистрация: 17.04.2009
Сообщений: 2,995
23.01.2014, 22:11 6
Цитата Сообщение от Tamara Kozina Посмотреть сообщение
∙ Опыт разработки на J2EE;
∙ Знание ОС семейства UNIX (Solaris, Linux);
∙ Опыт работы с базами данных: умение написать SQL-запрос, умение работать с ОРМ.
Знание, что такое Connection Pool, Prepared Statements, умение применять план запроса,
индексы, партиционирование;
∙ Умение локализовать проблему и предложить варианты исправления;
∙ Знание и следование процессам разработки ПО (умение работать с системой
контроля версий, с баг-трекинговой системой, проведение unit-тестирования написанного
кода, код/дизайн ревью).
Мне одному показалось, что эта часть просто вода Подобные навыки есть у 99.99% разработчиков.
0
Tamara Kozina
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 20
24.01.2014, 07:16  [ТС] 7
аха нет) вода зачастую, к сожалению, и составляет описание. От HR-менеджера ориентиры не самые содержательные, не в обиду ей будет сказано, поэтому нужно разбираться.
Кроме как "опыт разработки больших проектов" в качестве основного требования, ничего более полезного добиться не удалось. Но я борюсь, и Ваши комментарии мен немного воодушевили, стоит, заметить.
0
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
24.01.2014, 10:47 8
Цитата Сообщение от Tamara Kozina Посмотреть сообщение
Что скажете?
Я бы сказал, что навыки - от позиции Java Developer. Даже не Senior Developer.

По задачам требуются как минимум два человека - архитектор и лидер разработчиков. Еще упоминание планов тестирование, что ни к одному из них значения не имеет.

В общем, мое мнение такое - тут не архитектор нужен. Тут нужен просто опытный разработчик с небольшими архитектурными навыками. Хороший team lead. Он в принципе всё перечисленное сделать сможет. И компенсация адекватная.

А если уже несколько архитекторов не прошли через интервью - значит, скорее всего реальные требования принципиально отличаются от того, что тут написано. Тут, кстати, непонятно, зачем навыки масштабных проектов. В задачах ими не пахнет.
0
Tamara Kozina
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 20
24.01.2014, 11:05  [ТС] 9
Евгений, Вас поняла. Первоначально, базируясь на описание, представляла компании именно хороших тим лидов с опытом построения архитектуры, но компания не готова была их рассматривать на данную должность - очень мало опыта "архитекторства". Поэтому этот вариант не подходит, увы
В любом случае я Вам очень благодарна за мнение, правда.
Не знаю, насколько это для Вас актуально, тем не менее всегда к диалогу открыта - занимаюсь подбором специалистов разного профиля в IT, возможно, смогу быть Вам полезна. Сигнализируйте.
И еще раз спасибо!
0
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
24.01.2014, 11:32 10
Цитата Сообщение от Tamara Kozina Посмотреть сообщение
Первоначально, базируясь на описание, представляла компании именно хороших тим лидов с опытом построения архитектуры, но компания не готова была их рассматривать на данную должность - очень мало опыта "архитекторства".
Тогда настаивайте на изменении требований. Говорите, что хорошие архитекторы считают себя overqualified и не отзываются на такую вакансию.

Тем более что для хорошего архитектора компенсация сильно занижена...
0
Tamara Kozina
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 20
24.01.2014, 11:41  [ТС] 11
Я уже обсуждала этот вопрос с компанией, так как задача у всех одна - найти подходящего специалиста. Работодатель считает, что на его условия должна найтись своя звезда, и если даже большая часть специалистов вполне заслуженно ориентируется на другие суммы, работодатель считает, что вполне можно уложиться и в его лимиты.
0
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
24.01.2014, 15:48 12
Цитата Сообщение от Tamara Kozina Посмотреть сообщение
Работодатель считает, что на его условия должна найтись своя звезда, и если даже большая часть специалистов вполне заслуженно ориентируется на другие суммы, работодатель считает, что вполне можно уложиться и в его лимиты.
Ну в таком случае Вам стоит только посочувствовать - Вы обречены заниматься решением задачи, заведомо решения не имеющей. Работодателю сочувствовать не стоит, глупость таких чувств не вызывает.
1
Tamara Kozina
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 20
24.01.2014, 15:58  [ТС] 13
кстати узнала их способ (один из) оценки навыков "прожженого" архитектора: нарисуйте архитектуру, защитите ее, задайте вопросы заказчику - аля покажите, что умеете, выберите инструменты разработки и обоснуйте.
По-мойму это сильно.
0
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
24.01.2014, 16:06 14
Цитата Сообщение от Tamara Kozina Посмотреть сообщение
кстати узнала их способ (один из) оценки навыков "прожженого" архитектора: нарисуйте архитектуру, защитите ее, задайте вопросы заказчику - аля покажите, что умеете, выберите инструменты разработки и обоснуйте.
По-мойму это сильно.
Это на коленке. Чтобы нарисовать хорошую архитектуру среднего проекта, надо от пяти до пятнадцати рабочих дней целиком. Согласование и уточнение бизнес-требований перед этим - вопросы заказчику - длится до нескольких месяцев, согласование - защита - тоже может занять несколько месяцев. А в течение интервью правильно нарисовать архитектуру практически невозможно. Ее нужно обдумать. В лучшем случае это дать человеку задачу на дом, чтобы встретиться через неделю.
0
Tamara Kozina
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 20
24.01.2014, 16:19  [ТС] 15
вот-вот, сама удивилась, но это распространяется на всех, но по этой "коленочной" задаче оценивается навык сразу на первой встрече, при этом не могу сказать, что работодатель вызывает во мне какие-то негативные чувства
0
Seytan12
0 / 0 / 2
Регистрация: 03.01.2014
Сообщений: 8
04.02.2014, 00:23 16
Для подготовки программ на своих компьютерах рекомендуется установить:
cистему Java SDK 1.6 и документацию к ней (http//java.sun.com);
cистему BlueJ версии 2.2.0 или более позднюю (http//www.blue.org).

 Комментарий модератора 
в следующий раз такие объёмные посты пожалуйста прячьте под спойлер


Кликните здесь для просмотра всего текста

1
Создать класс для решения задачи вычислительного характера.
Дано: а, в – стороны прямоугольника. Вычислить периметр прямоугольника по формуле P=2*(a+b).

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

3
Создать проект, позволяющий задать двумерный массив, содержащий нули и единицы. Выполнить обработку по варианту в соответствии с таблицей 3. Исходный массив и результаты вывести на экран. Количество элементов, значения и способ заполнения массива выбрать самим (инициализация, ввод с клавиатуры (через конструктор класса или параметры метода), заполнение генератором случайных чисел). Оформить как отдельные методы такие разделы алгоритма: вывод двумерного массива, получение результата, вывод результата ( если это массив ). В любом случае массивы передавать как параметр метода.
Найти и вывести столбец, содержащий наибольшее количество единиц.

4
Выполнить задание для строки, состоящей из слов, разделенных пробелом, в соответствии с таблицей 4. Вывести на экран монитора строку до и после преобразования.
Определить количество слов, равных первому слову строки.

5
В текстовом редакторе создать файл, заполнить произвольными числами. Числа разделять пробелами. Количество чисел и тип выбрать самим. Сформиро-вать из файла одномерный массив. Выполнить обработку по варианту в соответствии с таблицей 6. Исходный массив, прочитанный из файла, и результаты вывести в другой файл или на терминал. Задачу следует разбить на части, реализованные отдельными методами.
Упорядочить массив по возрастанию методом «прямого выбора»

6
Выполнить повторно задание 1 по следующей схеме: создать 2 класса:
1-й класс: методы вычисления и вывода на терминал результата.
2-й класс: поля (исходные данные и результат), конструктор с параметрами (для ввода исходных данных), метод в котором создается объект первого класса и вызываются (т.е. выполняются) методы этого объекта.
Задание то же что и в первом задании.


7
Проанализировать свой вариант задания и составить программу. В качестве прототипа рекомендуется использовать программы из примеров.
На рисунке 1 представлены семь вариантов иерархии класса (верхний элемент) и его подклассов. Варианты 8, 9, 10 указаны в скобках. Ориентируясь на классы A и B из примеров, создать классы, соответствующие варианту. В методе main продемонстрировать доступ к полям и методам классов


8
Даны массив А из 6 элементов, массив Б из 7 элементов и массив В из 8 элементов. Образовать из массивов множества МА, МБ, МС. Получить множество МР=МА \ (МБ U МС).

Добавлено через 2 минуты
Задача: Аналог grep

Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой информации подаваемой на вход и на выходе показывала лишь те строчки, которые содержат слово передаваемое программе на вход в качестве аргумента.

Варианты усложнения:
Программа не должна учитывать регистр
В аргументах может быть передано не одно слово, а несколько
В качестве аргумента может быть задано не конкретное слово, а регулярное выражение


Задача: Аналог Sort

Написать консольную программу, которая бы сортировала текст поданный ей на стандартный вход по алфавиту.

Варианты усложнения:
Программа должна игнорировать регистр при сортировке
Программа должна сортировать не по алфавиту, а по количеству символов в строке
Программа в качестве аргумента может получать порядковый номер слова в строке, по которому надо сортировать строки


Задача: чат

Задача состоит из этапов, в конце которых должен получиться стандартный консольный чат.
Реализовать консольную программу, которая бы открывала серверный сокет на порту 1234. При подключении клиента программа должна выводить все то, что передал клиент. Удостовериться в работоспособности можно попробовав подключиться с помощью системной программы telnet. В дальнейшем будем эту программу называть серверной частью
Усложнить программу и сделать так, чтобы можно было подключиться одновременно нескольким клиентам посредством telnet
Реализовать другую консольную программу, которая по сути была бы аналогом telnet — т.е. подключалась к заданному IP на порт 1234 и отправляла бы на сервер строчку введённую пользователем по нажатию enter. В дальнейшем будем эту программу называть клиентской частью или просто клиентом
Усложнить серверную часть программы таким образом, чтобы пришедшее сообщение от одного пользователя отправлялось сразу всем пользователям, которые подключены в данный момент к серверу
Усложнить серверную часть программы так, чтобы при подключении нового пользователя ему показывались последние 10 сообщений
При запуске клиентская часть должна спрашивать у пользователя его имя. В дальнейшем при отсылке сообщений на сервер должен использоваться следующий шаблон: «Имя пользователя: текст»
До этого момента сообщения между сервером и клиентом — обычный текст. Это с трудом позволяет передавать так же сопроводительную информацию например: имя пользователя, дату приёма сообщения сервером и т.д. В этом задании необходимо перевести обмен информации на использование Serialization. Т.е. обмен информацией между клиентом и сервером должно производится посредством сериализованного класса Message, который в свою очередь содержит помимо текста дополнительную атрибутику: дата создания сообщения, имя пользователя, IP отправителя, режим в котором находится отправитель (как в аське: сплю, ем, работаю )
Дописать серверную часть таким образом, чтобы она следила за количеством подключённых пользователей и не позволяла подключаться большему количеству пользователей нежели 10
На данный момент многие параметры сервера прописаны в коде самой программы, например: порт на котором открывать сервер, количество сообщений выдаваемых при подключении, максимальное количество подключённых пользователей и т.д. Перенести все эти конфигурационные параметры в XML файл.
Сервер должен позволять подключаться только тем пользователям, которые знают соответствующий пароль для их имени пользователя. Для этого при запуске клиент должен спрашивать так же и пароль. А сервер при подключении нового пользователя должен сверять имя пользователя/пароль с имеющимися данными в конфигурационном файле. Если пароль не подходит, или такой пользователь не существует, то сервер должен отключить клиента с соответствующим сообщением.


Задача: Java Command Line (JCL)

Данная задача обычно дается мной в качестве зачетной по всему курсу J2SDK.
Реализовать консольную программу на Java, которая бы представляла некую реализацию командной строки, то есть могла бы выполнять команды вводимые построчно пользователем. Под командой понимается следующая строка:
"имя команды" "аргумент №1" "аргумент №2" ... "аргумент №N"
Код, который выполняет необходимую команду пользователя, должен оформляться как отдельный Java класс. Соответствие между классом и именем команды должно задаваться в конфигурационном (XML) файле программы. Команда во время выполнения может так же взаимодействовать с пользователем используя стандартный ввод/вывод.
Программа должна поддерживать следующие команды:

dir — выводит список файлов в текущей директории
cd «путь» — перейти в директорию, путь к которой задан первым аргументом
pwd — вывести полный путь до текущей директории


Варианты усложнения:
Программа должна поддерживать команду "! имя_системной_программы аргумент№1… аргумент№N", которая запускает системную программу с соответствующими аргументами — так же ввод JCL должен подаваться на вход системной программы и тоже самое с ее выводом
Программа должна поддерживать следующий синтаксис: «команда1 аргументы && команда2 аргументы» и «команда1 аргументы || команда2 аргументы». В первом случае «команда2» запускается только если «команда1» выполнилась успешно. Во втором случае «команда2» запускается только тогда, когда выполнение «команда1» завершилось не успешно
Программа должна поддерживать возможность запускать команды в фоновом режиме. Для этого достаточно в конце командной строчки ввести знак "&". Так же программа должна поддерживать команду «jobs», которая выводит список задач, которые выполняются в фоне
Реализовать возможность запускать программу в сетевом варианте: т.е. программа открывает порт и работать с ней можно используя обычный telnet с отдалённой машины. Программа должна поддерживать подключение сразу нескольких пользователей, а так же команды who и write, которые показывают кто подключён и посылают сообщение всем соответственно.


P.S. Если кто-то попробует себя в Java'e по этим задачам, то готов сам проверить решённые задачи и, по возможности, дать полезные замечания

P.P.S. Как думаете, стоит ли снабдить материал ссылками на пакеты и библиотеки, знание которых понадобиться для реализации того или иного пункта?

Добавлено через 1 минуту
Задача: Аналог grep

Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой информации подаваемой на вход и на выходе показывала лишь те строчки, которые содержат слово передаваемое программе на вход в качестве аргумента.

Варианты усложнения:
Программа не должна учитывать регистр
В аргументах может быть передано не одно слово, а несколько
В качестве аргумента может быть задано не конкретное слово, а регулярное выражение


Задача: Аналог Sort

Написать консольную программу, которая бы сортировала текст поданный ей на стандартный вход по алфавиту.

Варианты усложнения:
Программа должна игнорировать регистр при сортировке
Программа должна сортировать не по алфавиту, а по количеству символов в строке
Программа в качестве аргумента может получать порядковый номер слова в строке, по которому надо сортировать строки


Задача: чат

Задача состоит из этапов, в конце которых должен получиться стандартный консольный чат.
Реализовать консольную программу, которая бы открывала серверный сокет на порту 1234. При подключении клиента программа должна выводить все то, что передал клиент. Удостовериться в работоспособности можно попробовав подключиться с помощью системной программы telnet. В дальнейшем будем эту программу называть серверной частью
Усложнить программу и сделать так, чтобы можно было подключиться одновременно нескольким клиентам посредством telnet
Реализовать другую консольную программу, которая по сути была бы аналогом telnet — т.е. подключалась к заданному IP на порт 1234 и отправляла бы на сервер строчку введённую пользователем по нажатию enter. В дальнейшем будем эту программу называть клиентской частью или просто клиентом
Усложнить серверную часть программы таким образом, чтобы пришедшее сообщение от одного пользователя отправлялось сразу всем пользователям, которые подключены в данный момент к серверу
Усложнить серверную часть программы так, чтобы при подключении нового пользователя ему показывались последние 10 сообщений
При запуске клиентская часть должна спрашивать у пользователя его имя. В дальнейшем при отсылке сообщений на сервер должен использоваться следующий шаблон: «Имя пользователя: текст»
До этого момента сообщения между сервером и клиентом — обычный текст. Это с трудом позволяет передавать так же сопроводительную информацию например: имя пользователя, дату приёма сообщения сервером и т.д. В этом задании необходимо перевести обмен информации на использование Serialization. Т.е. обмен информацией между клиентом и сервером должно производится посредством сериализованного класса Message, который в свою очередь содержит помимо текста дополнительную атрибутику: дата создания сообщения, имя пользователя, IP отправителя, режим в котором находится отправитель (как в аське: сплю, ем, работаю )
Дописать серверную часть таким образом, чтобы она следила за количеством подключённых пользователей и не позволяла подключаться большему количеству пользователей нежели 10
На данный момент многие параметры сервера прописаны в коде самой программы, например: порт на котором открывать сервер, количество сообщений выдаваемых при подключении, максимальное количество подключённых пользователей и т.д. Перенести все эти конфигурационные параметры в XML файл.
Сервер должен позволять подключаться только тем пользователям, которые знают соответствующий пароль для их имени пользователя. Для этого при запуске клиент должен спрашивать так же и пароль. А сервер при подключении нового пользователя должен сверять имя пользователя/пароль с имеющимися данными в конфигурационном файле. Если пароль не подходит, или такой пользователь не существует, то сервер должен отключить клиента с соответствующим сообщением.


Задача: Java Command Line (JCL)

Данная задача обычно дается мной в качестве зачетной по всему курсу J2SDK.
Реализовать консольную программу на Java, которая бы представляла некую реализацию командной строки, то есть могла бы выполнять команды вводимые построчно пользователем. Под командой понимается следующая строка:
"имя команды" "аргумент №1" "аргумент №2" ... "аргумент №N"
Код, который выполняет необходимую команду пользователя, должен оформляться как отдельный Java класс. Соответствие между классом и именем команды должно задаваться в конфигурационном (XML) файле программы. Команда во время выполнения может так же взаимодействовать с пользователем используя стандартный ввод/вывод.
Программа должна поддерживать следующие команды:

dir — выводит список файлов в текущей директории
cd «путь» — перейти в директорию, путь к которой задан первым аргументом
pwd — вывести полный путь до текущей директории


Варианты усложнения:
Программа должна поддерживать команду "! имя_системной_программы аргумент№1… аргумент№N", которая запускает системную программу с соответствующими аргументами — так же ввод JCL должен подаваться на вход системной программы и тоже самое с ее выводом
Программа должна поддерживать следующий синтаксис: «команда1 аргументы && команда2 аргументы» и «команда1 аргументы || команда2 аргументы». В первом случае «команда2» запускается только если «команда1» выполнилась успешно. Во втором случае «команда2» запускается только тогда, когда выполнение «команда1» завершилось не успешно
Программа должна поддерживать возможность запускать команды в фоновом режиме. Для этого достаточно в конце командной строчки ввести знак "&". Так же программа должна поддерживать команду «jobs», которая выводит список задач, которые выполняются в фоне
Реализовать возможность запускать программу в сетевом варианте: т.е. программа открывает порт и работать с ней можно используя обычный telnet с отдалённой машины. Программа должна поддерживать подключение сразу нескольких пользователей, а так же команды who и write, которые показывают кто подключён и посылают сообщение всем соответственно.


P.S. Если кто-то попробует себя в Java'e по этим задачам, то готов сам проверить решённые задачи и, по возможности, дать полезные замечания

P.P.S. Как думаете, стоит ли снабдить материал ссылками на пакеты и библиотеки, знание которых понадобиться для реализации того или иного пункта?

Добавлено через 28 секунд
Задача: Аналог grep

Необходимо реализовать консольную программу, которая бы фильтровала поток текстовой информации подаваемой на вход и на выходе показывала лишь те строчки, которые содержат слово передаваемое программе на вход в качестве аргумента.

Варианты усложнения:
Программа не должна учитывать регистр
В аргументах может быть передано не одно слово, а несколько
В качестве аргумента может быть задано не конкретное слово, а регулярное выражение


Задача: Аналог Sort

Написать консольную программу, которая бы сортировала текст поданный ей на стандартный вход по алфавиту.

Варианты усложнения:
Программа должна игнорировать регистр при сортировке
Программа должна сортировать не по алфавиту, а по количеству символов в строке
Программа в качестве аргумента может получать порядковый номер слова в строке, по которому надо сортировать строки


Задача: чат

Задача состоит из этапов, в конце которых должен получиться стандартный консольный чат.
Реализовать консольную программу, которая бы открывала серверный сокет на порту 1234. При подключении клиента программа должна выводить все то, что передал клиент. Удостовериться в работоспособности можно попробовав подключиться с помощью системной программы telnet. В дальнейшем будем эту программу называть серверной частью
Усложнить программу и сделать так, чтобы можно было подключиться одновременно нескольким клиентам посредством telnet
Реализовать другую консольную программу, которая по сути была бы аналогом telnet — т.е. подключалась к заданному IP на порт 1234 и отправляла бы на сервер строчку введённую пользователем по нажатию enter. В дальнейшем будем эту программу называть клиентской частью или просто клиентом
Усложнить серверную часть программы таким образом, чтобы пришедшее сообщение от одного пользователя отправлялось сразу всем пользователям, которые подключены в данный момент к серверу
Усложнить серверную часть программы так, чтобы при подключении нового пользователя ему показывались последние 10 сообщений
При запуске клиентская часть должна спрашивать у пользователя его имя. В дальнейшем при отсылке сообщений на сервер должен использоваться следующий шаблон: «Имя пользователя: текст»
До этого момента сообщения между сервером и клиентом — обычный текст. Это с трудом позволяет передавать так же сопроводительную информацию например: имя пользователя, дату приёма сообщения сервером и т.д. В этом задании необходимо перевести обмен информации на использование Serialization. Т.е. обмен информацией между клиентом и сервером должно производится посредством сериализованного класса Message, который в свою очередь содержит помимо текста дополнительную атрибутику: дата создания сообщения, имя пользователя, IP отправителя, режим в котором находится отправитель (как в аське: сплю, ем, работаю )
Дописать серверную часть таким образом, чтобы она следила за количеством подключённых пользователей и не позволяла подключаться большему количеству пользователей нежели 10
На данный момент многие параметры сервера прописаны в коде самой программы, например: порт на котором открывать сервер, количество сообщений выдаваемых при подключении, максимальное количество подключённых пользователей и т.д. Перенести все эти конфигурационные параметры в XML файл.
Сервер должен позволять подключаться только тем пользователям, которые знают соответствующий пароль для их имени пользователя. Для этого при запуске клиент должен спрашивать так же и пароль. А сервер при подключении нового пользователя должен сверять имя пользователя/пароль с имеющимися данными в конфигурационном файле. Если пароль не подходит, или такой пользователь не существует, то сервер должен отключить клиента с соответствующим сообщением.


Задача: Java Command Line (JCL)

Данная задача обычно дается мной в качестве зачетной по всему курсу J2SDK.
Реализовать консольную программу на Java, которая бы представляла некую реализацию командной строки, то есть могла бы выполнять команды вводимые построчно пользователем. Под командой понимается следующая строка:
"имя команды" "аргумент №1" "аргумент №2" ... "аргумент №N"
Код, который выполняет необходимую команду пользователя, должен оформляться как отдельный Java класс. Соответствие между классом и именем команды должно задаваться в конфигурационном (XML) файле программы. Команда во время выполнения может так же взаимодействовать с пользователем используя стандартный ввод/вывод.
Программа должна поддерживать следующие команды:

dir — выводит список файлов в текущей директории
cd «путь» — перейти в директорию, путь к которой задан первым аргументом
pwd — вывести полный путь до текущей директории


Варианты усложнения:
Программа должна поддерживать команду "! имя_системной_программы аргумент№1… аргумент№N", которая запускает системную программу с соответствующими аргументами — так же ввод JCL должен подаваться на вход системной программы и тоже самое с ее выводом
Программа должна поддерживать следующий синтаксис: «команда1 аргументы && команда2 аргументы» и «команда1 аргументы || команда2 аргументы». В первом случае «команда2» запускается только если «команда1» выполнилась успешно. Во втором случае «команда2» запускается только тогда, когда выполнение «команда1» завершилось не успешно
Программа должна поддерживать возможность запускать команды в фоновом режиме. Для этого достаточно в конце командной строчки ввести знак "&". Так же программа должна поддерживать команду «jobs», которая выводит список задач, которые выполняются в фоне
Реализовать возможность запускать программу в сетевом варианте: т.е. программа открывает порт и работать с ней можно используя обычный telnet с отдалённой машины. Программа должна поддерживать подключение сразу нескольких пользователей, а так же команды who и write, которые показывают кто подключён и посылают сообщение всем соответственно.


P.S. Если кто-то попробует себя в Java'e по этим задачам, то готов сам проверить решённые задачи и, по возможности, дать полезные замечания

P.P.S. Как думаете, стоит ли снабдить материал ссылками на пакеты и библиотеки, знание которых понадобиться для реализации того или иного пункта?
0
mutagen
2565 / 2238 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
04.02.2014, 03:31 17
Цитата Сообщение от Tamara Kozina Посмотреть сообщение
Работодатель считает, что на его условия должна найтись своя звезда
мне это чем-то напоминает моду в некоторых компаниях устраивать конкурентные гонки среди девелоперов, кому "неслабо эту такску сделать быстрее"
Даже если бы и хотелось претендовать на эту должность, скорее всего я бы отказался от такого работодателя.
У него психологическая цель устроить с хедхантами и архитектами кандидатами сражение за его деньги среди лучших, но сам то он не является мотивирующей целью.
Я ещё понимаю оправданность данного подхода отфильтровки специалистов у фирм с именем типа гугля или фейсбука, но этот ваш работодатель явно переоценивает заинтересованность в его работе
0
Tamara Kozina
0 / 0 / 0
Регистрация: 18.12.2012
Сообщений: 20
04.02.2014, 05:41  [ТС] 18
это будет очень неправильно с моей стороны по отношению к моему работодателю, но отчасти с вами соглашусь, это все-таки очень специфичная мера набора новых сотрудников. С др стороны компания просто не очень представляет, каким лучшим способом определить квалификацию архитектора. С недавних пор они пересмотрели уровень подготовки своих технарей и поняли, что качественно необходимо его повышать, поэтому и требуют уже на собеседовании чего-то заоблачного, хотя в итоге (коммент от Skipy) даже такие замороченные тестирования не всегда являются показателем
0
04.02.2014, 05:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2014, 05:41

Нужен совет по выбору архитектуры
Ребят, помогите, пожалуйста выбрать, чем пользоваться. Думаю сделать такую...

Нужен совет с решением задачи
Суть токова в xhtml есть 2 формы: Где вводится значение и кнопка "ок". Надо...

Нужен совет по поводу оптимизации
Помогите пожалуйста разобраться почему подтормаживает данная программа deleted...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru