Есть ли смысл писать свою сортировку в .Net?
От: e.thrash  
Дата: 07.05.11 06:02
Оценка:
Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.
Зачем?
Рассмотрим сортировку структур данных.
Если просят написать, то в каких случаях в практике это может потребоваться?
Re: Есть ли смысл писать свою сортировку в .Net?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 07.05.11 06:33
Оценка:
Здравствуйте, e.thrash, Вы писали:

ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.

Можно пример алгоритмических вещей, реализованных в каком либо языке (.net)?
ET>Зачем?
Возможно, хотят посмотреть, справится ли кандидат с этим заданием

ET>Рассмотрим сортировку структур данных.

В языках дотнета ее нет.

ET>Если просят написать, то в каких случаях в практике это может потребоваться?

а) в конторе нет способных с этим справиться и сортировка с собеседования пойдет в продакшн код
б) стандартная библиотечная чем-то не устраивает. Но тогда это что-то должны сообщить кандидату, что бы он принял во внимание этот фактор при написании задания.
в) для проверки практических навыков кандидата
Re[2]: Есть ли смысл писать свою сортировку в .Net?
От: ArhAngelVezel Россия  
Дата: 07.05.11 06:39
Оценка: :)
Здравствуйте, samius, Вы писали:

ET>>Рассмотрим сортировку структур данных.

S>В языках дотнета ее нет.

А это:
http://msdn.microsoft.com/ru-ru/library/system.array.sort.aspx
???
Re[3]: Есть ли смысл писать свою сортировку в .Net?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 07.05.11 06:41
Оценка: 1 (1)
Здравствуйте, 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[2]: Есть ли смысл писать свою сортировку в .Net?
От: uhh  
Дата: 07.05.11 06:42
Оценка: +1
Здравствуйте, samius, Вы писали:

S>а) в конторе нет способных с этим справиться и сортировка с собеседования пойдет в продакшн код


you made my day
Re: Есть ли смысл писать свою сортировку в .Net?
От: uhh  
Дата: 07.05.11 06:47
Оценка: 2 (1)
Здравствуйте, e.thrash, Вы писали:

ET>Если просят написать, то в каких случаях в практике это может потребоваться?


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

например, полезно знать, что qsort может деградировать до квадратичной сложности на определенного вида данных, и т.д.
Re: Есть ли смысл писать свою сортировку в .Net?
От: hardcase Пират http://nemerle.org
Дата: 07.05.11 19:44
Оценка: 2 (2) +3
Здравствуйте, e.thrash, Вы писали:

ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.

ET>Зачем?

Чтобы проверить — а не дурак ли собеседуемый. Ваш К.О.
/* иЗвиНите зА неРовнЫй поЧерК */
Re: Есть ли смысл писать свою сортировку в .Net?
От: midcyber
Дата: 10.05.11 03:54
Оценка:
Здравствуйте, e.thrash, Вы писали:

ET>Если просят написать, то в каких случаях в практике это может потребоваться?


Пишут свой аналог дот-нета
Re: Есть ли смысл писать свою сортировку в .Net?
От: _FRED_ Черногория
Дата: 10.05.11 05:15
Оценка:
Здравствуйте, e.thrash, Вы писали:

ET>Рассмотрим сортировку структур данных.

ET>Если просят написать, то в каких случаях в практике это может потребоваться?

Зависит от того, какую именно сортировку просят написать. Если сферическую в вакууме ("напишите хоть какую-нибудь…"), то на практике это не может потребоваться, ибо "каких-нибудь" реализаций уже достаточно, в той же BCL, поэтому прекрасно подойдёт богосорт — проверить адекватность вопрошающего. Если какую-то конкретную — то где это может потребоваться зависит от того, что же попросили.
Help will always be given at Hogwarts to those who ask for it.
Re: Есть ли смысл писать свою сортировку в .Net?
От: syrompe  
Дата: 10.05.11 07:46
Оценка: 2 (1)
Здравствуйте, e.thrash, Вы писали:

ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.

ET>Зачем?
ET>Рассмотрим сортировку структур данных.
ET>Если просят написать, то в каких случаях в практике это может потребоваться?

Ну у нас в одном проекте стандартная сортировка как-то раз не устроила — 10к элементов сортировалось безбожно долго (ну в О(N^2) qsort вылился).
Уж не помню на что заменили heap sort вроде, но прирост был весьма существенный.
Re: Есть ли смысл писать свою сортировку в .Net?
От: Undying Россия  
Дата: 10.05.11 09:10
Оценка: 3 (1)
Здравствуйте, e.thrash, Вы писали:

ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.


Просить написать сортировку на собеседовании бессмысленно, т.к. этим проверяются не алгоритмические способности кандидата, а его способность к зубрежке. Причем зубрежке бессмысленной, т.к. на практике сортировку приходится писать по большим праздникам (мне, например, за 8 лет практики ни разу не понадобилось, соответственно алгоритм сортировки я давно и успешно забыл), а если все же понадобится, то алгоритм находится за 30 секунд в гугле. Если хочется проверить алгоритмические способности, то либо нужно давать задачи, которые в книжках не описаны (но так можно проверить только минимальный уровень навыков, т.к. сложные алгоритмы за пять минут не пишутся), либо попросить рассказать о каком-нибудь сложном алгоритме, который пришлось реализовывать на предыдущем месте работы.
Re: Есть ли смысл писать свою сортировку в .Net?
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 10.05.11 09:44
Оценка: +2
Здравствуйте, e.thrash, Вы писали:

ET>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.

ET>Зачем?

Скорее всего, собеседующий не знает, о чём спрашивать кандидата, и имеет слабое представление о задачах, которые придётся кандидату решать.
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re[2]: Есть ли смысл писать свою сортировку в .Net?
От: vmpire Россия  
Дата: 10.05.11 13:13
Оценка: -1
Здравствуйте, Undying, Вы писали:

U>Здравствуйте, e.thrash, Вы писали:


ET>>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.


U>Просить написать сортировку на собеседовании бессмысленно, т.к. этим проверяются не алгоритмические способности кандидата, а его способность к зубрежке. Причем зубрежке бессмысленной, т.к. на практике сортировку приходится писать по большим праздникам (мне, например, за 8 лет практики ни разу не понадобилось, соответственно алгоритм сортировки я давно и успешно забыл), а если все же понадобится, то алгоритм находится за 30 секунд в гугле. Если хочется проверить алгоритмические способности, то либо нужно давать задачи, которые в книжках не описаны (но так можно проверить только минимальный уровень навыков, т.к. сложные алгоритмы за пять минут не пишутся), либо попросить рассказать о каком-нибудь сложном алгоритме, который пришлось реализовывать на предыдущем месте работы.

Обьясню, зачем так делается:
Прежде всего, сортировка это будет, обход дерева или что-то ещё — не так важно. Важно проверить, что собеседуемый реально имеет хоть какой-то опыт написания программ. И ни алгоритмичечские способности ни зубрёжка тут ни при чём. Потому, что если он напишет, например, сортировку по памяти из учебника можно попросить её слегка модифицировать для другого критерия сортировки или другой структуры входных данных. Если зазубрил — тут же всё станет ясно.
Зачем это нужно:
На собеседования приходит очень много пионЭров, которые все из себя такие крутые, знают много умных слов, бодро рассказывают об ORM, функциональном программировании, новых технологиях, об Agile и прочих модных темах... В общем, Кнут, Бек и Фаулер в одном лице, не меньше.
Но это только пока не попросишь их написать кусочек кода. Маленький, простой кусочек кода. Сортировку там (любую!), чтение значения из базы (любым способом), работу с деревом (заданной любым способом)...
Тут сразу начинается: "не помню", "забыл", "а как напечатать значение в консоль?"...
В общем, он начитался перед собеседованием всякого, а практического опыта у него — ноль. Полный. В лучшем случае — hello world написал.
Ну и зачем такого брать? Практическое задание — самый простой и быстрый способ таковых отсеять.
Re[3]: Есть ли смысл писать свою сортировку в .Net?
От: Jack128  
Дата: 10.05.11 13:29
Оценка:
Здравствуйте, 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>Ну и зачем такого брать? Практическое задание — самый простой и быстрый способ таковых отсеять.

Сортировка — это не практический пример.
Re: Есть ли смысл писать свою сортировку в .Net?
От: Osaka  
Дата: 10.05.11 14:44
Оценка:
ET>сортировку структур данных.
ET>Если просят написать, то в каких случаях в практике это может потребоваться?
что-то не уследил, в linq поддержку поиска по индексам уже написали? Если делать такое самим, то потребуется.
Re[4]: Есть ли смысл писать свою сортировку в .Net?
От: vmpire Россия  
Дата: 10.05.11 15:17
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Ну да, если человек написал сортировку — значит он — велосипедист. Не смог, значит юзает библиотечные функции — практик.

Не так. Смог хоть что-то внятное написать, решая простую задачу (не обязательно сортировку, пофиг что) — значит действительно писал на этом языке. Если только слова говорит, но даже простая практическая вещь вызывает ступор — "Спасибо, наш HR отдел свяжется с вами".

J>Вот не надо мешать. Читать данные из БД (с использованием всяких оберток, а не на прямую, использую всякие DB API) — это практическая задача, которую каждый первый программист решает каждый день

Именно! поэтому если человек этого сделать не смог — то вряд ли он реально работал программистом.

J>, а сортировки пишут только писатели stdlib'ов для языков программирования, за редким исключением.

Это первый курс института (qsort), простейшая задача. Сортировка пузырьком — вообще школьный уровен. Квадратный корень человек тоже не каждый день приходится считать, но если человек этого сделать не может, а при этом собеседуется на математика, то понятно, что лучше поискать другого кандидата

V>>Тут сразу начинается: "не помню", "забыл", "а как напечатать значение в консоль?"...

V>>В общем, он начитался перед собеседованием всякого, а практического опыта у него — ноль. Полный. В лучшем случае — hello world написал.
V>>Ну и зачем такого брать? Практическое задание — самый простой и быстрый способ таковых отсеять.
J>Сортировка — это не практический пример.
Предложите лучший пример, не вопрос.
Моя практика показывает, что все программисты, работавшие хотя бы несколько месяцев пузырьковую сортировку напишут с лёгкостью.
Вы считаете, что программист, не способный написать даже простейшую сортировку, способен написать что-то реально сложное?
Re[2]: Есть ли смысл писать свою сортировку в .Net?
От: vmpire Россия  
Дата: 10.05.11 15:30
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

ET>>Вот от сеньора .Net часто на собеседовании просят что-то алгоритмическое написать, что уже реализовано в самом языке.

ET>>Зачем?
КЛ>Скорее всего, собеседующий не знает, о чём спрашивать кандидата, и имеет слабое представление о задачах, которые придётся кандидату решать.
Не всегда так (хотя, так, наверное, тоже бывает).
Вот знаю я, например, что человеку нужно будет модифицировать клиентское приложение на WinForms. Мне что, на собеседовании выложить перед ним реальные requirements на сто страниц и попросить написать на бумажке бизнес-логику на пару тысяч строк?
Простой тест хорошо покажет базовое знание языка и отсутствие общей тупости.
А реализовано это уже в BCL или нет — это вообще не важно.
Re[5]: Есть ли смысл писать свою сортировку в .Net?
От: Undying Россия  
Дата: 11.05.11 04:51
Оценка: 3 (1) +1
Здравствуйте, vmpire, Вы писали:

V>Моя практика показывает, что все программисты, работавшие хотя бы несколько месяцев пузырьковую сортировку напишут с лёгкостью.


Я работаю уже 8 лет, в том числе 4 года ведущим. Я неспособен с ходу написать никакую сортировку (хотя вероятно был способен это сделать лет 8 назад), т.к. ни разу не сталкивался с необходимостью такого написания на практике.

V>Вы считаете, что программист, не способный написать даже простейшую сортировку, способен написать что-то реально сложное?


Разумеется. Знание алгоритма сортировки никак не помогает писать другие алгоритмы.

Для проверки алгоритмических навыков написание сортировки это худший способ. Т.к., во-первых, это задача из учебника, соответственно проверяется память, а не умение думать, второе, это достаточно сложная задача, которую вряд ли можно решить за пять минут, если ни разу с ней не сталкивался.
Re[3]: Есть ли смысл писать свою сортировку в .Net?
От: Sorc17 Россия  
Дата: 11.05.11 05:06
Оценка: 1 (1)
Здравствуйте, 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[3]: Есть ли смысл писать свою сортировку в .Net?
От: Undying Россия  
Дата: 11.05.11 05:25
Оценка:
Здравствуйте, vmpire, Вы писали:

V>На собеседования приходит очень много пионЭров, которые все из себя такие крутые, знают много умных слов, бодро рассказывают об ORM, функциональном программировании, новых технологиях, об Agile и прочих модных темах... В общем, Кнут, Бек и Фаулер в одном лице, не меньше.


А зачем на собеседовании разговаривать о книжках и модных технологиях? Разговаривать надо о том какие задачи на предыдущей работе человек решал, какие решения при этом использовал, какие вопросы и сложности при этом возникали.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.