G>Впрочем, не надо. В ближайшее время тестовое задание будет изменено, а пообсуждать решение полезно по-любому.
Это точно. Вот например, мне совершенно непонятно, почему все (которые я видел?) показанные тут решения оперируют при моделировании именно координатной картой городов, которой на самом деле просто заданы исходные данные. Сама же модель распределения motif'ов, описанная в задаче, работает просто на графе связанности городов (статичном, как сама карта). И не нужно каждый раз высчитывать "GetNeighbours( city, map )" и тому подобные вещи. Увеличивается производительность. Повышается уровень абстракции, как следствие — читабельность и простота кода.
Интересно было бы узнать — считалась бы подобная реализация (парсер карты -> модель как граф, просто со статичным списком городов и их соседей) примером "хрупкого" дизайна или нет. Потому что, конечно, условие задачи можно достаточно просто изменить так, что карта станет действительно необходима при распределении. Но, imho, все-таки появление "GetNeighbours" внутри "дневного" цикла распределения — это одна из первых тем для резговора.
Кстати, наверное при таком подходе к проверке, который описал Gaperton, накопилось много достаточно формальной статистики, какие решения приносят. Интересно было бы (если это не является секретом) посмотреть на средние числовые показатели.
Раз уж решили ветку не удалять и обсудить этот пример всесторонне.
Здравствуйте, Igor Trofimov, Вы писали:
G>>Впрочем, не надо. В ближайшее время тестовое задание будет изменено, а пообсуждать решение полезно по-любому.
iT>Это точно. Вот например, мне совершенно непонятно, почему все (которые я видел?) показанные тут решения оперируют при моделировании именно координатной картой городов, которой на самом деле просто заданы исходные данные. Сама же модель распределения motif'ов, описанная в задаче, работает просто на графе связанности городов (статичном, как сама карта). И не нужно каждый раз высчитывать "GetNeighbours( city, map )" и тому подобные вещи. Увеличивается производительность. Повышается уровень абстракции, как следствие — читабельность и простота кода.
+1
iT>Интересно было бы узнать — считалась бы подобная реализация (парсер карты -> модель как граф, просто со статичным списком городов и их соседей) примером "хрупкого" дизайна или нет. Потому что, конечно, условие задачи можно достаточно просто изменить так, что карта станет действительно необходима при распределении. Но, imho, все-таки появление "GetNeighbours" внутри "дневного" цикла распределения — это одна из первых тем для резговора.
Конечно же, это считалось безусловным плюсом. Такой дизайн шлют 10-20% кандидатов. Большая часть присылает решение на массиве, если больше нигде не накосячили, то их приглашают на интервью (пример такого решения я и дал). В течении которого котором им в числе прочего предстоит придумать вот этот второй вариант. Автор приведенного мной решения с этим справился блестяще — сразу видно, что человек рассматривал несколько вариантов когда дизайнил, а это нам и надо. Вопрос звучит как "что надо сделать, чтобы нормально обрабатывать разреженные вытянутые карты." Справился — молодец.
iT>Кстати, наверное при таком подходе к проверке, который описал Gaperton, накопилось много достаточно формальной статистики, какие решения приносят. Интересно было бы (если это не является секретом) посмотреть на средние числовые показатели.
Формальной — нет. Есть субъективные впечатления проверяющих.
iT>Это точно. Вот например, мне совершенно непонятно, почему все (которые я видел?) показанные тут решения оперируют при моделировании именно координатной картой городов, которой на самом деле просто заданы исходные данные. Сама же модель распределения motif'ов, описанная в задаче, работает просто на графе связанности городов (статичном, как сама карта). И не нужно каждый раз высчитывать "GetNeighbours( city, map )" и тому подобные вещи. Увеличивается производительность. Повышается уровень абстракции, как следствие — читабельность и простота кода.
Именно так и сделал в своём решении Решение прокатило, хотя насколько его оценили близко к эталонному — сказать не могу.
G>Формальной — нет. Есть субъективные впечатления проверяющих.
Ну.. конечно субъективной. Но — цифирки же ставите 0..2 по различным критериям? Или это не в обязательном порядке? Вот и интересно было бы узнать — где народ обычно сильнее — условно говоря, в Performance или в Scalability Хоть и по субъективным оценкам.
Здравствуйте, Phacochoerus, Вы писали:
P>Здравствуйте, chelovek, Вы писали:
C>>:...Буду надеяться, что задачку пришлют и при том уже новую.
P>Gaperton новую придумал, ее и пришлют.
А вот и не угадал. Меня приняли решение "не рассматривать"
(равномерно относительно качества возвожного решения задачи).
Правда в Зеленоград я не очень хотел.
Здравствуйте, chelovek, Вы писали: C>А вот и не угадал. Меня приняли решение "не рассматривать" C>(равномерно относительно качества возвожного решения задачи). C>Правда в Зеленоград я не очень хотел.
Вот как... А разве до отправки задачи проводятся какие-то собеседования? Мне казалось, задания всем высылают, у кого в резюме написано "программист"...
iT>Это точно. Вот например, мне совершенно непонятно, почему все (которые я видел?) показанные тут решения оперируют при моделировании именно координатной картой городов, которой на самом деле просто заданы исходные данные. Сама же модель распределения motif'ов, описанная в задаче, работает просто на графе связанности городов (статичном, как сама карта).
И не нужно каждый раз высчитывать "GetNeighbours( city, map )"
и тому подобные вещи. Увеличивается производительность. Повышается уровень абстракции, как следствие — читабельность и простота кода.
У меня вычисление "соседей" производится только один раз при первом вызове метода EuropeanUnion.GetNeighbours(City city).
Ве последующие вызовА выбирают соседей из хеш-таблицы (созданой при первом вызове)...
Здравствуйте, Phacochoerus, Вы писали:
P>Здравствуйте, chelovek, Вы писали: C>>А вот и не угадал. Меня приняли решение "не рассматривать" C>>(равномерно относительно качества возвожного решения задачи). C>>Правда в Зеленоград я не очень хотел.
P>Вот как... А разве до отправки задачи проводятся какие-то собеседования? Мне казалось, задания всем высылают, у кого в резюме написано "программист"...
Если через агентство устраиваться, то сначала идешь в агентство на собеседование.
Здравствуйте, Igor Trofimov, Вы писали:
G>>Формальной — нет. Есть субъективные впечатления проверяющих.
iT>Ну.. конечно субъективной. Но — цифирки же ставите 0..2 по различным критериям? Или это не в обязательном порядке? Вот и интересно было бы узнать — где народ обычно сильнее — условно говоря, в Performance или в Scalability Хоть и по субъективным оценкам.
Это надо HR спрашивать, и еще не известно, может они выбрасывают эти чеклисты. То, что они статистики не ведут — это точно можно сказать. Для них главное — вердикт, продолжать или нет.
да уж, на мой сромнейший взлгяд довольно большой так называемый овердэзайн, проявлюящийся в большом количестве ненужных вещей (опять же мое скромнейшее), например там два неймспейса (!), выделен целый файл длиной 230 строк для декларации типов (!) и т.д. и т.п.
Это для решения одной небольшой задачки, короче прикололся над эталоном ...
LF>На самом деле все намного проще — надо просто просить кандидатов на доске написать код, допустим перевенуть строку. Данное задание несмотря на свою легкость сразу показывает твой уровень, и подтверждает ты ли делал тестовое задание или нет
Ничерта это не показывает. У меня например есть свойство что я не люблю писать код без спокойного обдумывания, на собеседовании это крайне затруднено. Знаю многих отличных программеров которые не смогут найти подходящее решение "не отходя от кассы". С другой стороны многие "нули" которые знают решение этой задачки с легкостью пройдут "тест".
А решение простецкое — два указателя, один на первый символ, другой на последний. Меняемся значениями, первый инкрементируется, второй декрементируется и т.д. пока не сравняются или второй не станет меньше первого. Здесь проверяются не способности, а знание правильного решения.
Подразумевается "правильное" решение с двумя указателями идущими на встречу друг другу. Не все его находят "не отходя от кассы".
LF>Здравствуйте, Left2, Вы писали:
LF>>>На самом деле все намного проще — надо просто просить кандидатов на доске написать код, допустим перевенуть строку. LF>>>Данное задание несмотря на свою легкость сразу показывает твой уровень, и подтверждает ты ли делал тестовое задание или нет
L>>Как правило это плохой способ. L>>90% людей на собеседовании нервничают — с перепугу даже знающий человек может написать чёрт знает что. А тестовое задание делается дома, в спокойной обстановке и показывает возможности человека куда более реально.
LF>задание — перевернуть строчку, уровень если не школы то 1к университета. Интересно что это с психикой кандидата, если с перепугу не может такое написать, то темболее зачем его брать.
Здравствуйте, Phacochoerus, Вы писали:
P>Здравствуйте, chelovek, Вы писали: C>>Если через агентство устраиваться, то сначала идешь в агентство на собеседование.
P>Ну так отошли резюме напрямую к нам, делов-то...
История такова:
1. Я разместил резюме на job.ru, ...
2. HR из CQG спросила не хотите ли к нам в Зеленоград разработчиком (т.е. не старшим).
3. Я ответил, что в Зеленоград не хочу — только в Москву.
4. HR из CQG сказала, что сообщит, если будет возможность в Москву.
5. Я увидел на rabota.ru объявление агентства "...в Московский офис..."
6. На собеседовании в агентстве уточнилось, что это CQG и что Зеленоград они (агентство) тоже Москвой считают.
Но агент сказала, что уточнит — может можно пока в Зеленоград, а потом в Москву.
7. Прошла неделя и агентство мне ответило, что CQG решило меня в данный момент не рассматривать.
Здравствуйте, AntZ, Вы писали:
LF>>На самом деле все намного проще — надо просто просить кандидатов на доске написать код, допустим перевенуть строку. Данное задание несмотря на свою легкость сразу показывает твой уровень, и подтверждает ты ли делал тестовое задание или нет
AZ>Знаю многих отличных программеров которые не смогут найти подходящее решение "не отходя от кассы". С другой стороны многие "нули" которые знают решение этой задачки с легкостью пройдут "тест".
AZ> Здесь проверяются не способности, а знание правильного решения.
тут не надо искать ПРАВИЛЬНОГО решения, а надо показать что ты вообще умеешь мыслить.
Меня бы смутил кандидат который позиционируется на ведущего разработчика но который
бы не написал ни одной строчки.
Никто его не завставляет писать код под грохотом пулеметов, 5 минут подумай и пиши. Этого достаточно для такого задания
Здравствуйте, _VladimirV_, Вы писали:
_VV>Здравствуйте, Gaperton, Вы писали:
G>>Вот это тестовое задание, решенное одним из кандидатов. Решение очень понравилось. G>>http://www.rsdn.ru:80/File/20496/Euro.zip
_VV>да уж, на мой сромнейший взлгяд довольно большой так называемый овердэзайн, проявлюящийся в большом количестве ненужных вещей (опять же мое скромнейшее), например там два неймспейса (!), выделен целый файл длиной 230 строк для декларации типов (!) и т.д. и т.п.
Любопытно было бы взглянуть на ваш код. Не боитесь?
_VV>Это для решения одной небольшой задачки, короче прикололся над эталоном ...
Прикалывайтесь на здоровье. Тем не менее, добрый совет тем, кто хочет работать в CQG. Жизнь, может быть, несправедливая и неправильная штука, но многие проверяющие дествительно считают этот код очень адекватным. И дикое количество неймспейсов (целых 2!) + наличие целого файла для декларации типов ни капельки не портит впечатление. Скажем так, в массе своей проверяющие обращают внимание на другое.
G>Любопытно было бы взглянуть на ваш код. Не боитесь? _VV>>Это для решения одной небольшой задачки, короче прикололся над эталоном ... G>Прикалывайтесь на здоровье. Тем не менее, добрый совет тем, кто хочет работать в CQG. Жизнь, может быть, несправедливая и неправильная штука, но многие проверяющие дествительно считают этот код очень адекватным. И дикое количество неймспейсов (целых 2!) + наличие целого файла для декларации типов ни капельки не портит впечатление. Скажем так, в массе своей проверяющие обращают внимание на другое.
Решал я эту задачку. Ваши ребята (Николай и Саша) сказали, что мой код им очень понравился. Судя по тому, что на собеседовании мне не было задано ни одного технического вопроса — никаких косячков они не обнаружили.
Так вот. Я с огромным трудом читал этот код. С трудом мог понять что и где там делается. И полностью согласен с _VladimirV_. Это не эталон.