Делают ли головоломки кодирования хорошие вопросы по собеседованию [закрыто]

Я беру интервью у кандидатов на должности программистов Java.

Мой коллега настаивает на заполнении более половины интервью с java-кодированием головоломок. Он считает, что если кандидаты могут перемещаться по петлям, то они должны быть хорошими.

Одним из таких примеров головоломки для кодирования является

        i=0;
        for( i=1 ; i< 10 ;i++)
        {
                if(i%3 ==0) i++; break;
                if(i%2 ==0) i++;

         }
          print(i);

Последующие действия: что произойдет, если разрыв удален?

6 голосов | спросил Vinoth Kumar C M 22 Jam1000000amSun, 22 Jan 2012 08:31:13 +040012 2012, 08:31:13

7 ответов


22

Какой разработчик вы ищете:

  • Тот, кто может взять набор требований, написанных как загадка, и создать код, который решает загадку?
  • Тот, кто может отлаживать код, похожий на загадку? или
  • Тот, кто может разговаривать с пользователями и теми, кто пишет требования; затем создать код, который решает проблему и соответствует требованиям?

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

ответил mhoran_psprep 22 Jam1000000amSun, 22 Jan 2012 09:27:12 +040012 2012, 09:27:12
10

Это зависит от того, для чего вы используете головоломку.

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

Если вы используете его как черно-белый тест, где самый быстрый кандидат для решения головоломки получает задание, то вы делаете это неправильно.

Вы хотите оценить кандидата по широкому кругу аспектов: общение, готовое мышление, понимание кода, навыки решения проблем, общее отношение к кодированию, социальные навыки, сильные и слабые стороны, отлично подходит для команды. Сокращение всего этого до одного логического «решения головоломки» никогда не бывает достаточно хорошим.

ответил tdammers 22 Jpm1000000pmSun, 22 Jan 2012 17:57:21 +040012 2012, 17:57:21
6

Я думаю, что ключ состоит в том, чтобы понять, что головоломка, которую вы придумали, спрашивает, а что нет.

Есть несколько различных уровней (imo):

  • Пазлы ради головоломок. Возможно, они предназначены для проверки того, как кандидат думает под давлением. Возможно, они предназначены для поиска гибких учеников или тому подобного. Мне все равно - я их ненавижу. Я ужасен в головоломках, и, честно говоря, если я ударил одного из них в интервью, которое было очень похоже на то, что меня просто проверяли на то, как сильно я сосать приключенческие игры, я бы, наверное, что-то сказал. Я бы хотел сказать, что они не возникают, но они это делают.
  • Головоломки для чтения кода. Как и в OP. Я ... не обязательно убежден в их полезности. Часто кажется, что это немного плохо написанный код для начала, следовать плохой практике или действительно надуман.
  • «Определите алгоритм» головоломки. Те, которые вы иногда видите в объявлениях «Решите это, работайте здесь» на общественном транспорте, где вы действительно ищете кого-то достаточно знакомого с некоторыми концепциями, которые применяются в вашей области. Я видел, что они полезны, если ваше конкретное приложение заполнено с определенным типом проблемы.
  • FizzBuzz и связанные «вы знаете концепцию» головоломки. Я считаю, что они подходят для тестирования базовых навыков.

Я думаю, что есть два основных препятствия для этого подхода. Первый из них тяжелый /непрозрачный /умный сам по себе, как какой-то садистский Мастер Подземелий. Почему вы испытываете людей за их способность расшифровывать ужасно написанный код, который не предназначен для чтения или понимания (я сделаю исключение для мест, которые уже имеют ужасно написанную базу кода)?

Второй тратит слишком много времени на головоломки, и на самом деле не обращается к тому, что эти ценности. Хорошо справляться с этими типами вопросов означает, что вы умеете решать головоломки . Это основной талант, который вы хотите в своих сотрудниках?

ответил Fomite 23 Jam1000000amMon, 23 Jan 2012 10:18:20 +040012 2012, 10:18:20
4

Конечно, вы не можете задавать головоломки only , а «gotchas», которые вращаются вокруг языковых мелочей, не очень полезны. Но какое-то упражнение по программированию является виртуальной необходимостью, если вы используете кадровое агентство или рекрутеров, или если вы продолжаете нанимать людей, которые умеют подделывать свой уровень компетентности.

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

Примером достойного места для начала является проблема, которую я имел в соревновании по программированию еще в 1985 году, когда я был молодым хакером Applesoft BASIC. Проблема заключалась в том, чтобы напечатать все совершенные квадраты от 1 до 1000. Конечно, есть два подхода к решению этого вопроса:

  1. Итерации по всем целым числам от 1 до 1000. Возьмите квадратный корень из каждого и посмотрите, было ли это равным результату с усеченным целым результатом того же вычисления. (Нет оператора modulo в Applesoft BASIC!) Если да, напечатайте номер.
  2. Итерации через все целые числа от 1 до sqrt (1000). Распечатайте квадрат каждого.

Очевидно, что второй намного эффективнее первого, и в качестве бонуса он будет печатать все правильные ответы, в то время как первый из-за ошибок округления в реализации с плавающей запятой Apple фактически пропустил один или два. Однако большинство решений оказалось в используемом подходе №1. (В конце концов, это были ученики старших классов.)

Обсуждение современной проблемы такого рода может показать, знает ли кандидат, что есть два подхода, может сказать, что лучше, и понимает ограничения бинарной математики с плавающей запятой. Фактически, я бы сказал, что кто-то, кто не мог бы рассказать вам, почему второй подход лучше, будет бедным кандидатом - в основном на уровне ученика средней школы с 1985 года. Эта проблема немного сложнее, чем «fizzbuzz», - и гораздо менее сложно, чем все, над чем они, вероятно, будут работать!

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

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

ответил kindall 22 Jam1000000amSun, 22 Jan 2012 11:26:29 +040012 2012, 11:26:29
2

Клянусь на днях, когда кто-то задает мне такой вопрос, я собираюсь ответить на что-то вроде «У меня есть лучшее предложение. Вы стреляете в любого дурака, который пишет такой код». Такой код никогда не должен проходить проверку кода.

OTOH, мне нравятся головоломки. Я нахожу их забавными. НИЧЕГО не имеет никакого отношения к тому, могу ли я писать достойный, поддерживаемый, надежный код.

ответил SnoopDougieDoug 23 Jam1000000amMon, 23 Jan 2012 05:55:40 +040012 2012, 05:55:40
0

Я бы не назвал это классической загадкой, , как обсуждалось, например в этом вопросе . Я бы назвал это упражнением для чтения кода. Почти все согласны с тем, что головоломки только измеряют, если кандидат видел такую ​​загадку раньше. Но упражнения по чтению кода могут иметь смысл, ИМХО, разработчики тратят много времени на чтение кода. В конце концов.

Но лично я бы использовал код, который был бы более реалистичным. Например, у меня есть функция где-то в моей базе кода, которая вначале пересекает дерево. Если вы разделите имя, достаточно опытный программист должен все же понять, что делает эта функция. И отвечайте на вопросы типа «что произойдет, если эта структура данных будет графиком с циклами вместо дерева?» или «что вам нужно изменить, чтобы получить поиск по глубине?».

ответил nikie 22 Jpm1000000pmSun, 22 Jan 2012 13:03:59 +040012 2012, 13:03:59
0

Я никогда не думал, что головоломки для кодирования особенно эффективны для обнаружения того, хорошо ли у кого-то хорошее знание кода или решения проблем. Обычно я нахожу, что проблема, требуемая для них, довольно отличается от решения проблемы при написании программного обеспечения. Обычно у них нет требования мыслить творчески. Контраст это с типом интервью типа Google «Как бы вы придумали цену на стирку всех окон в Seatle?» Это требует способности творчества и решения проблем, но может применяться к любому языку программирования, который вы собираетесь использовать в будущем.

ответил Jaydee 6 FebruaryEurope/MoscowbMon, 06 Feb 2012 15:29:03 +0400000000pmMon, 06 Feb 2012 15:29:03 +040012 2012, 15:29:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132