Этот вопрос слишком сложный для php dev. работа?

Мы ищем кого-то, кто поможет нам улучшить и поддерживать наш высококачественный прототип транзакционного веб-приложения на основе php. В идеале, кто умеет хорошо общаться, а также работает как на переднем, так и на внутреннем веб-дизайне (а также на умных/делает вещи и т.д.). Среди других более общих вещей я использовал этот вопрос:

Учитывая это:
    $foo = array(1, 3, 7);
напишите функцию (на этой доске), чтобы суммировать значения массива.

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

Я читал несколько сообщений здесь и там (в том числе и Джоэл и Джефф), в которых говорится, что, как думают кандидаты, навыки дизайна, страсть и т.д. важнее любого конкретного технического навыка, и я согласен с этим. Кроме того, я вижу, что программирование на доске немного нереально. OTOH, мне кажется, что это настолько фундаментально для меня, что я склонен рассматривать его как прекрасный фильтр первого прохода между сторонними разработчиками (которые знают свой путь вокруг html, css и как копировать и вставлять js-функцию или два), и люди, которые могут действительно кодировать. Мысли?

A touch больше информации: я открыт для всех видов ответов: array_sum, цикл for, цикл foreach. Черт, если они захотят написать класс ArraySum, это будет излишним, но просто отлично. Использование javascript или другого языка было бы неплохо, если бы им было удобнее. Даже попытки с незначительными ошибками были бы в порядке, но у меня было несколько полных зависаний, поэтому я просто хотел проверить, как себя.

Ответ 1

на мой взгляд, вопрос совершенно верен и говорит немного (не так много, но очень важно) о кандидате, в зависимости от того, сколько времени вы вкладываете в него. просто скажите ей, что это не вопрос об уловке заранее, что он действительно, действительно такой простой, как кажется, поэтому она не тратит много времени на размышления о подводных камнях и сводит к минимуму ситуацию с оленями. вы делаете это как меру, чтобы отфильтровывать людей, которые подают заявку на программирование, даже не зная о чем-либо, но надеясь, что их наняли в любом случае по чистой удаче (если они знают, как кодировать, а просто нервничать, это должно бит давления). пусть они кодируются, но не фокусируются, если существует $missing или теги <?php присутствуют или нет.

если она предоставляет array_sum или sum_array, поскольку ответ почти не имеет значения, особенно если речь идет о php (но если два кандидата равны в противном случае... я даже не могу вспомнить последний раз я должен был использовать эту функцию). и использование автозаполнения и синтаксиса-раскраски (с предопределенными ключевыми словами) IDE против тупого текстового редактора имеет большое значение в этой ретроспективной ретроспективе. в этом случае попросите альтернативное решение ручной работы.

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

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

  • встроенный array_sum (очень быстрый и definitley не глючный, но негибкий): у меня есть немного опыта с традиционными php-проектами

  • для /loop конструкций (достаточно хорошо, изобретая колесо, но можно использовать, если есть разные объекты, чем числа.): я могу решить простые задачи если нет предопределенных копируемых и вставляемых решений

  • array_reduce (с предложением для реализации array_reduce, если интервьюер хочет его увидеть): необычный для программиста php, поэтому, похоже, у меня есть знания и опыт вне из песочницы php

  • a ArraySum-Object (с помощью метода ArraySum::add($value), который хранит все значения, но кэширует сумму): я использую по крайней мере некоторые из принципов oop

  • function() {return 11; } (с обвинением в том, что это шуточное решение, но действительное): у меня (хотя и грубый) юмор программиста - знак, который я лично заинтересован в программировании вне работы... некоторые интервьюеры, которые программисты (но не хакеры) могут интерпретировать это как готовность использовать грязные хаки как заполнители (aehm), если ограничения по времени слишком плотные.

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

  • рекурсивное разделение и завоевание: бонус! Я знаю еще больше об алгоритмах.

попытайтесь как можно больше выйти из этого вопроса (если позволяет время). в конце вы немного узнаете о возможностях программирования и многом о опыте (не обязательно PHP).

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

отказ от ответственности

вопрос бесполезен, когда...

  • интервьюер не программист. забудьте об этом, если hr-guy делает это.
  • существует очень ограниченное временное ограничение при опросе. то результат будет практически случайным.

Кроме того, кого вы ищете? если вам нужен дешевый ворчащий кодер, даже простой вопрос вроде этого должен работать. если вам нужно качество и опыт, не тратьте на него слишком много времени (но все равно).

Ответ 2

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

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

Я упоминаю об этом, потому что моя невеста когда-то провела собеседование по программированию, где ее спросили, как она изменит строку. Она дала несколько разных алгоритмов, которые могли бы выполнить это, когда интервьюер сказал ей, что она ошибалась после каждого. Наконец она сдалась, и он (неодобрительно) сказал ей, что она должна была просто использовать функцию String.Reverse().

Не делай этого. Пожалуйста.

Ответ 3

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

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

Ответ 4

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

Большинство разработчиков PHP создали видимые веб-сайты - вы могли видеть их работу.

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

Ответ 5

Короткий ответ: Нет

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

Длинный ответ: Я часто задаю вопросы интервью, которые я ожидаю от кандидата. Можно было бы классифицировать их как слишком (hard | scague | open-end), но я действительно не ищу ответа. Я хочу посмотреть следующее:

  • Они пытаются ответить на вопрос? Некоторые люди просто сдаются немедленно
  • Как они подходят к проблеме? Даже если они идут по неправильному пути, они обычно делают хорошие предположения и задают хорошие вопросы?
  • Насколько хорошо они выдерживают самообладание при стрессе? Вопрос состоит в том, чтобы быть сложным, и поэтому будет напряженным. Они паникуют, остаются спокойными, уходят, разговаривают и т.д.??
  • Могут ли они найти решение, если я дам им подсказки и указатели? Или насколько хорошо они слушают, и они быстро ассимилируют новую информацию?

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

Ответ 6

нет, это не слишком сложно, но это может вызвать у людей панику, если они точно не помнят синтаксис (хотя, если вы специально попросите php dev, тогда они должны хотя бы запомнить некоторый синтаксис). Вместо этого попросите псевдокод, если они все еще не могут решить вопрос, возникает проблема:)

Ответ 7

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

Ответ 8

Это основная проблема, которую вы просите по телефону, прежде чем беспокоиться о том, чтобы привести кандидата в дом.

Есть несколько стандартных вещей, которые я задаю каждому программисту: Сделайте выбор в двух таблицах, чтобы дать сумму столбца во второй таблице, удалите записи из одной таблицы на основе значений в секунду, разницу между объектом и строку как параметр метода, и пару связанных с html/css вопросов.

В течение 5 вопросов я могу отсеять 90% кандидатов, прежде чем я их даже увижу. Остальная часть будет сводить идеологию.

Ответ 9

Мое любимое было бы:

while ($foo && $sum += array_shift($foo)) continue;

Ответ 10

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

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

Ответ 11

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

Ответ 12

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

Ответ 13

Собственно, эти вопросы кажутся... легкими.

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

Ответ 14

(Я думаю, что метод array_sum($array), как часть PHP, выполнит эту работу.)

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

Потребовалось бы dunce, чтобы соблазнить интервью таким вопросом. Вопрос не слишком жесткий, он на самом деле очень снисходителен.

Ответ 15

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

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

Ответ 16

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

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

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

Джефф написал об этом несколько лет назад: Почему не программисты.. Программа?

Ответ 17

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

Изменить: Или очень часто люди подделывают свои резюме?

Ответ 18

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

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

IME, запрашивая ответы на память в памяти (отзыв синтаксиса, номера портов и т.д. и т.д.), говорит о некоторых аспектах способности отдельных лиц, и иногда их нужно задавать. Но более важно вникать в способности решать проблемы.

Ответ 19

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

Ответ 20

У меня был момент оленей в фарах, интересно, что это за трюк!

Любой, кто подает заявку на задание на программирование, будет знать, как добавлять целые числа (так или иначе, даже если это в цикле), поэтому я пропустил бы его и нашел бы что-то более сложное... но не настолько запутанным!:)

Ответ 21

Недавно я сделал интервью для позиции PHP. Меня попросили написать простую функцию на бумаге (конечно, не так просто, как ваш пример).

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

Что касается вашего примера — это просто к простому. Особенно, если вы принимаете array_sum() в качестве ответа.

Ответ 22

Я бы не поверил, что есть такие "программисты", если бы вы спросили меня несколько лет назад. Но то, что было замечено, не может быть невидимым. Я стал свидетелем первых людей, которые зарабатывают на жизнь программированием сайтов и ничего не знают о программировании. Они просто копируют и вставляют код других людей, пока они не запустится. И вы не могли бы поверить, как их тарифы на уровень дохода сравниваются с их "навыками" (да, уровень дохода напрямую не связан с навыками, но он все равно меня измучает).

Да, вы правы, и эти люди существуют. И то, что вы делаете, является одним из полезных фильтров для фильтрации "прагматичных script копирующих пастеров" (или других) от реальных кодеров. Конечно, если вы не хотите копировать пастыри (они могут выполнять некоторые простые задачи! - или более сложные, но с невероятным кодом), и в этом случае такой вопрос для интервью действительно тяжелый для них.