Недавно я спорил с коллегой по техническим вопросам в интервью. Будучи выпускником, я обошел множество компаний и заметил, что они используют одни и те же вопросы. Например, «Можете ли вы написать функцию, которая определяет, является ли число простым или нет?», 4 года спустя я обнаружил, что этот конкретный вопрос довольно распространен даже для начинающего разработчика. Возможно, я не смотрю на это правильно, но разве программисты не должны быть достаточно умными, чтобы придумывать свои вопросы для интервью? Я был около 16 интервью в качестве выпускника, и примерно 75% из них задавали те же вопросы. Это заставляет меня верить, что многие компании ленивы и просто Google: «Шаблонные вопросы для интервьюирования разработчиков программного обеспечения», и я чувствую, что им не нравится такой подход.
Вопрос: Лучше ли использовать набор вопросов из какого-либо шаблона или разработчики программного обеспечения стремятся быть более оригинальными и придумывать свои собственные материалы для интервью?
С моей точки зрения, если я провалил собеседование и пошел искать хорошие ответы на вопросы, которые я испортил, я мог бы пройти через следующее собеседование, если вопросы совпадают.
Ответы:
Многие из этих вопросов остаются точно такими, потому что трудно придумать вопросы, которые ясны, требуют как можно меньше знаний в предметной области, требуют умения придумать алгоритм, не будучи хитрым вопросом, который кто-то тоже задаст ». получить "или" не получить ", и что люди имеют исторический фон ответов, чтобы сравнить кандидата с. И лучшие вопросы имеют несколько уровней правильных ответов, которые позволяют интервьюеру оценить навыки решения проблем кандидата. Например, если кто-то предлагает тривиальный алгоритм поиска простых чисел, мы можем поговорить о том, как вы могли бы оптимизировать реализацию или интервьюера, чтобы привести кандидата к одному из более сложных алгоритмов.
Я был в группах, где несколько разных разработчиков оценивали, насколько трудной будет конкретная проблема для группы интервьюируемых, и оценки были по всей карте. Многие люди сначала смотрят на FizzBuzz и считают его слишком простым. Если вы пойдете на собеседование без четкого понимания того, насколько сложны вопросы, у пятого собеседника будет огромное преимущество перед первым, потому что вы узнали, что люди борются с FizzBuzz, а у вас сложилось негативное впечатление о первом человеке. Вы взяли интервью, потому что у них была идентичная борьба.
Если разработчики задают свежие вопросы, они также склонны включать в них непреднамеренные культурные или предметные знания. Они будут задавать вопросы о спорте, например, который имеет тенденцию давать преимущество людям, которые знают правила этого вида спорта, которые могут либо быстро обнаружить двусмысленность, либо сделать «очевидное» предположение. Кто-то, кто совершенно не знаком со спортом, должен выяснить правила игры на лету и с гораздо большей вероятностью ошибиться или придумать менее изощренный ответ. Или же они зададут вопрос, который непреднамеренно предполагает, что кандидаты узнают / запомнят какой-то относительно незначительный фрагмент. Кто-то, кто работал над системами бухгалтерского учета в течение многих лет, например, может предположить, что все знают, что такое система учета с двойной записью или что вопрос, который предполагал простое определение схемы системы учета с двойной записью, был бы понятен компетентному разработчику. Но это может легко привести к хорошему разработчику, который должен понять идею дебета на наличные деньги, увеличивающего денежный баланс, и кредита, уменьшающего денежный баланс. Кто-то, кто взял Бухгалтерский учет 101, однако, быстро завоевал бы популярность. Если вы намеревались проверить знакомство кандидата с бухгалтерским учетом, это может быть вполне разумным вопросом. Но если вы не ищете эксперта в предметной области, это будет проблематично. Но это может легко привести к хорошему разработчику, который должен понять идею дебета на наличные деньги, увеличивающего денежный баланс, и кредита, уменьшающего денежный баланс. Кто-то, кто взял Бухгалтерский учет 101, однако, быстро завоевал бы популярность. Если вы намеревались проверить знакомство кандидата с бухгалтерским учетом, это может быть вполне разумным вопросом. Но если вы не ищете эксперта в предметной области, это будет проблематично. Но это может легко привести к хорошему разработчику, который должен понять идею дебета на наличные деньги, увеличивающего денежный баланс, и кредита, уменьшающего денежный баланс. Кто-то, кто взял Бухгалтерский учет 101, однако, быстро завоевал бы популярность. Если вы намеревались проверить знакомство кандидата с бухгалтерским учетом, это может быть вполне разумным вопросом. Но если вы не ищете эксперта в предметной области, это будет проблематично.
Хотя я полагаю, что кто-то мог бы запомнить ответы на несколько сотен «общих» шаблонных вопросов, которые используют люди, это не беспокоит меня как интервьюера. Во-первых, было бы несколько впечатляющим, если бы они это сделали, и это отражало бы немало трудолюбия и решения проблем. Во-вторых, это, как правило, было бы неплохо - если разработчик знает, как перевернуть строку, знает некоторые алгоритмы для поиска простых чисел, знает, как писать циклы и реализовывать управляющие конструкции для FizzBuzz, знает различные алгоритмы графов, которые приходят регулярно и т. д. - они, вероятно, довольно разносторонний разработчик. Если разработчику удастся запомнить ответы, ничего не изучив, их поймают, когда интервьюер захочет немного углубиться или они
источник
Я думаю, что это простые вопросы fizzbuzz, перевернуть строку и т. Д., А затем есть определенные вопросы, тогда как, если вы их не видели раньше, трудно найти намеченное оптимальное решение с дополнительным давлением интервью и коротким временем. ограничения. Хуже всего то, что иногда рекрутеры, не имеющие технических знаний, задают некоторые из этих вопросов, и они ищут очень конкретный ответ ... Если вы не дадите оптимальный ответ, они думают, что вы абсолютный идиот. Даже если ваш ответ работает, решает проблему, и хотя он может быть неоптимальным, он не слишком неэффективен ....
Несколько примеров:
Как бы вы перемешали колоду карт? Они ищут метод Фишера-Йейтса http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffleдругие ответы «неправильные» ..... Это не то, что вы, вероятно, узнаете, если только вы не хотели перетасовать карты раньше и специально не искали их. Вы можете наткнуться на него в ходе выполнения ответа, но из того, что я видел, они ожидают, что вы узнаете эту простуду, так что сомнительно, что будет много времени, чтобы позволить найти решение. Другой менее эффективный (но, возможно, более очевидный) способ - создать новый массив с указателем на исходный массив и числом, являющимся случайным числом, а затем отсортировать массив по случайному числу. Затем используйте отсортированный массив для создания нового массива карт. В любом случае, я получил 0 баллов за представление этого рекрутеру.
Другим примером является вопрос о том, как вы обнаружите дублирующийся номер в списке из n чисел от 1 до n-1. Очевидный ответ (который является относительно эффективным с точки зрения времени) состоит в том, чтобы использовать хеш-таблицу для вставки каждого элемента, и если вы найдете один уже вставленный, то вы нашли дубликат. Оптимальный ответ - потому что числа находятся в диапазоне от 1 до n, если дубликатов нет, ожидаемую сумму можно получить как n (n + 1) / n. Затем, если вы суммируете массив, вы получите фактическую сумму, которая на порядок меньше ожидаемой. Таким образом, в основном n - (ожидаемая сумма - фактическая сумма) = повторяющееся число ... Это довольно особый случай .... Я действительно видел что-то раньше в каком-то онлайн-посте о проблемах с собеседованием давным-давно о связанном с тем же трюком, так Я был в порядке ....
Еще один, переверните все слова в строке, не используя дополнительный пробел. Я должен был подумать об этом, и рекрутер был довольно нетерпелив в те 5 минут, которые я думал (разделение и повторное объединение строки в обратном порядке или переход от слова к слову в новый массив очень просты). Я придумал, чтобы найти границу последнего слова, найти конец первого слова и постоянно сдвигать весь список вниз на 1, а затем вставлять соответствующую букву. Затем повторяйте, пока не дойдете до конца списка. Этот метод работал, и интервьюер согласился (он был немного техническим), но он довольно неэффективен. Когда я вернулся домой, я искал оптимальный ответ, и он просто переворачивал список, а затем переворачивал каждое отдельное слово. Некоторые люди могут придумать это,
Теперь это правда, когда вы увидели некоторые из этих проблем, вы можете решить их проще. Потому что есть несколько похожих вопросов с одними и теми же трюками. Я знаю особенно формула n (n-1) / 2 и список чисел имеет несколько вариантов. Но я все еще не знаю, что тестируют эти вопросы. FizzBuzz - это то, что должен делать каждый (хотя я видел варианты, которые не так просты, и в этом случае я начинаю сомневаться, реально ли это для ситуации на собеседовании, не имея возможности вводить / отлаживать код). Некоторые из этих вопросов очевидны, когда вы их видите, но если вы их не видели, они не очевидны. В конце концов, кто-то упоминал, что потребовались годы, чтобы появилась первая правильная реализация бинарного поиска ... Сейчас бинарный поиск настолько очевиден, потому что каждый может прочитать об этом.
Тем не менее, я думаю, что хуже всего то, что нетехнические люди задают вопросы, потому что они не могут оценить ваше решение правильно, хотя и не оптимально. Они просто знают, что ваше решение не является тем, которое представлено, и, следовательно, все неправильно, вы не получаете кредит за попытку. Даже неоптимальные решения часто показывают знание программных конструкций. Если я не программирую игры в покер, мне все равно, насколько хорошо кто-то может перетасовать колоду карт. И даже если бы я показывал им эффективный алгоритм, я уверен, что любой, кто был бы на полпути, мог бы им следовать.
Шаблонные вопросы, по-видимому, просто дают преимущество кандидатам, которые допросили дольше, поскольку они с большей вероятностью увидели больше шаблонных вопросов. Даже FizzBuzz, когда вы впервые видите это, вы можете испугаться, но, как вы видите это снова и снова, вы становитесь более привыкшими к этому. Лучшее, что вы можете сделать, - это решить некоторые задачи, связанные с программированием, которые требуют пользовательской бизнес-логики. Например, создайте некоторый набор данных (массив объектов / записей), а затем создайте несколько бизнес-правил, которые будут применяться к каждому объекту и возвращать ответ .. например, некоторый тип оценки и т. Д., Но очень нестандартные правила). Хотя они, вероятно, видели циклические записи и применяли логику миллионы раз, ваши правила будут уникальными, поэтому, по крайней мере, им придется понимать и успешно применять созданные вами правила.
Допустим, прогнозируемая зарплата и список кандидатов и их топ-3 любимых видеоигр, и, возможно, стартовая зарплата. Кандидаты, которым нравится Zelda, получают штраф 300, кандидаты, которые любят русалку, получают бонус 200. Кандидаты, которым нравятся братья Донки Конг и Супер Марио, но не доктор Марио, получают бонус 300. Кандидаты, которым нравится Metroid или Kid Icarus, получают 200 бонусов и т. Д. ... Это кажется немного безумным, но это покажет вам их способность преобразовывать бизнес-правила в логические программные конструкции и проверять их понимание логической логики. В целом не сильно отличается от fizzbuzz за исключением того, что не используются модули и циклы. Вы, конечно, могли бы дать им список и сделать так, чтобы они просматривали его и выводили результаты на экран, используя также определенные критерии вывода.
источник
Во время моего последнего поиска работы я был в очень похожей ситуации. Я думаю, что у меня был один и тот же вопрос связанного списка во всех компаниях, но один (тот, на котором я сейчас работаю).
Я заметил, что эти вопросы были заданы в первом интервью.
С точки зрения интервьюеров, если человек не может правильно ответить на эти вопросы, он не подготовился к собеседованию, так зачем тратить на них больше времени? Я не думаю, что это правильная идея. Компания получит целую группу людей, которые могут рассказать ответы от Google, переходя к следующему раунду, но не обязательно группу людей, которые являются компетентными разработчиками.
Я нашел, что стандартные вопросы FizzBuzz раздражают лично, но это сделало для легкого интервью. Мне нравится сложное интервью. Когда я беру интервью у потенциальных сотрудников, я хочу убедиться, что знаю, что они могут думать и решать проблемы. Я ожидаю, что они могут использовать Google.
Должна ли компания иметь шаблон вопроса? Да. Это помогает оценить кандидатов на первые несколько туров. Должен ли шаблон состоять из общих проблем, которые можно легко найти через Google? Нет, это просто меняет всех участников.
источник
«Должны ли программисты стремиться быть более оригинальными и придумывать свои собственные материалы для интервью?»
Да, они должны, но на самом деле происходит то, что вы приходите на работу и получаете электронное письмо от HR, в котором говорится, что завтра вы участвуете в собеседовании с двумя кандидатами. Вы уже дошли до задницы в аллигаторах, и ваш менеджер не поблагодарит вас за то, что вы потратили полдня на то, чтобы придумать новые, хорошие вопросы для интервью. Не торопясь, вы возвращаетесь к вопросам, которые вам задавали, или которые вы можете быстро найти в Google.
источник
Такие вопросы, как вы упоминаете, обычно являются fizzbuzz и не используются для найма; это отрицательный вопрос (т.е. правильные ответы никоим образом не приведут вас к работе, но неправильные ответы приведут вас в мусорную корзину). Так что они не очень ценны.
Это вопросы, которые приходят позже, которые нужно продумать, и они будут чаще всего иметь сильное отношение к типу работы, которую выполняет компания, и к тому, на что похожа динамика команды.
Таким образом, ответ: оба.
источник
Если большинство или все их вопросы совпадают, это действительно плохо (для них это так). Это, вероятно, показывает, что интервьюер не очень хорошо подготовлен к выполнению задачи.
Обратите внимание, что использование «шаблонных» вопросов начального уровня, таких как тест FizzBuzz, может быть приемлемым, чтобы быстро отсеять абсолютно неумелых, не затрачивая слишком много времени и усилий. Хотя даже тогда вариации на тему полезны, чтобы не слышать ответы прямо из Google. С другой стороны, легко спросить кандидата, что на самом деле делает только что написанный код и почему он работает (или не работает). Я считаю, что технически опытный интервьюер может быстро определить, притворяется ли кто-то, что он знает ответ.
И что еще более важно, если кто-то проходит тест начального уровня, должны возникнуть более трудные вопросы, когда уже недостаточно просто повторять готовые ответы. Лично меня больше интересуют мыслительные процессы собеседника и способности решать проблемы в целом, а не конкретное решение загадки. Другой важной темой будут процессы и подходы к разработке - я начинаю открытое обсуждение, а не конкретные вопросы по этим темам. Там нет правильного или неправильного ответа на эти предметы, поэтому нет возможности подготовиться заранее. Но из обсуждения я узнал много нового о том, будет ли мне и команде удобно работать с этим кандидатом.
Таким образом, ограниченное количество «шаблонных» вопросов в порядке, но хорошее интервью - это процесс, в котором интервьюер должен адаптироваться к ситуации, включая уровень навыков кандидата (рекламируемый и реальный), психическое состояние (нервозность / усталость) и т. Д.
источник
Мой шаблон интервью в псевдокоде:
если вопрос (FizzBuzz_type_question) == правильный
за каждый (вопрос q в array_of_more_interesting_questions) вопрос (q) еще
конец интервью.
источник
Я думаю, что интервью следует разделить на:
Социальный аспект (кроме кадрового персонала) - хорошо ли вписывается этот человек в нашу организацию? Правильно ли он настроен - готов ли он следовать нашему стилю управления? Это должно быть оригинально, так как компании и команды разные.
Общая пригодность для роли - опять же это должно отличаться от места к месту
Суть: вопросы предметной тематики, которые сосредоточены на основной области работы - это научно и не должно быть оригинально, так как оно научно.
Пригодность к повседневной работе. Это вопросы о предметах, которые вы ожидаете от кандидата ежедневно. Это может быть научным, но лучше от реальной работы, которую он должен делать. Эта часть будет варьироваться от места к месту.
источник