Здравствуйте, e.thrash, Вы писали:
ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке. ET>Зачем?
Чтобы проверить — а не дурак ли собеседуемый. Ваш К.О.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, vmpire, Вы писали:
V>Моя практика показывает, что все программисты, работавшие хотя бы несколько месяцев пузырьковую сортировку напишут с лёгкостью.
Я работаю уже 8 лет, в том числе 4 года ведущим. Я неспособен с ходу написать никакую сортировку (хотя вероятно был способен это сделать лет 8 назад), т.к. ни разу не сталкивался с необходимостью такого написания на практике.
V>Вы считаете, что программист, не способный написать даже простейшую сортировку, способен написать что-то реально сложное?
Разумеется. Знание алгоритма сортировки никак не помогает писать другие алгоритмы.
Для проверки алгоритмических навыков написание сортировки это худший способ. Т.к., во-первых, это задача из учебника, соответственно проверяется память, а не умение думать, второе, это достаточно сложная задача, которую вряд ли можно решить за пять минут, если ни разу с ней не сталкивался.
Re[7]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, vmpire, Вы писали:
U>>второе, это достаточно сложная задача, которую вряд ли можно решить за пять минут, если ни разу с ней не сталкивался. V>Вы серьёзно??? у нас настолько упал уровень программистов, что они не могут решить задачу из школьной программы? V>О чём же тогда спрашивать? как правильно записывается оператор присваивания?
Ты опять путаешь знание с умением думать. То что что-то есть в школьной программе не говорит, что это просто придумать, это говорит лишь о том, что это просто узнать. Если ни разу не прочитать про алгоритмы сортировки в книжке, т.е не знать о них, то придумать самому алгоритм сортировки за пять минут невозможно, поэтому сортировка это сложная задача.
Здравствуйте, e.thrash, Вы писали:
ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке. ET>Зачем?
Скорее всего, собеседующий не знает, о чём спрашивать кандидата, и имеет слабое представление о задачах, которые придётся кандидату решать.
Здравствуйте, e.thrash, Вы писали:
ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.
Просить написать сортировку на собеседовании бессмысленно, т.к. этим проверяются не алгоритмические способности кандидата, а его способность к зубрежке. Причем зубрежке бессмысленной, т.к. на практике сортировку приходится писать по большим праздникам (мне, например, за 8 лет практики ни разу не понадобилось, соответственно алгоритм сортировки я давно и успешно забыл), а если все же понадобится, то алгоритм находится за 30 секунд в гугле. Если хочется проверить алгоритмические способности, то либо нужно давать задачи, которые в книжках не описаны (но так можно проверить только минимальный уровень навыков, т.к. сложные алгоритмы за пять минут не пишутся), либо попросить рассказать о каком-нибудь сложном алгоритме, который пришлось реализовывать на предыдущем месте работы.
Здравствуйте, e.thrash, Вы писали:
ET>Если просят написать, то в каких случаях в практике это может потребоваться?
на практике разные алгоритмы имеют немного разные характеристики. помимо различной алгоритмической сложности могут накладываться дополнительные требования по памяти, или даже просто различаться коэффициенты в пределах одной асимптотической сложности.
например, полезно знать, что qsort может деградировать до квадратичной сложности на определенного вида данных, и т.д.
Здравствуйте, e.thrash, Вы писали:
ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке. ET>Зачем? ET>Рассмотрим сортировку структур данных. ET>Если просят написать, то в каких случаях в практике это может потребоваться?
Ну у нас в одном проекте стандартная сортировка как-то раз не устроила — 10к элементов сортировалось безбожно долго (ну в О(N^2) qsort вылился).
Уж не помню на что заменили heap sort вроде, но прирост был весьма существенный.
Re[3]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, ArhAngelVezel, Вы писали:
AAV>Здравствуйте, samius, Вы писали:
ET>>>Рассмотрим сортировку структур данных. S>>В языках дотнета ее нет.
AAV>А это: AAV>http://msdn.microsoft.com/ru-ru/library/system.array.sort.aspx AAV>???
Там же написано .NET Framework Class Library(Библиотека классов платформы .NET Framework).
К языкам никакого отношения.
Re[3]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, vmpire, Вы писали:
V>Здравствуйте, Undying, Вы писали:
U>>Здравствуйте, e.thrash, Вы писали:
ET>>>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.
U>>Просить написать сортировку на собеседовании бессмысленно, т.к. этим проверяются не алгоритмические способности кандидата, а его способность к зубрежке. Причем зубрежке бессмысленной, т.к. на практике сортировку приходится писать по большим праздникам (мне, например, за 8 лет практики ни разу не понадобилось, соответственно алгоритм сортировки я давно и успешно забыл), а если все же понадобится, то алгоритм находится за 30 секунд в гугле. Если хочется проверить алгоритмические способности, то либо нужно давать задачи, которые в книжках не описаны (но так можно проверить только минимальный уровень навыков, т.к. сложные алгоритмы за пять минут не пишутся), либо попросить рассказать о каком-нибудь сложном алгоритме, который пришлось реализовывать на предыдущем месте работы. V>Обьясню, зачем так делается: V>Прежде всего, сортировка это будет, обход дерева или что-то ещё — не так важно. Важно проверить, что собеседуемый реально имеет хоть какой-то опыт написания программ. И ни алгоритмичечские способности ни зубрёжка тут ни при чём. Потому, что если он напишет, например, сортировку по памяти из учебника можно попросить её слегка модифицировать для другого критерия сортировки или другой структуры входных данных. Если зазубрил — тут же всё станет ясно. V>Зачем это нужно: V>На собеседования приходит очень много пионЭров, которые все из себя такие крутые, знают много умных слов, бодро рассказывают об ORM, функциональном программировании, новых технологиях, об Agile и прочих модных темах... В общем, Кнут, Бек и Фаулер в одном лице, не меньше. V>Но это только пока не попросишь их написать кусочек кода. Маленький, простой кусочек кода. Сортировку там (любую!), чтение значения из базы (любым способом), работу с деревом (заданной любым способом)... V>Тут сразу начинается: "не помню", "забыл", "а как напечатать значение в консоль?"... V>В общем, он начитался перед собеседованием всякого, а практического опыта у него — ноль. Полный. В лучшем случае — hello world написал. V>Ну и зачем такого брать? Практическое задание — самый простой и быстрый способ таковых отсеять.
Сам с нуля написал движок для анонимного форума на PHP. И я сейчас вам не вспомню как сделать select из базы данных и тупо вывести на экран. Чё-то там mysql_connect() потом mysql_query() потом как-то ещё на ошибку надо проверить.
Я потихоньку делаю его уже второй год, друзья, которые работают PHP программистами часто консультируются у меня по каким-то вопросам в аське. И что, вы хотите сказать что у меня не достаточно опыта, от того что я не считаю нужным для себя зазубривать вызовы, их аргументы и порядок вызовов? Ну-ну. Удачи вам в поисках программистов, которые всё с первого раза запоминают наизусть и на всю жизнь.
Я даже System.out.println() не сразу вспомнил. Ну и что? У меня есть собственный небольшой 2D движок на Java с нуля и без какой-либо помощи и экзамплов и MMO Tower Defence на нем. У меня вообще нет опыта и я полный ноль? Что даже не сразу вспомнил как значение на консоль вывести? Ну-ну. Жаль, что в основном работодатель думает так как вы описали.
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Re[2]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Undying, Вы писали:
U>Здравствуйте, e.thrash, Вы писали:
ET>>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.
U>Просить написать сортировку на собеседовании бессмысленно, т.к. этим проверяются не алгоритмические способности кандидата, а его способность к зубрежке. Причем зубрежке бессмысленной, т.к. на практике сортировку приходится писать по большим праздникам (мне, например, за 8 лет практики ни разу не понадобилось, соответственно алгоритм сортировки я давно и успешно забыл), а если все же понадобится, то алгоритм находится за 30 секунд в гугле. Если хочется проверить алгоритмические способности, то либо нужно давать задачи, которые в книжках не описаны (но так можно проверить только минимальный уровень навыков, т.к. сложные алгоритмы за пять минут не пишутся), либо попросить рассказать о каком-нибудь сложном алгоритме, который пришлось реализовывать на предыдущем месте работы.
Обьясню, зачем так делается:
Прежде всего, сортировка это будет, обход дерева или что-то ещё — не так важно. Важно проверить, что собеседуемый реально имеет хоть какой-то опыт написания программ. И ни алгоритмичечские способности ни зубрёжка тут ни при чём. Потому, что если он напишет, например, сортировку по памяти из учебника можно попросить её слегка модифицировать для другого критерия сортировки или другой структуры входных данных. Если зазубрил — тут же всё станет ясно.
Зачем это нужно:
На собеседования приходит очень много пионЭров, которые все из себя такие крутые, знают много умных слов, бодро рассказывают об ORM, функциональном программировании, новых технологиях, об Agile и прочих модных темах... В общем, Кнут, Бек и Фаулер в одном лице, не меньше.
Но это только пока не попросишь их написать кусочек кода. Маленький, простой кусочек кода. Сортировку там (любую!), чтение значения из базы (любым способом), работу с деревом (заданной любым способом)...
Тут сразу начинается: "не помню", "забыл", "а как напечатать значение в консоль?"...
В общем, он начитался перед собеседованием всякого, а практического опыта у него — ноль. Полный. В лучшем случае — hello world написал.
Ну и зачем такого брать? Практическое задание — самый простой и быстрый способ таковых отсеять.
Re[6]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Undying, Вы писали:
V>>Моя практика показывает, что все программисты, работавшие хотя бы несколько месяцев пузырьковую сортировку напишут с лёгкостью. U>Я работаю уже 8 лет, в том числе 4 года ведущим. Я неспособен с ходу написать никакую сортировку (хотя вероятно был способен это сделать лет 8 назад), т.к. ни разу не сталкивался с необходимостью такого написания на практике.
Я за 10 лет стажа тоже ни разу не сталкивался с необходимостью написания своей, но двумя-тремя способами напишу сходу.
V>>Вы считаете, что программист, не способный написать даже простейшую сортировку, способен написать что-то реально сложное? U>Разумеется. Знание алгоритма сортировки никак не помогает писать другие алгоритмы.
Вы действительно не понимаете? Сортировка тут ни при чём, можно дать любой простой алгоритм. Именно простой, так как сложный он может действительно не знать, так как не работал с ним. Просто сортировка это один из простых алгоритмов, о которых должен иметь понятие любой программист, тем более ведущий.
U>Для проверки алгоритмических навыков написание сортировки это худший способ. Т.к., во-первых, это задача из учебника, соответственно проверяется память, а не умение думать,
Для проверки умения думать задача легко может быть слегка модифицирована U>второе, это достаточно сложная задача, которую вряд ли можно решить за пять минут, если ни разу с ней не сталкивался.
Вы серьёзно??? у нас настолько упал уровень программистов, что они не могут решить задачу из школьной программы?
О чём же тогда спрашивать? как правильно записывается оператор присваивания?
Re[8]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Undying, Вы писали:
U>>>второе, это достаточно сложная задача, которую вряд ли можно решить за пять минут, если ни разу с ней не сталкивался. V>>Вы серьёзно??? у нас настолько упал уровень программистов, что они не могут решить задачу из школьной программы? V>>О чём же тогда спрашивать? как правильно записывается оператор присваивания?
U>Ты опять путаешь знание с умением думать.
Вы, вообще, понимаете, что такое ирония? Вы реально думаете, что я хочу спрашивать про оператор присваивания?
U>То что что-то есть в школьной программе не говорит, что это просто придумать, это говорит лишь о том, что это просто узнать. Если ни разу не прочитать про алгоритмы сортировки в книжке, т.е не знать о них, то придумать самому алгоритм сортировки за пять минут невозможно, поэтому сортировка это сложная задача.
Если сортировка это сложная задача, то разработка реального приложения со сложным интерфейсом и путаной бизнес-логикой по неполным требованиям, видимо, простая задача.
Я тут провожу среди окружающих экспресс-опрос, кто за какое время напишет сортировку массива любым способом. Можете тоже попробовать в своём окружении. У меня пока 100% (4 человека независимо) ответили, что если любым способом (без требований к производительности, памяти...) напишут легко. Оценки, правда,разные, кто-то за 5 минут, кто-то за полчаса.
Re[6]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Undying, Вы писали:
U>Я работаю уже 8 лет, в том числе 4 года ведущим. Я неспособен с ходу написать никакую сортировку (хотя вероятно был способен это сделать лет 8 назад), т.к. ни разу не сталкивался с необходимостью такого написания на практике.
даже "пузырек" неспособны?? простите за прямоту, но Вы либо кокетничаете, либо профнепригодны...
Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.
Зачем?
Рассмотрим сортировку структур данных.
Если просят написать, то в каких случаях в практике это может потребоваться?
Здравствуйте, e.thrash, Вы писали:
ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.
Можно пример алгоритмических вещей, реализованных в каком либо языке (.net)? ET>Зачем?
Возможно, хотят посмотреть, справится ли кандидат с этим заданием
ET>Рассмотрим сортировку структур данных.
В языках дотнета ее нет.
ET>Если просят написать, то в каких случаях в практике это может потребоваться?
а) в конторе нет способных с этим справиться и сортировка с собеседования пойдет в продакшн код
б) стандартная библиотечная чем-то не устраивает. Но тогда это что-то должны сообщить кандидату, что бы он принял во внимание этот фактор при написании задания.
в) для проверки практических навыков кандидата
Здравствуйте, e.thrash, Вы писали:
ET>Рассмотрим сортировку структур данных. ET>Если просят написать, то в каких случаях в практике это может потребоваться?
Зависит от того, какую именно сортировку просят написать. Если сферическую в вакууме ("напишите хоть какую-нибудь…"), то на практике это не может потребоваться, ибо "каких-нибудь" реализаций уже достаточно, в той же BCL, поэтому прекрасно подойдёт богосорт — проверить адекватность вопрошающего. Если какую-то конкретную — то где это может потребоваться зависит от того, что же попросили.
Help will always be given at Hogwarts to those who ask for it.
Re[3]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, vmpire, Вы писали:
V>Здравствуйте, Undying, Вы писали:
U>>Здравствуйте, e.thrash, Вы писали:
ET>>>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.
U>>Просить написать сортировку на собеседовании бессмысленно, т.к. этим проверяются не алгоритмические способности кандидата, а его способность к зубрежке. Причем зубрежке бессмысленной, т.к. на практике сортировку приходится писать по большим праздникам (мне, например, за 8 лет практики ни разу не понадобилось, соответственно алгоритм сортировки я давно и успешно забыл), а если все же понадобится, то алгоритм находится за 30 секунд в гугле. Если хочется проверить алгоритмические способности, то либо нужно давать задачи, которые в книжках не описаны (но так можно проверить только минимальный уровень навыков, т.к. сложные алгоритмы за пять минут не пишутся), либо попросить рассказать о каком-нибудь сложном алгоритме, который пришлось реализовывать на предыдущем месте работы. V>Обьясню, зачем так делается: V>Прежде всего, сортировка это будет, обход дерева или что-то ещё — не так важно. Важно проверить, что собеседуемый реально имеет хоть какой-то опыт написания программ. И ни алгоритмичечские способности ни зубрёжка тут ни при чём. Потому, что если он напишет, например, сортировку по памяти из учебника можно попросить её слегка модифицировать для другого критерия сортировки или другой структуры входных данных. Если зазубрил — тут же всё станет ясно.
Ну да, если человек написал сортировку — значит он — велосипедист. Не смог, значит юзает библиотечные функции — практик.
V>Зачем это нужно: V>На собеседования приходит очень много пионЭров, которые все из себя такие крутые, знают много умных слов, бодро рассказывают об ORM, функциональном программировании, новых технологиях, об Agile и прочих модных темах... В общем, Кнут, Бек и Фаулер в одном лице, не меньше. V>Но это только пока не попросишь их написать кусочек кода. Маленький, простой кусочек кода. Сортировку там (любую!), чтение значения из базы (любым способом), работу с деревом (заданной любым способом)...
Вот не надо мешать. Читать данные из БД (с использованием всяких оберток, а не на прямую, использую всякие DB API) — это практическая задача, которую каждый первый программист решает каждый день, а сортировки пишут только писатели stdlib'ов для языков программирования, за редким исключением.
V>Тут сразу начинается: "не помню", "забыл", "а как напечатать значение в консоль?"... V>В общем, он начитался перед собеседованием всякого, а практического опыта у него — ноль. Полный. В лучшем случае — hello world написал. V>Ну и зачем такого брать? Практическое задание — самый простой и быстрый способ таковых отсеять.
ET>сортировку структур данных. ET>Если просят написать, то в каких случаях в практике это может потребоваться?
что-то не уследил, в linq поддержку поиска по индексам уже написали? Если делать такое самим, то потребуется.
Re[4]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Jack128, Вы писали:
J>Ну да, если человек написал сортировку — значит он — велосипедист. Не смог, значит юзает библиотечные функции — практик.
Не так. Смог хоть что-то внятное написать, решая простую задачу (не обязательно сортировку, пофиг что) — значит действительно писал на этом языке. Если только слова говорит, но даже простая практическая вещь вызывает ступор — "Спасибо, наш HR отдел свяжется с вами".
J>Вот не надо мешать. Читать данные из БД (с использованием всяких оберток, а не на прямую, использую всякие DB API) — это практическая задача, которую каждый первый программист решает каждый день
Именно! поэтому если человек этого сделать не смог — то вряд ли он реально работал программистом.
J>, а сортировки пишут только писатели stdlib'ов для языков программирования, за редким исключением.
Это первый курс института (qsort), простейшая задача. Сортировка пузырьком — вообще школьный уровен. Квадратный корень человек тоже не каждый день приходится считать, но если человек этого сделать не может, а при этом собеседуется на математика, то понятно, что лучше поискать другого кандидата
V>>Тут сразу начинается: "не помню", "забыл", "а как напечатать значение в консоль?"... V>>В общем, он начитался перед собеседованием всякого, а практического опыта у него — ноль. Полный. В лучшем случае — hello world написал. V>>Ну и зачем такого брать? Практическое задание — самый простой и быстрый способ таковых отсеять. J>Сортировка — это не практический пример.
Предложите лучший пример, не вопрос.
Моя практика показывает, что все программисты, работавшие хотя бы несколько месяцев пузырьковую сортировку напишут с лёгкостью.
Вы считаете, что программист, не способный написать даже простейшую сортировку, способен написать что-то реально сложное?
Re[2]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Кирилл Лебедев, Вы писали:
ET>>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке. ET>>Зачем? КЛ>Скорее всего, собеседующий не знает, о чём спрашивать кандидата, и имеет слабое представление о задачах, которые придётся кандидату решать.
Не всегда так (хотя, так, наверное, тоже бывает).
Вот знаю я, например, что человеку нужно будет модифицировать клиентское приложение на WinForms. Мне что, на собеседовании выложить перед ним реальные requirements на сто страниц и попросить написать на бумажке бизнес-логику на пару тысяч строк?
Простой тест хорошо покажет базовое знание языка и отсутствие общей тупости.
А реализовано это уже в BCL или нет — это вообще не важно.
Re[3]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, vmpire, Вы писали:
V>На собеседования приходит очень много пионЭров, которые все из себя такие крутые, знают много умных слов, бодро рассказывают об ORM, функциональном программировании, новых технологиях, об Agile и прочих модных темах... В общем, Кнут, Бек и Фаулер в одном лице, не меньше.
А зачем на собеседовании разговаривать о книжках и модных технологиях? Разговаривать надо о том какие задачи на предыдущей работе человек решал, какие решения при этом использовал, какие вопросы и сложности при этом возникали.
Re[4]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Undying, Вы писали:
V>>На собеседования приходит очень много пионЭров, которые все из себя такие крутые, знают много умных слов, бодро рассказывают об ORM, функциональном программировании, новых технологиях, об Agile и прочих модных темах... В общем, Кнут, Бек и Фаулер в одном лице, не меньше.
U>А зачем на собеседовании разговаривать о книжках и модных технологиях? Разговаривать надо о том какие задачи на предыдущей работе человек решал, какие решения при этом использовал, какие вопросы и сложности при этом возникали.
Вот о них он и рассказывает как написано выше.
Re[4]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Sorc17, Вы писали:
V>>Но это только пока не попросишь их написать кусочек кода. Маленький, простой кусочек кода. Сортировку там (любую!), чтение значения из базы (любым способом), работу с деревом (заданной любым способом)... V>>Тут сразу начинается: "не помню", "забыл", "а как напечатать значение в консоль?"... V>>В общем, он начитался перед собеседованием всякого, а практического опыта у него — ноль. Полный. В лучшем случае — hello world написал. V>>Ну и зачем такого брать? Практическое задание — самый простой и быстрый способ таковых отсеять.
S>Сам с нуля написал движок для анонимного форума на PHP. И я сейчас вам не вспомню как сделать select из базы данных и тупо вывести на экран. Чё-то там mysql_connect() потом mysql_query() потом как-то ещё на ошибку надо проверить.
Вы ответили на вопрос Такой ответ я бы принял.
S>Я потихоньку делаю его уже второй год, друзья, которые работают PHP программистами часто консультируются у меня по каким-то вопросам в аське. И что, вы хотите сказать что у меня не достаточно опыта, от того что я не считаю нужным для себя зазубривать вызовы, их аргументы и порядок вызовов?
Откуда вы взяли, что я спрашиваю про аргументы и порядок их вызовов? S>Ну-ну. Удачи вам в поисках программистов, которые всё с первого раза запоминают наизусть и на всю жизнь.
Вы возразили себе, а не мне Я такого не утверждал.
S>Я даже System.out.println() не сразу вспомнил. Ну и что? У меня есть собственный небольшой 2D движок на Java с нуля и без какой-либо помощи и экзамплов и MMO Tower Defence на нем. У меня вообще нет опыта и я полный ноль? Что даже не сразу вспомнил как значение на консоль вывести? Ну-ну. Жаль, что в основном работодатель думает так как вы описали.
Не кипятитесь так, вредно для здоровья.
Во первых, то, к чему вы прицепились, это не список вопросов для собеседования. Это примеры, показывающие сложность задач, который человек должен уметь решать.
Во вторых, неужели вы думаете, что если человек не вспомнит println(), то я тут же решу, что он безнадёжен? Это же чушь, так можно кучу толковых людей отсеять. Если человек говорит, что последнее время роаботал в ASP.NET так я вообще его про консоль спрашивать не буду. Но тогда спрошу, например, какими способами можно вывести в ASP.NET список значений (ожидая услышать что-то типа Repeater и DataGrid или другие варианты).
А вот если он услышав, что нужно писать консольные приложения, начинает утверждать, что писал их последние три года, то я ожидаю, что он ответит на вопрос про вывод на консоль. Ибо иначе он просто врёт.
Re[5]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, vmpire, Вы писали:
U>>А зачем на собеседовании разговаривать о книжках и модных технологиях? Разговаривать надо о том какие задачи на предыдущей работе человек решал, какие решения при этом использовал, какие вопросы и сложности при этом возникали. V>Вот о них он и рассказывает как написано выше.
Цель работы программиста на предыдущей работе состояла в изучении функционального программирования, ОРМ и Агиле? Или он все-таки приносил какую-то пользу обществу?
Re[5]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, vmpire, Вы писали:
V>Во вторых, неужели вы думаете, что если человек не вспомнит println(), то я тут же решу, что он безнадёжен? Это же чушь, так можно кучу толковых людей отсеять. Если человек говорит, что последнее время роаботал в ASP.NET так я вообще его про консоль спрашивать не буду. Но тогда спрошу, например, какими способами можно вывести в ASP.NET список значений (ожидая услышать что-то типа Repeater и DataGrid или другие варианты).
С тем что практические вопросы на собеседовании это нормально и спрашивать надо о том с чем человек последнее время работал, я полностью согласен. Но изначально речь шла о сортировке, а это очень плохой практический вопрос, т.к. реализация своего варианта сортировки крайне редкая задача, с которой 99% программистов не сталкиваются.
Re[9]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, vmpire, Вы писали:
V>Если сортировка это сложная задача, то разработка реального приложения со сложным интерфейсом и путаной бизнес-логикой по неполным требованиям, видимо, простая задача.
Это задача на 5 минут на листочке бумаги?
V>Я тут провожу среди окружающих экспресс-опрос, кто за какое время напишет сортировку массива любым способом. Можете тоже попробовать в своём окружении. У меня пока 100% (4 человека независимо) ответили, что если любым способом (без требований к производительности, памяти...) напишут легко. Оценки, правда,разные, кто-то за 5 минут, кто-то за полчаса.
Сортировка полным перебором, конечно, простая задача. Что-то более хитрое уже думать надо и вряд ли пять минут.
Re[10]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Undying, Вы писали:
V>>Если сортировка это сложная задача, то разработка реального приложения со сложным интерфейсом и путаной бизнес-логикой по неполным требованиям, видимо, простая задача. U>Это задача на 5 минут на листочке бумаги?
Для меня лично достаточно начала её решения на листочке бумаги. Синтаксис тоже побоку.
Писал человек на языке или нет видно по трём-пяти строчкам кода.
V>>Я тут провожу среди окружающих экспресс-опрос, кто за какое время напишет сортировку массива любым способом. Можете тоже попробовать в своём окружении. У меня пока 100% (4 человека независимо) ответили, что если любым способом (без требований к производительности, памяти...) напишут легко. Оценки, правда,разные, кто-то за 5 минут, кто-то за полчаса. U>Сортировка полным перебором, конечно, простая задача. Что-то более хитрое уже думать надо и вряд ли пять минут.
Ну так я же говорю — любым способом.
Re[6]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Undying, Вы писали:
U>>>А зачем на собеседовании разговаривать о книжках и модных технологиях? Разговаривать надо о том какие задачи на предыдущей работе человек решал, какие решения при этом использовал, какие вопросы и сложности при этом возникали. V>>Вот о них он и рассказывает как написано выше.
U>Цель работы программиста на предыдущей работе состояла в изучении функционального программирования, ОРМ и Агиле? Или он все-таки приносил какую-то пользу обществу?
Вот это я и пытаюсь выяснить на собеседовании
Re[5]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, vmpire, Вы писали:
V>Не кипятитесь так, вредно для здоровья. V>Во первых, то, к чему вы прицепились, это не список вопросов для собеседования. Это примеры, показывающие сложность задач, который человек должен уметь решать. V>Во вторых, неужели вы думаете, что если человек не вспомнит println(), то я тут же решу, что он безнадёжен? Это же чушь, так можно кучу толковых людей отсеять. Если человек говорит, что последнее время роаботал в ASP.NET так я вообще его про консоль спрашивать не буду. Но тогда спрошу, например, какими способами можно вывести в ASP.NET список значений (ожидая услышать что-то типа Repeater и DataGrid или другие варианты). V>А вот если он услышав, что нужно писать консольные приложения, начинает утверждать, что писал их последние три года, то я ожидаю, что он ответит на вопрос про вывод на консоль. Ибо иначе он просто врёт.
Отлично
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].
Здравствуйте, e.thrash, Вы писали:
ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.
Вот интересно. А почему именно сортировку, а не метод Рунге — Кутты?
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[7]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Deprivator, Вы писали:
D>даже "пузырек" неспособны?? простите за прямоту, но Вы либо кокетничаете, либо профнепригодны...
Сейчас, после того как я в течении нескольких дней по несколько минут над задачей сортировки думал, я скорей всего даже квик-сорт напишу. Я вот спроси меня дня три назад, то за пять минут я вряд ли что-то толковое бы ответил.
ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке. ET>Зачем? ET>Рассмотрим сортировку структур данных. ET>Если просят написать, то в каких случаях в практике это может потребоваться?
Поиск и выборка совпадающих подмножеств в большом наборе данных. Используется, например, в анализе ДНК.
Здравствуйте, olegkr, Вы писали:
ET>>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке. O>Вот интересно. А почему именно сортировку, а не метод Рунге — Кутты?
Потому, что не входит в школьную программу, многие не справятся.
Re[11]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, vmpire, Вы писали:
V>Здравствуйте, Undying, Вы писали:
V>>>Если сортировка это сложная задача, то разработка реального приложения со сложным интерфейсом и путаной бизнес-логикой по неполным требованиям, видимо, простая задача.
Как правило — да.
V>>>Я тут провожу среди окружающих экспресс-опрос, кто за какое время напишет сортировку массива любым способом. Можете тоже попробовать в своём окружении. У меня пока 100% (4 человека независимо) ответили, что если любым способом (без требований к производительности, памяти...) напишут легко. Оценки, правда,разные, кто-то за 5 минут, кто-то за полчаса.
Ответить так может любой
U>>Сортировка полным перебором, конечно, простая задача. Что-то более хитрое уже думать надо и вряд ли пять минут. V>Ну так я же говорю — любым способом.
Т.е. вас бы устроило заведение второго массива и складывание туда результатов сортировки ? И вы бы взяли такого кандидата ?
И каждый день — без права на ошибку...
Re[12]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, B0FEE664, Вы писали:
V>>>>Если сортировка это сложная задача, то разработка реального приложения со сложным интерфейсом и путаной бизнес-логикой по неполным требованиям, видимо, простая задача. BFE>Как правило — да.
Вы либо СуперМегаКрутойЧувак, либо, скорее всего, просто никогда этого не делали. Либо за вас делали всё, оставляя вам только кодирование.
V>>>>Я тут провожу среди окружающих экспресс-опрос, кто за какое время напишет сортировку массива любым способом. Можете тоже попробовать в своём окружении. У меня пока 100% (4 человека независимо) ответили, что если любым способом (без требований к производительности, памяти...) напишут легко. Оценки, правда,разные, кто-то за 5 минут, кто-то за полчаса.
BFE>Ответить так может любой
половину из этих людей я собеседовал и все они достаточно долго со мной работают, чтобы я был уверен в их правдивости. Кстати, таковых уже 8, из них 2 не программиста.
U>>>Сортировка полным перебором, конечно, простая задача. Что-то более хитрое уже думать надо и вряд ли пять минут. V>>Ну так я же говорю — любым способом. BFE>Т.е. вас бы устроило заведение второго массива и складывание туда результатов сортировки ? И вы бы взяли такого кандидата ?
Вопрос не корректный, я же не по одному этому критерию проверяю кандидатов. В данном случае попросил бы оценить достоинства и недостатки такого подхода по мнению кандидата.
Впрочем, мне сложно судить, я тест с сортировкой не продумывал. И в своих собеседованиях обычно другие практические вопросы задаю.
Re[3]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, olegkr, Вы писали:
V>>Потому, что не входит в школьную программу, многие не справятся. O>Неужели сортировки входят?
У нас — входила (школа — обычная, не математическая). Естественно, только один простейший алгоритм (остальные штук 15 были в институте курсе на третьем).
Сейчас, насколько я знаю, входит если информатика профильный предмет (http://www.sverdlovsk-school8.nm.ru/docinf/docinf14.htm).
Хотя, школы разные, в гуманитарной, наверное, только ворд и шарики изучают...
Вообще, насколько я ощущаю, за последние годы уровень кандидатов серьёзно упал. Наша фирма, например, вынужденно отменила тестовое задание на программиста, так как очень немногие его вообще выполняли, не говоря уже о том, чтобы выполнить качественно.
Re[13]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, vmpire, Вы писали: V>Здравствуйте, B0FEE664, Вы писали:
V>>>>>Если сортировка это сложная задача, то разработка реального приложения со сложным интерфейсом и путаной бизнес-логикой по неполным требованиям, видимо, простая задача. BFE>>Как правило — да. V>Вы либо СуперМегаКрутойЧувак, либо, скорее всего, просто никогда этого не делали. Либо за вас делали всё, оставляя вам только кодирование.
Всё я делал — от кодирования, до проектирования и от сортировки до метапрограммирования. Дело не в этом. Задача сортировки только кажется простой, потому что её как правило преподают в школе. Мне, вот, в школе её не преподавали. Мне, в школе, (давно это было) однажды домашнее задание дали — отсортировать массив чисел. На фортране. Ага, простая такая задача...
V>>>>>Я тут провожу среди окружающих экспресс-опрос, кто за какое время напишет сортировку массива любым способом. Можете тоже попробовать в своём окружении. У меня пока 100% (4 человека независимо) ответили, что если любым способом (без требований к производительности, памяти...) напишут легко. Оценки, правда,разные, кто-то за 5 минут, кто-то за полчаса. BFE>>Ответить так может любой V>половину из этих людей я собеседовал и все они достаточно долго со мной работают, чтобы я был уверен в их правдивости. Кстати, таковых уже 8, из них 2 не программиста.
ok. верю.
U>>>>Сортировка полным перебором, конечно, простая задача. Что-то более хитрое уже думать надо и вряд ли пять минут. V>>>Ну так я же говорю — любым способом. BFE>>Т.е. вас бы устроило заведение второго массива и складывание туда результатов сортировки ? И вы бы взяли такого кандидата ? V>Вопрос не корректный, я же не по одному этому критерию проверяю кандидатов. В данном случае попросил бы оценить достоинства и недостатки такого подхода по мнению кандидата.
Недостатков много, главный — использование своей функции вместо стандартной. Достоинства — не портится входной массив. И что ? V>Впрочем, мне сложно судить, я тест с сортировкой не продумывал. И в своих собеседованиях обычно другие практические вопросы задаю.
Вот. В этом-то и суть.
И каждый день — без права на ошибку...
Re[14]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, B0FEE664, Вы писали:
V>>Впрочем, мне сложно судить, я тест с сортировкой не продумывал. И в своих собеседованиях обычно другие практические вопросы задаю. BFE>Вот. В этом-то и суть.
Ну так я и не утверждал, что это хороший тест. Или что он плохой.
Я пытался объяснить, зачем так могут делать (и, видимо, делают).
У каждого собеседующего обычно есть свой типовой план собеседования и свои практические задачи.
Re[2]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, uhh, Вы писали:
uhh>например, полезно знать, что qsort может деградировать до квадратичной сложности на определенного вида данных, и т.д.
Именно!
Ещё очень полезно знать, что qsort не является устойчивой сортировкой.
А, к примеру, банальный пузырёк — является.
Здравствуйте, e.thrash, Вы писали:
ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке. ET>Зачем? ET>Рассмотрим сортировку структур данных. ET>Если просят написать, то в каких случаях в практике это может потребоваться?
Здравствуйте, andy1618, Вы писали:
A>Здравствуйте, uhh, Вы писали:
uhh>>например, полезно знать, что qsort может деградировать до квадратичной сложности на определенного вида данных, и т.д.
A>Именно! A>Ещё очень полезно знать, что qsort не является устойчивой сортировкой.
Зависит от реализации. Реализация с сортировкой по месту (in-place partitioning) как-правило нестабильная. А при использовании дополнительной памяти — легко может быть стабильной. Русская википедия, как обычно, не в теме.
Re[4]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, samius, Вы писали:
S>Здравствуйте, andy1618, Вы писали:
A>>Здравствуйте, uhh, Вы писали:
uhh>>>например, полезно знать, что qsort может деградировать до квадратичной сложности на определенного вида данных, и т.д.
A>>Именно! A>>Ещё очень полезно знать, что qsort не является устойчивой сортировкой.
S>Зависит от реализации. Реализация с сортировкой по месту (in-place partitioning) как-правило нестабильная. А при использовании дополнительной памяти — легко может быть стабильной.
Угу. Мы обсуждаем стандартный .Sort из .NET:
List<T>.Sort
This method uses Array.Sort, which uses the QuickSort algorithm. This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.
On average, this method is an O(n log n) operation, where n is Count; in the worst case it is an O(n ^ 2) operation.
S>Русская википедия, как обычно, не в теме.
А где именно проблема? Ща подправим!
Re[5]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, andy1618, Вы писали:
A>Здравствуйте, samius, Вы писали:
A>>>Ещё очень полезно знать, что qsort не является устойчивой сортировкой.
S>>Зависит от реализации. Реализация с сортировкой по месту (in-place partitioning) как-правило нестабильная. А при использовании дополнительной памяти — легко может быть стабильной.
A>Угу. Мы обсуждаем стандартный .Sort из .NET:
Там да, неустойчива. А в общем случае зависит от реализации.
S>>Русская википедия, как обычно, не в теме.
A>А где именно проблема? Ща подправим!
Там она в списке неустойчивых без оговорок на реализацию.
Re[6]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, samius, Вы писали:
S>>>Русская википедия, как обычно, не в теме.
A>>А где именно проблема? Ща подправим! S>Там она в списке неустойчивых без оговорок на реализацию.
Дописал оговорку. Если что — подправьте.
Re[7]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, andy1618, Вы писали:
A>Здравствуйте, samius, Вы писали:
S>>>>Русская википедия, как обычно, не в теме.
A>>>А где именно проблема? Ща подправим! S>>Там она в списке неустойчивых без оговорок на реализацию.
A>Дописал оговорку. Если что — подправьте.
На английской страничке написано
Efficient implementations of quicksort (with in-place partitioning) are typically unstable sorts
Что подразумевает существование устойчивых реализаций с in-place. Так что "При использовании O(n) дополнительной памяти, можно сделать сортировку устойчивой." не совсем соответствует. Т.е. да, при использовании дополнительной памяти можно, но и без нее, видимо, тоже можно.
Re[2]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, olegkr, Вы писали:
O>Здравствуйте, e.thrash, Вы писали:
ET>>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.
O>Вот интересно. А почему именно сортировку, а не метод Рунге — Кутты?
Во-первых, при некоторых дополнительных условиях это может быть задача на сообразительность (какая-нить radix сортировка, которая позволит получить O(n)).
Во-вторых, при реализации сортировки нужно помнить только общую идею. А при реализации Рунге-Кутты кроме общей идеи (идем от точки к точке) надо помнить еще и хитрые формулы. Либо уметь их вывести, что уже требует более-менее серьезного математического опыта.
В-третьих, сортировка намного чаще используется, пусть даже и через библиотечные функции.
Здравствуйте, e.thrash, Вы писали:
ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке. ET>Зачем?
Чтобы выяснить уровень знаний и умений собеседуемого? Что может быть лучше чем простая алгоритмическая задача.
ET>Рассмотрим сортировку структур данных. ET>Если просят написать, то в каких случаях в практике это может потребоваться?
Если речь идет о собеседовании то при чем тут практическая польза.
А в целом кто то в ветке писал что встроенная сортировка в какой то скриптоязык реализована очень криво и может понадобится ее переписать.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, olegkr, Вы писали:
ET>>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке. O>Вот интересно. А почему именно сортировку, а не метод Рунге — Кутты?
А что, я как-то собеседовал кандидата, у которого было в резюме что-то вроде "хорошие знания Математики (дальше список в котором упоминались и численные методы)". Спросил про метод Градиентного спуска, оказалось что ен очень то и хорошие
Re[3]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, Mystic, Вы писали:
M>Во-первых, при некоторых дополнительных условиях это может быть задача на сообразительность
Мда. Шутку восприняли всерьез
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[8]: Есть ли смысл писать свою сортировку в .Net?
Здравствуйте, samius, Вы писали:
A>>>>А где именно проблема? Ща подправим! S>>>Там она в списке неустойчивых без оговорок на реализацию.
A>>Дописал оговорку. Если что — подправьте. S>На английской страничке написано S>
S>Efficient implementations of quicksort (with in-place partitioning) are typically unstable sorts
S>Что подразумевает существование устойчивых реализаций с in-place. Так что "При использовании O(n) дополнительной памяти, можно сделать сортировку устойчивой." не совсем соответствует. Т.е. да, при использовании дополнительной памяти можно, но и без нее, видимо, тоже можно.
Если найдёте ссылку — будет здорово! Но я, честно говоря, не представляю, как можно её устойчивой сделать меньше, чем за O(n) по памяти.
А за основу правки взят абзац из таблички выше:
Quicksort can be done in place with O(log(n)) stack space, but the sort is unstable[citation needed]. Naïve variants use an O(n) space array to store the partition. An O(n) space implementation can be stable[citation needed].