Comments 36
Главное, чтобы потом в продакшн-коде сочинителя не появлялось что-то похожее на вторую задачку.
Идея с двоичным представлением была рождена, когда думали на ноуты слать запароленные архивы с задачками, а паролем к ним — конкатенацию ответов на все предыдущие задания, чтобы и пароль был непростым для подбирания, и решение всех предыдущих задач требовалось для открытия каждого из архивов. Потом решили, что нехорошо завязываться на технику, и сделали карточки, но двоичное представление оставили :)
Сложность функции — эммм…?
Скорее задача должна звучать как — расположите данные функции по эммм… ну я даже не знаю, по скорости роста на больших N…
Слабенько, на самом деле для задач, которые должны что-то показать на собеседовании.
Для tricky задач — слишком прямолинейны, для вопросов на искусство программирования — не то.
Итого — подойдет чтобы отсеять слабых джуниоров и найти джуниоров посерьезнее. Для практикующих программистов, увы, не репрезентативно.
А зачем спрашивать про вывод на консоль? Запустил — посмотрел.
Никогда мне не стать программистом. Выпью. Тоже не стану.
Пришел человек на собеседование и видит вот ЭТО. Да еще и написано уберужасным стилем ( реально увидев такое в продакшене я бы уволил). Реакция нормального человека сказать — досвидания, я пошел.
Расслабьтесь. Поищите здесь статью про неспособность "программистов" написать реализацию алгоритма пузырьковой сортировки. Там очень смешные комментарии. Как только "программисты" не отмазывались, каких только нелепостей не придумывали для оправдания своей неспособности написать три строчки кода. И даже когда им дали эти три строчки они продолжали настаивать, что "настоящие программисты" вовсе не обязаны уметь написать трёхстрочную реализацию по формальному описанию простейшего алгоритма, поскольку это задача офигенной сложности. Они действительно считают себя программистами и сеньорами и прочими крутыми словами. И они в реальности приходят на собеседования. И их процентов 95. Или 96. Поэтому я абсолютно спокойно отношусь к таким заданиям. С пониманием. А все эти хлопанья дверями, "я бы за такой код уволил", — ну, этим вв покажите свою неадекватность, не более. А я напишу эту пузырьковую стртировку или бинарный поиск за пару минут и перейду к обсуждению более интересных вещей.
Насчет баблсорта другой вопрос (хотя тоже спорный),
Да ладно, чего там спорного. Если человек не может написать трёх строк кода, то можно выставлять его за дверь.
Здесь же человек просит соискателя поработать компилятором/рантаймом
Если у вас работа — не быдлокодинг прямолинейного кода по отображению страничек, то вы периодически работаете и компилятором и рантаймом. При отладке. А при разработке многопоточного кода ещё и немного процессором и контроллером кэш-памяти :). По-моему, нормально.
для ужасного, корявого кода
Ну, это вообще офигенная возможность обсудить ужасность и корявость кода.
Уходить надо спокойно, без хлопаний дверьми, просто — спасибо, до свидания, я все понял.
Но ваша воля не пользоваться такой прекрасной возможностью ;)
большинство людей, которые чего-то в этой жизни добились, казались кому-то неадекватными.
Да, мы все знаем этих трёх человек. Остальные неадекваты так неадекватами и остались и имя им — легион.
С такой логикой, будет сложно найти сотрудника.
Ну как бы так в жизни и бывает, человек начал работать в бэк-энде банка, вряд ли он придет на геймдева куда-то еще, а если и придет, то только с понижением в ЗП пока до всего не дойдет. Ваш подход подходит для подбора человека «на вырост». Этим приходится заниматься, когда не нашел того, кого нужно сразу, и понимаешь что человечка нужно будет растить =).
Хотя, мы делаем проще — спрашиваем прямо, что-то вроде: «как работает LINQ», или «как работает yield return» (если не джуниор, конечно).
Вам когда ремонт в квартире надо сделать, вы рабочих тоже спрашиваете — как шуруповёрт работает?
Понятно, что нужно знать где применять и во что это обойдется, но вопрос «как» — странный, вы еще может и на бумажке просите написать IL код, в который компилируется например yield?
Согласен. С таким же успехом можно генерировать задачи с помощью какого-нибудь csmith (ну и обфусцировать ещё для надёжности) и просить рассказать, что оно там будет делать. Множество всех программ бесконечно, зачем же давать адекватные? Нагенерил тысячу строк, которые компилятор едва собрал — отдавай кандидату.
Если уж собеседование на C# то спросите про кругозор и глубину знаний. Какие задачи решались с применением C#, почему было выбрано именно такое решение.
Такое чувство, что рекрутеры программисты-неудачники и пытаются обыграть в наперстки обычных людей, реализовав свои комплексы превосходства.
Пожалуй возьму такую контору «на карандаш», чтобы обходить ее стороной.
За весь опыт разработки ПО, основная сложность найти адекватного человека. Такие вопросы на собеседовании ни разу не помогают его выявить. Эти задачи показывают лишь что человек как-то знает инструмент, а потом выясняется, что пользоваться им не умеет.
Я бы понял, если бы были задачи еще переписать код на более понятный.
Кстати, а есть ли аналог книги «Java puzzlers» Джошуа Блоха, но про C#?
Не совсем понятно откуда формула взялась
var y = numbers.GroupBy(x => x).Select(x =>
{
result += x.Key;
return x.Key;
});
20 лет в индустрии, ни разу не сталкивался в жизни с задачами которые были на собеседовании
Квест от ЕРАМ: пять задач с собеседований по .NET