|
0 / 0 / 0
Регистрация: 25.07.2014
Сообщений: 32
|
||||||
Почему не прошло тестовое задание на работу?27.03.2015, 11:03. Показов 4819. Ответов 19
Метки нет (Все метки)
Нужно было выполнить следующее тестовое задание:
Необходимо описать задачу с применением принципов ООП. Дано объекты-фигуры следующих видов: квадрат, треугольник, круг, трапеция. Каждую фигуру можно нарисовать, получить ее площадь и цвет. Также фигуры имеют уникальные методы, например: вернуть радиус, длину гипотенузы, длину стороны и т. д. Нам необходимо сгенерировать случайный набор фигур, количество объектов в наборе также заранее неизвестно. После генерации массива нужно вывести весь список объектов, которые у нас имеются, например: Фигура: квадрат, площадь: 25 кв. ед., длина стороны: 5 ед., цвет: синий Фигура: треугольник, площадь: 12,5 кв.ед., гипотенуза: 7.1 ед., цвет: желтый Мое решение им не подошло, хотя, казалось бы, задачка - проще некуда. Ткните меня, пожалуйста, носом - что не так. вот мое решение:
0
|
||||||
| 27.03.2015, 11:03 | |
|
Ответы с готовыми решениями:
19
Тестовое задание при приеме на работу О том как я провалил тестовое задание при приеме на работу
|
|
Mobile Software Engineer
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
|
|
| 27.03.2015, 11:16 | |
|
Hbadger, не в QA ли часом пробовались?
0
|
|
|
23 / 23 / 12
Регистрация: 25.03.2015
Сообщений: 98
|
|
| 27.03.2015, 11:16 | |
|
у вас ведь программа ни чего не рисует)
Судя по заданию, от вас хотели увидеть (кроме понимания ООП) умение работать с GUI, с потоками... на крайний случай посмотреть на ваши дизайнерские способности. P.S. А может просто уже место заняли, и они решили не говорить причины, а просто отвергнуть задание. Спросите у того, кто не принял.
0
|
|
|
0 / 0 / 0
Регистрация: 25.07.2014
Сообщений: 32
|
|
| 27.03.2015, 11:31 [ТС] | |
|
Ev[G]eN, именно туда) знакомо?)
Добавлено через 4 минуты BleStaR, ну вот я тоже подумала, что может хотели функцию рисования полностью реализованной увидеть. Я просто решила, что раз в задании акцентируется внимание на ООП, то на неё упор и него упор и нужно делать, а рисование представить формально. Ещё сейчас внимательно перечитала условия - "Также фигуры имеют уникальные методы, например: вернуть радиус, длину гипотенузы, длину стороны и т. д." - наверное, нужно было не выпендриваться с абстрактным методом в классе Figure, а реально для каждой фигуры прописать персональный метод с разными именами типа getGiponenuse(), getDiameter() etc.?
0
|
|
|
Mobile Software Engineer
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
|
|
| 27.03.2015, 11:35 | |
|
Hbadger, знакомо
![]() мое тоже не приняли без объяснения причины BleStaR, я уточнял на счет рисования, им это не нужно..там задание только на принципы ООП
0
|
|
|
0 / 0 / 0
Регистрация: 25.07.2014
Сообщений: 32
|
|
| 27.03.2015, 11:46 [ТС] | |
|
Ev[G]eN, ну, я набралась наглости и попросила указать мне на ошибки
посмотрим, что ответят) просто для меня это первое тестовое задание в принципе, только-только решила, что готова таки попробовать искать работу в этой сфере и поэтому особенно интересно что не так. потому что, когда я это задание увидела я подумала "хм, надо же, какая легкотня" и очень озадачилась, когда его не приняли ))
0
|
|
|
1 / 1 / 1
Регистрация: 27.03.2015
Сообщений: 7
|
|
| 27.03.2015, 11:46 | |
|
Я заметил только что rand объявляется 2 раза: в RandomFigureFactory и Test.
В остальном нормально вроде все
0
|
|
|
Mobile Software Engineer
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
|
|
| 27.03.2015, 11:48 | |
|
Hbadger, ставлю 10 грн на то, что они Вам даже не ответят
0
|
|
|
0 / 0 / 0
Регистрация: 25.07.2014
Сообщений: 32
|
|
| 27.03.2015, 11:52 [ТС] | |
|
Ev[G]eN, вынуждена присоединиться к вашей ставке))) осталось найти того, кто на противоположное поставит и будет хоть какой-то профит.
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 27.03.2015, 12:32 | |
|
Hbadger, главное, что бросилось в глаза: почему фигура описывается своей площадью? Площадь должна быть расчётной характеристикой. Описываться фигура должна специфичными для неё параметрами: круг - радиусом; квадрат - длиной стороны; треугольник и трапеция - длинами всех сторон. Понятно, что если основной характеристикой будет площадь, работать будет куда проще. Но у вас в фабрике всё равно switch, так что генерировать нужное количество параметров для каждой фигуры не проблема.
Кроме того, конечно, метод getParameter - спорное архитектурное решение. А если специфичных параметров у фигуры несколько? Например, у круга есть только радиус (диаметр можно опустить), а у эллипса - ещё куча свойств: директриса, эксцентриситет... Опять же, вы getParameter в базовом классе никак не используете, он используется только в методах toString произвольных классов. Так почему было бы не объявить в каждом производном классе методы с нормальными названиями и не вызывать их в toString также, как вы вызываете в нём getParameter? Понятно, что через ссылку на родителя специфичные параметры уже не получить, но это и правильно, родитель ничего не знает о специфике своих детей. Вообще, меня удивляет, что это тестовое задание при приёме на работу. Либо оно слишком простое и реализуется так, как я описал (хотя стоит сказать, что ваша реализация, в принципе, не далека от этого), либо они ждут чего-то виртуозного, но вот чего они ждут, известно, к сожалению, только им. Во втором случае они могли бы хотя бы намекнуть, добавив в задание ограничения или рекомендации.
2
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|||||||||||
| 27.03.2015, 12:48 | |||||||||||
|
Hbadger, код призван продемонстрировать знание ООП. У вас написанно не все что просили в задании, а то что написанно частично неверно.
Как вы уже сами написали выше, в задании было сказанно имплементировать уникальные методы для каждой фигуры а так же некоторые общие методы для всех фигур. У вас уникальных методов нет, а есть какой то неясный abstract double getParameter(); который к тому же обязательный для всех наследников класса фигур. Это пример нечитаемого кода. Метод подсчета площади должен быть абстрактным. Параметр area излишен Теперь насчет метода draw(). Так как он написан, говорит о том что его написал человек, слабо представляющий суть ООП. В нашем случае метод draw() выводит на экран информацию о фигуре. Посути он должен вызывать .toString() а .toString() каждой фигуры должен выводить сначала .toString() базового объекта с общей информацией а затем свой собственный .toString() с уникальными полями. В этом суть наследования. У вас же оба метода реализованны неверно. Так же вы видимо хотели написать красивый код по генерации фигур с использованием паттерна фабрика, однако сам паттерн реализован неверно, что тоже вряд ли добавило вам очков в глазах работадателя. Это насчет ООП. Теперь о композиции
Вобщем смотря на этот код, я бы точно не взял вас писать код. Насчет QA зависит от требований к кандидату однако ваше решение показывает что принципы ООП вы понимаете довольно слабо видимо это и стало причиной отказа
3
|
|||||||||||
|
18 / 18 / 12
Регистрация: 27.03.2015
Сообщений: 72
|
||||||
| 27.03.2015, 13:37 | ||||||
|
Я бы такой код тоже не принял.
А такой принял бы ![]()
0
|
||||||
|
1 / 1 / 1
Регистрация: 27.03.2015
Сообщений: 7
|
||
| 27.03.2015, 13:41 | ||
|
Вы это имели ввиду?
0
|
||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 27.03.2015, 13:45 | |
|
Artem2000, есть несколько вариантов реализации. Один из них это получение аргумента.
Добавлено через 50 секунд javafx, ваш код во-первых неполный, во-вторых неверный.
0
|
|
|
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
|
||||||
| 27.03.2015, 13:46 | ||||||
1
|
||||||
|
18 / 18 / 12
Регистрация: 27.03.2015
Сообщений: 72
|
||
| 27.03.2015, 14:00 | ||
А то что в методе toString накосячил - так это от спешки
0
|
||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 27.03.2015, 16:03 | |
|
javafx, принцип тоже неверный. У вашего квадрата есть цвет, а вы его не показываете.
0
|
|
|
0 / 0 / 0
Регистрация: 25.07.2014
Сообщений: 32
|
||||||
| 27.03.2015, 19:24 [ТС] | ||||||
|
KEKCoGEN, спасибо за развернутый ответ. это было то, что нужно. Прелести самообучения - налицо: то, что мне казалось, я понимаю достаточно ясно, наделе совсем не так.
По поводу enum - изначально с ним и написала, потом почему-то решила, что "нужно быть проще" и заменила на массив. По поводу generateFigures() - да, накосячила, при чем ведь сколько раз в умных книжках мне писали "одна функция выполняет одно действие, избегайте объемных, многозадачных методов" Если можно, опишите чуть подробнее, в чем ошибка реализации паттерна фабрика (да, хотелось выпендриться, но не вышло ![]() Добавлено через 1 час 54 минуты KEKCoGEN, По поводу методов draw() и toString(). Мне кажется, здесь у меня главный "затык": (массив на перечисление не заменяла, остальное пока не трогала, интересуют именно эти методы)
0
|
||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 27.03.2015, 19:38 | |
|
Hbadger, а теперь уберите метод draw из производных классов и посмотрите, что получится.
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 27.03.2015, 19:43 | |
|
Hbadger, вывод площади можно убрать в toString родительского класса. В остальном норм.
Добавлено через 3 минуты да, draw() должна быть только в родительском классе.
0
|
|
| 27.03.2015, 19:43 | |
|
Помогаю со студенческими работами здесь
20
Написать ответы на тестовое задание при приёме на работу (исключения, sizeof, mutex) Тестовое задание Тестовое задание Тестовое задание Тестовое задание Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU
YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей.
Звучит. . .
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит:
токи, напряжения и их 1 и 2 производные при t = 0;. . .
|
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|