S>Там его паренек, только закончивший компьютерный ВУЗ, спрашивает про какую-нибудь очередную сортировку. Наш архитект последний раз "сортировал" лет 5 назад с использованием std::sort как там она внутри работает "а хрен его знает..."
Фу, позорно, сортировок-то всего 6-7 не считая редких вроде Bogosort, Stoogesort, их разновидностей и сортировочных сетей.
Только кажется что сортировок очень много, если про них никогда не читал или только открыл оглавление (или википедию), тогда останется только ощущение что их минимум штук 30 и это понятно. А если читал — то запоминается что основных и популярных 6-7 не считая их разновидностей и комбинаций.
Чаще всего в первом попавшемся алгоритме используется Quicksort или Heapsort, что в ситуации std::sort оно сразу так и есть.
Здравствуйте, russian_bear, Вы писали:
_>Скучным проект становится (для конкретного разработчика) после определенного числа лет в нем. Скажем, после 3 лет в проекте — от него просто тошнит уже.
_>Если к моменту того, когда вас этот проект тошнит, придет новый человек — для него проект не покажется скучным.
Ага, для него проект покажется таким веселым, что он подумает о смене работы.
-----
Любимая фраза физика-теоретика: "Вот видите, мы ошиблись всего лишь на порядок".
Здравствуйте, PaulMinelly, Вы писали:
S>>Там его паренек, только закончивший компьютерный ВУЗ, спрашивает про какую-нибудь очередную сортировку. Наш архитект последний раз "сортировал" лет 5 назад с использованием std::sort как там она внутри работает "а хрен его знает..."
PM>Фу, позорно, сортировок-то всего 6-7 не считая редких вроде Bogosort, Stoogesort, их разновидностей и сортировочных сетей. PM>Только кажется что сортировок очень много, если про них никогда не читал или только открыл оглавление (или википедию), тогда останется только ощущение что их минимум штук 30 и это понятно. А если читал — то запоминается что основных и популярных 6-7 не считая их разновидностей и комбинаций. PM>Чаще всего в первом попавшемся алгоритме используется Quicksort или Heapsort, что в ситуации std::sort оно сразу так и есть.
Совершенно не позорно. Весь функционал сортировок (равно как и более высокоуровневых вещей, использующих сортировки, типа хеш-таблиц) уже давно написан. Потому знания о сортировках используются на практике лишь теми, кто изобретает хитрый велосипед с тремя педалями.
Почему на собеседовании спрашивают эту фигню? да просто потому, что так быстрее!
Пример:
Я как-то поработал ассистентом в универе. И мне сдавали лабы по низкоуровневой работе с клавиатурой, которые надо писать на C или Pascal. Кое-кто притаскивал лабы на ASM. У меня не было времени детально расспрашивать каждого студента как он делал и что он знает. И я опускался до вопросов типа "какая разница между регистрами AX и AH". Ни к предмету, ни к C, ни к Pascal они не имели ни малейшего отношения, но надо же было попалить тех, кто списал!
Так же и на собеседовании, спрашивают не совсем правильные вопросы. И не ищут индивидуального подхода. Просто потому, что так быстрее/проще.
-----
Любимая фраза физика-теоретика: "Вот видите, мы ошиблись всего лишь на порядок".
Лично я не хотел бы работать с девелоперами, которые были и синьёрами и архитекторами, но абсолютно не умеющими решать хотя бы простые проблемы адекватным и поддерживаемым кодом. После того как даже не один человек (включая архитектора) на интервью на просьбу набросать простенькую коллекцию на C# засунул туда базу данных, а еще большее количество народу предоставило к ней такой дурацкий интерфейс, что видно что у человека нет навыком писать нормальный простой код, предложение не использовать техническое интервью просто абсурдно. А о проектах почти все говорят нормально.
G>Почему на собеседовании спрашивают эту фигню? да просто потому, что так быстрее! G>Так же и на собеседовании, спрашивают не совсем правильные вопросы. И не ищут индивидуального подхода. Просто потому, что так быстрее/проще.
А чего именно проще узнать? Ну узнают что project-manager не помнит ни одной популярной сортировки в силу плохой памяти толи из-за того что не читал в детстве, как возможно и не читал про алгоритмы в других областях, алгоритмический рост и струкруры данных. Ведь тут на вопрос надо было всего назвать самую популярную — quicksort и ответ уже правильный, в деталях даже разбираться не надо и как она реализована. Дай бог если project-manager разбирается в паттернах проектирования и имеет классный опыт за плечами. Ну а если не имеет, то наверное руководить коллективом может?
Здравствуйте, Gradient, Вы писали:
S>>>Там его паренек, только закончивший компьютерный ВУЗ, спрашивает про какую-нибудь очередную сортировку. Наш архитект последний раз "сортировал" лет 5 назад с использованием std::sort как там она внутри работает "а хрен его знает..."
PM>>Фу, позорно, сортировок-то всего 6-7 не считая редких вроде Bogosort, Stoogesort, их разновидностей и сортировочных сетей. PM>>Только кажется что сортировок очень много, если про них никогда не читал или только открыл оглавление (или википедию), тогда останется только ощущение что их минимум штук 30 и это понятно. А если читал — то запоминается что основных и популярных 6-7 не считая их разновидностей и комбинаций. PM>>Чаще всего в первом попавшемся алгоритме используется Quicksort или Heapsort, что в ситуации std::sort оно сразу так и есть.
это у Кнута и его клонов описано всего 6-7 *внутренних* сортировок, известных на тот момент. но например внешняя сортировка — соевршенно отдельная область, топологическая — ещё одна, а для одного только алгоритма bwt (используемого в bzip2) этих сортировок придуманы уже десятки
qsort/heapsort — это general purpose сортировки, для специфичных алгоритмов свои специфичные сортировки могут использоваться
G>Совершенно не позорно. Весь функционал сортировок (равно как и более высокоуровневых вещей, использующих сортировки, типа хеш-таблиц) уже давно написан. Потому знания о сортировках используются на практике лишь теми, кто изобретает хитрый велосипед с тремя педалями.
прикладникам это действительно особенно не нужно. но имхо это позволяет проверить общий уровень алгоритмического мышления человека. если он способен хотя бы к экзамену заучить как работает heapsort — значит определённый уровень серого вещества имеется
BZ>это у Кнута и его клонов описано всего 6-7 *внутренних* сортировок, известных на тот момент. но например внешняя сортировка — соевршенно отдельная область, топологическая — ещё одна, а для одного только алгоритма bwt (используемого в bzip2) этих сортировок придуманы уже десятки
bzip2 это ок, но в каких популярных языках программирования применяются специфичные сортировки можете назвать?
Здравствуйте, kosmik, Вы писали:
K>Лично я не хотел бы работать с девелоперами, которые были и синьёрами и архитекторами, но абсолютно не умеющими решать хотя бы простые проблемы адекватным и поддерживаемым кодом. После того как даже не один человек (включая архитектора) на интервью на просьбу набросать простенькую коллекцию на C# засунул туда базу данных, а еще большее количество народу предоставило к ней такой дурацкий интерфейс, что видно что у человека нет навыком писать нормальный простой код, предложение не использовать техническое интервью просто абсурдно. А о проектах почти все говорят нормально.
имхо, большой секрет здесь заключается в том, работающий и продающийся код вовсе необязательно должен быть красивым. у меня сейчас такое ощущение, что хороший стиль программипрвания жизненно необходим в поректах начиная может с миллионов строк, а на меньших размерах вполне можно обойтись copy-paste, без комментариев и т.п. это наверно замеждяет разработку, но не делает её совсем невозможной
соответственно, то что человек работал где-то арзитектором, отнюдь не обязательно означает что он пишет грамотный красивый код. it just works. и вопрос конечно в том, что если этот чел не будет осваивать более высокоуровневые подходы, он не выбьется за пределы проектов определённой сложности (и как правило доморощенных)
Здравствуйте, pagrus, Вы писали:
E>>>Я очень долго в свое время смеялся, когда наняли в высшей степени провессионала в PHP (круче по техническим знаниям я вообще никого не видел независимо отязыка), которого можно было использовать как ходячую энциклопедию по стандартам W3C а также по проблемам совместимости со всеми возможными браузерами. И ни черта не смогли его занять, в результате бросили на верстку черти какого спагетти, где вообще квалификация требовалась на уровне школьницы, чтоб уметь пользоваться кнопками копи и пасте. Ну и далее кончилось тем, что его уволили, так как допустил в работе несколько ошибок — надоело ему копаться в нечистотах и он написал коммент в javaScripte, что это хак (причем с крепкими выражениями ) и заюзал не очень лицензионно чистую библиотечку в коде. NHR>>Это несомненно некомпетентность руководства. Мы предпочитаем сразу оговаривать какие именно компетенции и какого рода проект будет целью прикладного творчества).
P>Не отрицая вышесказанного. На техническом уровне (или на уровне личных качеств?) это непрофессионализм работника.
Здравствуйте, PaulMinelly, Вы писали:
BZ>>это у Кнута и его клонов описано всего 6-7 *внутренних* сортировок, известных на тот момент. но например внешняя сортировка — соевршенно отдельная область, топологическая — ещё одна, а для одного только алгоритма bwt (используемого в bzip2) этих сортировок придуманы уже десятки
PM>bzip2 это ок, но в каких популярных языках программирования применяются специфичные сортировки можете назвать?
вопрос на 5! я долго скрипел мозгами прежде чем до меня дошло что ты имеешь в виду стандартные библиотеки, верно?
так в том-то и дело, что знать алгоритмы сортировки нужно не для того, что пере-реализоать STL, а для программирования своих специфичных задач, таких как сжатие или поиск в инете
Присоединяюсь. Сейчас нахожусь в похожей (слегка похожей!) ситуации, хотя до полного сеньора, конечно, не дорос, да и 7 зарплат джуниоров не прошу. Просто хочу слегка поменять направление деятельности — но, увы, получается как у Спольски (цитата, возможно, не совсем точная, заранее сорри) "идиот агент по найму, который не узнает Java, если она укусит его за задницу, интересуется, имеется ли у вас 10 лет опыта проектирования на Java"
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)
PM>>bzip2 это ок, но в каких популярных языках программирования применяются специфичные сортировки можете назвать?
BZ>вопрос на 5! я долго скрипел мозгами прежде чем до меня дошло что ты имеешь в виду стандартные библиотеки, верно?
Ну да, правильно. Мозгами тут скрипеть не надо Внешние ли библиотеки или встроено прямо в язык как в VB6.0.
BZ>так в том-то и дело, что знать алгоритмы сортировки нужно не для того, что пере-реализоать STL, а для программирования своих специфичных задач, таких как сжатие или поиск в инете
Это все понятно, я-то имею ввиду что разве в стандартных функциях популярных языков/библиотек вроде std::sort применяются какие-то специфичные сортировки — да имхо никогда.
Здравствуйте, shrecher, Вы писали:
S>Теперь его спрашивают, "а сколько тебе платить?", а он "как минимум, 7 заплат новичков".
7 заплат говорите? Судя по пробегавшей тут информации юниоры нынче получают под 60 штук. Умножаем на 7, получаем 420.
S>Естественно, наш сеньор-архитект летит мимо,
Только по статистике оказывается, что человек с "опытом" если уж про сортировку не знает, то и кода вменяемого написать не может. Оказывается что и опыт то был "кофе тимлиду поднести" или из совсем готовых кубиков что-то слепить итд.
Человеку не способному за 10-15 минут реализовать "пузырек" ничего делать в программировании.
Здравствуйте, Lloyd, Вы писали:
S>>Теперь его спрашивают, "а сколько тебе платить?", а он "как минимум, 7 заплат новичков".
L>7 заплат говорите? Судя по пробегавшей тут информации юниоры нынче получают под 60 штук. Умножаем на 7, получаем 420.
OK, с точки зрения компании, имеющей собственный продукт, а не аутсорса, код есть в некотором смысле asset. Имеет значение то — придется его переписать весь скоро, потому что к нем не разобраться, его трудно поддерживать. Да и вообще не такая уж плохая ситуация на рынке труда чтобы фигню задорого покупать!
G>Только по статистике оказывается, что человек с "опытом" если уж про сортировку не знает,
Что такого особо ценного в сортировке? Утилитарных алгоритм, который проходят на заре вступления в программизм, а те кто кует ГУЙ, то и вообще мог об этом не знать. Ты бы еще про интегральное исчисление вспомнил, тоже проходили. Не понятно вообще какая такая сермяжная истина в занания деталей сортировок? Я еще понимаю иметь понятия о специализованых алгоритмах типа Aho-Corasick, такие обычно готовые не воляются. А про сортировку легко можно в Web прочитать и выбрать нужную, тем более обычно она подается вииде std::sort (или что-то подобное) -- бери и пользуй.
G>Человеку не способному за 10-15 минут реализовать "пузырек" ничего делать в программировании.
это почему? Может быть ты имел ввиду, человеку который за 10-15 минут не смог разобраться как исполькозовать готовую процедуру bubble_sort в своей программе?
Главное это уметь в предметной области разбираться.
E>>>> (...) Ну и далее кончилось тем, что его уволили, так как допустил в работе несколько ошибок — надоело ему копаться в нечистотах и он написал коммент в javaScripte, что это хак (причем с крепкими выражениями ) и заюзал не очень лицензионно чистую библиотечку в коде. NHR>>>Это несомненно некомпетентность руководства. Мы предпочитаем сразу оговаривать какие именно компетенции и какого рода проект будет целью прикладного творчества).
P>>Не отрицая вышесказанного. На техническом уровне (или на уровне личных качеств?) это непрофессионализм работника.
BZ>человек — не машина
Здравствуйте, SE, Вы писали:
S>>Прикинь, чел с опытом работы в крутой компании (уровня MS или IBM) решил сменить работу. SE>... S>>"а хрен его знает..." SE>С одной стороны согласен, а с другой противоречие. Действительно большинство разработчиков выше среднего уровня погрязли в рутине предметной области и бизнес требований. Но настоящие специалисты постоянно подновляют базовые знания, не говоря уже о том, что, как правило, имеют хороший математический бекграунд. Как то я одному успешному менеджеру где-то так же заявил, так он на спор написал десять способов сортировки и объяснил их суть. SE>Признаю, это было для меня откровением. Но, что такие люди редкость, тоже соглашусь.
а собственно — нафига? зачем манагеру знание сорировок?
т.е. я всегда на собеседовании, если возникают вот такие причуды, совершенно честно говорю, что я хорошо стреляю из нескольких видов оружия и неплохо управляюсь с лошадью. и как мне это поможет на той вакансии, на которую я собеседуюсь?
ваш пример как раз и показывает, что вот этот конкретно человек свои знания сортировок не может использовать на следующем собеседовании, потому как будет собеседоваться не как "написатель сортировок".
с другой стороны, если девелопер расскажет про организацию проектных работ, набор команды, решение конфликтов внутри группы (живые примеры из моих интервью) вы ему дадите работу именно как кодописателю?!.. да я уверен, что собеседующий сразу подумает, что вот этот его подсидит через пол-года или быстрее.
что я еще хотел бы добавить. прямо сейчас рынок меняется. в какую сторону он пойдет — пока не ясно. но уже понятно, что опыт проведения собеседований за последние 10-20 лет можно выкидывать. если весь рынок кода уйдет в азию, то кодописателей просто не надо будет собеседовать. то же самое в случае, если все студии будут еще более бизнес-ориентированы. если рынок локализуется, то начнут играть роль рекомендации (собственно, что на мелких локальных рынках мелких городов и происходит уже давно).
вывод зачинателя топика "современной среднестатистической российской конторе никакие технические интервью нафиг не нужны
хватит простого разговора о прошлых проектах" — поддерживаю.
и еще раз делюсь золотой находкой моего бывшего лида: "расскажите о своем последнем проекте, что в нем было плохо, и как бы вы это сейчас исправили". все, после ответа, полностью понятно, подходит кандидат команде или нет.
другой вариант того же разговора: "вот наш текущий проект, что вам не нравится, и как вы будете это исправлять".
а если тут же член команды сидит, и в реальном режиме типа митинг провести, вообще все будет понятно.
все imho. во