Здравствуйте, mymuss, Вы писали:
M> Если Вы в жизни сталкивались с реальными задачами, то знаете, что пользователи никогда не ставят задачу настолько точно, и тем более не заморачиваются
Ещё как сталиквался. И поэтому знаю, что пользователя нужно вовремя остановить. Как минимум уточнением и формализацией требований (чем я половину постов и занимался, выуживая недосказанные требования из плохо сформулированного вами тз, если на то пошло). Иначе это будут одни противоречивые хотелки, без конца и без краю.
Здравствуйте, IID, Вы писали:
IID>При этом я знаю про целочисленные алгоритмы (см. пост выше), и вскользь о них упомяну (на собеседованиях, как и в РСДН постах мне напрягаться лениво). Что вы скажете обо мне-кандидате ?
PI * 360 — это звучит гордо, да...
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, IID, Вы писали:
IID>При этом я знаю про целочисленные алгоритмы (см. пост выше), и вскользь о них упомяну (на собеседованиях, как и в РСДН постах мне напрягаться лениво). Что вы скажете обо мне-кандидате ?
По стилю кода — типичный джуниор, вот что можно сказать
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, IID, Вы писали:
E>По стилю кода — типичный джуниор, вот что можно сказать
Да что вы говорите Если я на бумажке на собеседовании не напишу все, требуемые по венгерской нотации, префиксы — то я джуниор ? =)
А то что это говно-код для иллюстрации идеи я в самом начале предупредил.
Здравствуйте, elmal, Вы писали:
E>По стилю кода — типичный джуниор, вот что можно сказать
Да, вот ещё что. Приведите ваш вариант, который вы бы набросали на бумажке на собеседовании. Не (как вы выразились) по-джуниорски (если честно, мне любопытно, что для вас было решающим фактором). Честный код, который вы способны написать не от ходя от кассы, за пару минут. Без хелпов и интернета. Отлично, если это будет что-то существеннее, чем приближение отрезками прямых.
Здравствуйте, IID, Вы писали:
ГВ>>PI * 360 — это звучит гордо, да... IID>К чему придирка ? Ведь какая, собственно, разница — может быть 2 * (180.0 / PI) звучит лучше, да. Но суть одна и та же.
Угу, суть одна и та же — ошибочная.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Угу, суть одна и та же — ошибочная.
Перечитал сорец, согласен, 360 там не к месту совсем, ведь градусы никуда не переводим, и так всё в радианах считаем. Там нужна только двойка. Но как real-time иллюстрация кода, пишущегося прямо на собеседовании, на бумажке, пример пойдёт =) (специально же написал, для таких вот придирщиков: "что-то типа такой убогой реализации (хз — работает или нет, набрал для поста)"
лично я бы нарисовал окружность точками, вычисляя их координаты по формуле окружности. уравнение окружности наизусть не помню, поэтому обратился к гуглю. вот что он мне выдал.
(x – a)^2 + (y – b)^2 = R2
второй этап: организация двойного цикла, в котором бы перебирались все координаты x,y. и по формуле вычислял бы, принадлежит ли точка окружности или нет. если принадлежит, то точка становится видимой.
это первое.
второе — я отлично понимаю, что это решение нерациональное с точки зрения ресурсов. при увеличении радиуса круга такое решение будет работать все медленее и медленнее, при этом откушивая все больше и больше процессорного времени. поэтому, вероятно, самым лучшим решением является поиск готового математического модуля, запрограммированного таким образом, чтобы быть максимально адаптирован для компьютерных вычислений. и использовать его.
возникает вопрос, говорит ли то, если я знаю формулу окружности, что я смогу сходу написать хороший и оптимизированный код? однозначно — нет. а раз так, зачем по ней судить об уровне разработчика? лучше поинтересуйтесь его мнением, как он бы решал поставленную задачу?
в том же DirectX. там широко используются матрицы: матрица поворота, матрица движения, матрица наклона. комбинируя между собой эти матрицы, можно добиваться нужных нам эффектов. я сто лет назад изучал матрицы, и совершенно не помню, как их складывать между собой. и на данный момент мне это не нужно, так как DirectX дает мне необходимые функции для их сложения. все что мне нужно помнить, что для поворота фигуры мне нужно использовать матрицу поворота. если вдруг возникнет необходимость изучить матрицы поближе, то я возьму учебник по высшей математике и за пару вечеров восстановлю свои забытые знания. но требовать их на собеседовании нельзя. я имею информацию, что такие матрицы существуют, что их используют для определенных эффектов, и где можно достать информацию по ним. все — это главное, больше и не нужно.
то, что градусы нужно переводить в радианы, вы бы вспомнили во время первого запуска вашей программы. уверен в этом. ошибка, которая не имеет никакого значения.
Здравствуйте, игппук, Вы писали:
И>лично я бы нарисовал окружность точками, вычисляя их координаты по формуле окружности. уравнение окружности наизусть не помню, поэтому обратился к гуглю. вот что он мне выдал.
И>(x – a)^2 + (y – b)^2 = R2
И>второй этап: организация двойного цикла, в котором бы перебирались все координаты x,y. и по формуле вычислял бы, принадлежит ли точка окружности или нет. если принадлежит, то точка становится видимой.
Ужас
И>это первое. И>второе — я отлично понимаю, что это решение нерациональное с точки зрения ресурсов. при увеличении радиуса круга такое решение будет работать все медленее и медленнее, при этом откушивая все больше и больше процессорного времени. поэтому, вероятно, самым лучшим решением является поиск готового математического модуля, запрограммированного таким образом, чтобы быть максимально адаптирован для компьютерных вычислений. и использовать его.
И>возникает вопрос, говорит ли то, если я знаю формулу окружности, что я смогу сходу написать хороший и оптимизированный код? однозначно — нет. а раз так, зачем по ней судить об уровне разработчика? лучше поинтересуйтесь его мнением, как он бы решал поставленную задачу?
Согласен, знание формул тут ни к чему, если нам не нужно искать, скажем, точки пересечения окружностей с чем-либо.
Тут больше к месту уже устаканившиеся _БЫСТРЫЕ_ алгоритмы, типа того же Брезенхейма. Только вот сомневаюсь, что кандидат способен выдумать такой алгоритм прямо на собеседовании, если он о нём до этого не подозревал.
И>в том же DirectX. там широко используются матрицы: матрица поворота, матрица движения, матрица наклона. комбинируя между собой эти матрицы, можно добиваться нужных нам эффектов. я сто лет назад изучал матрицы, и совершенно не помню, как их складывать между собой. и на данный момент мне это не нужно, так как DirectX дает мне необходимые функции для их сложения. все что мне нужно помнить, что для поворота фигуры мне нужно использовать матрицу поворота. если вдруг возникнет необходимость изучить матрицы поближе, то я возьму учебник по высшей математике и за пару вечеров восстановлю свои забытые знания. но требовать их на собеседовании нельзя. я имею информацию, что такие матрицы существуют, что их используют для определенных эффектов, и где можно достать информацию по ним. все — это главное, больше и не нужно.
А вот это уже печально. Я матрицы не использовал уже лет 10 как, Но тем не менее все базовые вещи помню. Да. матрицу поворота сходу не скажу (хотя и выведу минут за 10), а вот как сложить матрицы и перемножить — это само собой помнится, как таблица умножения.
Здравствуйте, IID, Вы писали:
IID>Перечитал сорец, согласен, 360 там не к месту совсем, ведь градусы никуда не переводим, и так всё в радианах считаем. Там нужна только двойка.
Респект.
IID>Но как real-time иллюстрация кода, пишущегося прямо на собеседовании, на бумажке, пример пойдёт =) (специально же написал, для таких вот придирщиков: "что-то типа такой убогой реализации (хз — работает или нет, набрал для поста)"
Вот именно, что на собеседовании как раз имеет смысл сосредоточиться: "А ну, разбежались нах! Я щас думать буду!" Это тоже один из коммуникативных скиллзов — отсечение паразитных коммуникаций. Специалисты, в общем, такое отношение к делу любят и сознательно мешать, скорее всего, не станут.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, mymuss, Вы писали:
M>Здравствуйте, Flying Dutchman, Вы писали:
FD>>Опишу, как я работаю.
M>Мне кажется, что такой способ работы не продуктивен. За каждой строкой приходиться лезть в разные файлы.
M>Впрочем, я не утверждаю что это так. Возможно, мое впечатление ошибочно.
За каждой строкой — это преувеличение. Все-таки большая часть
написания кода — использование одних и тех же знакомых конструкций языка.
Лезть приходится только за тем, с чем редко работаю.
Здравствуйте, игппук, Вы писали:
И>второе — я отлично понимаю, что это решение нерациональное с точки зрения ресурсов. при увеличении радиуса круга такое решение будет работать все медленее и медленнее, при этом откушивая все больше и больше процессорного времени.
.
И>если вдруг возникнет необходимость изучить матрицы поближе, то я возьму учебник по высшей математике и за пару вечеров восстановлю свои забытые знания.
Можно взять и что попроще, например — Аммераля. Есть такой почти классический четырёхтомник по машграфике.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Можно взять и что попроще, например — Аммераля. Есть такой почти классический четырёхтомник по машграфике.
Интересно, а что метод Монте-Карло никто не вспомнил? Стандартный вроде ж метод определения площади сложных фигур?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Это понятно. Но пройти мимо TextWriter, это надо особо стараться.
FD>>Ну виноват, не могу вспомнить без заглядывания в код.
AVK>Ты не читаешь, что я пишу. Ты виноват не в том, что не помнишь, а в том, что "использовал не меньше года назад". Это меня, мягко говоря, очень сильно насторожит. Либо использование дотнета при этом было крайне эпизодическим, либо это признаки крайней узости его использования. И то и другое — серьезно сказывается на способности кандидата решать задачи, а третьего варианта я не вижу.
Сегодня ради интереса попытался найти в нашем проекте все места, где
используется TextWriter. Проект развивается около года, на него потрачено
уже 7-8 человеко-лет. Но не смог найти. Ни одного места.
Что, впрочем, не удивительно — файлы данных мы не используем.
Пишем все в базу данных.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Вот именно, что на собеседовании как раз имеет смысл сосредоточиться: "А ну, разбежались нах! Я щас думать буду!" Это тоже один из коммуникативных скиллзов — отсечение паразитных коммуникаций. Специалисты, в общем, такое отношение к делу любят и сознательно мешать, скорее всего, не станут.
Не спорю, но если кандидат немного ошибся, и сам сумел всё исправить — лично для меня он получает не меньшую субъективную оценку чем тот, кто написал всё сразу правильно (особенно если написал сразу, и не задумываясь).
На самом деле все мелкие просчёты кандидата — отличный способ завязать беседу и развить тему дальше. Бывало так, что с примитивов синхронизации перекидывались на перехват API, а дальше вплоть до оптимизаций для процессора Z-80.