Как реагировать на неправильные / не отвеченные вопросы во время интервью? [закрыто]


31

Сегодня я провел свое первое собеседование с потенциальными интернами. Хотя это были в основном открытые вопросы, у меня были некоторые тривиальные задачи для них:

  • Напишите функцию, которая возвращает true, если стороны треугольника (все целые числа) a, b и c могут представлять собой прямоугольный треугольник .
  • FizzBuzz.
  • Вычислить N-й элемент Фибоначчи, используя рекурсию (если бы они не знали, что такое Фибоначчи , я бы даже написал им определение F (n) = F (n-1) + F (n-2); F (1) = 1; F (0) = 1).
  • Реализуйте структуру List для целого числа и напишите функцию, чтобы обратить его.

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

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

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


6
См. Эту статью для альтернативной точки зрения на этот вид вопросов.
Матье

2
они на последнем курсе. но я бы решил эти проблемы еще до того, как поступил в университет, так что для меня это был шок.
Миколас Симутис

2
Я должен быть жестким здесь; Если кто-то не может реализовать структуру списка, у него нет причин программировать, или, по крайней мере, нет причин нанимать их. А потом я прочитал, что это их последний год в университете? Это подразумевает многолетнее образование, и в этот момент они должны определенно знать что-то базовое. Тем не менее, я думаю, что будет честно проявить вежливость и продолжить интервью. Это может быть просто случайность, и они действительно блестящие программисты.
Макс

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

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

Ответы:


36

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

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

Просматривая вопросы, которые вы представили, я, скорее всего, рассмотрю их в следующем интервью:

1) Напишите функцию, которая возвращает true, если стороны треугольника (все целые числа) a, b и c могут представлять собой прямоугольный треугольник.

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

2) FizzBuzz

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

3) Рассчитать N-й элемент Фибоначчи с помощью рекурсии (если бы они не знали, что такое Фибоначчи, я бы даже написал им определение F (n) = F (n-1) + F (n-2); F (1) ) = 1; F (0) = 1).

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

4) Реализовать структуру List для целых чисел и написать функцию для обратного.

Этот вопрос на самом деле может быть слишком открытым, так как он написан, поэтому он также может быть хорошим вопросом, чтобы увидеть, как кандидат ищет дополнительную информацию (например, должны ли быть удалены функции, преобразование в массивы и т. Д.), Но с учетом определенная постановка задачи («Реализовать базовую структуру списка для целых чисел, которая позволяет добавлять числа в конец или по произвольному индексу, удалять и включать функцию, возвращающую обратную копию списка»), ученики должны иметь возможность решать проблема в том, что списки представляют собой общую структуру, представленную либо в раннем курсе структур данных, либо в раннем базовом курсе информатики.

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

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

  • Встречи и приветствия, процедуры собеседования.
  • Короткое интервью с штатным программистом (ами), основные вопросы об истории.
  • Презентация викторины по программированию.
  • Перемена
  • Возвращение из перерыва, увольнение некоторых кандидатов, которые не подходят.
  • Расширенное интервью с штатным программистом (ами).
  • Интервью с человеческими ресурсами (при необходимости).
  • Заворачивать.

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

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


3
+1 очень хороший ответ. Я думаю, что результат выполнения таких викторин должен быть лишь «фактором» при принятии решения о найме. Вы можете пропустить некоторых хороших кандидатов на стажировку, если будете использовать это в качестве строгого фильтра go / no-go. Стажеры по определению пробуют что-то новое. Они не только новички в вашей профессии, но и могут быть неопытными в том, чтобы быть «на месте». В этом есть эмоциональная составляющая, и люди обращаются с ней по-разному.
Анджело

@ Анджело - вот почему я всегда поклонник короткого интервью и наблюдения / помощи викторины, поскольку это может дать людям достаточно времени, чтобы увидеть, хотят ли они продолжить интервью или нет. Перерыв и досрочное увольнение больше подходят для кандидатов, которые, как вы знаете, не хотят продвигаться вперед, в отличие от тех, кто просто не справляется так хорошо, как вам может показаться в викторине.
rjzii

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

82

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

Другими словами, что бы вы сказали, если коллега должен был реализовать последовательность Фибоначчи и не знал, что это такое? Вы объясните это им, пока они не поймут это достаточно, чтобы продолжить самостоятельно. В невежестве нет ничего постыдного, если оно не вечно.

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


32
+1: вы хотите воссоздать динамику работы во время собеседования, а не динамику в классе.
Матье

3
+1: точно верно. Наймите на работу в команде, заплатите за опыт и навыки.
фунтовые

1
Хорошая точка зрения. На моих самых успешных собеседованиях люди задавали вопросы, касающиеся проблем, с которыми они сталкивались, и я смог помочь им найти решение. Было бы неплохо, если бы вы могли рассматривать собеседование как дневную консультацию.
Билл К

11
+1 за «В невежестве нет ничего постыдного, если оно не вечно».
mskfisher

9

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

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

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


6

для стажировки вы могли бы спросить немного много.

Я понятия не имею, что вы подразумеваете под 4-м вопросом. Что касается вопроса о рекурсии, он немного непрактичен, просмотрите свою собственную кодовую базу и определите количество областей, в которых используется рекурсия, я готов поспорить, что их мало - нет. Ситуации интервью являются стрессовыми, и ожидание того, что кандидаты будут реализовывать редко используемые стратегии, которые имеют обратный характер по сравнению с большинством вещей, которые вы когда-либо будете программировать, несправедливо по отношению к ним, особенно в начале интервью. Лично я буду задавать вопросы, где они должны объяснить, что значат важные понятия / как они используются, предоставляя примеры из практики. Я был бы гораздо больше заинтересован в кандидатах, которые могут сказать вам, что X book или Google Y search предоставят все необходимое для реализации чего-либо в вашей кодовой базе.


Спасибо, но позвольте мне добавить несколько вещей. Я был на том же факультете, что и они, и мы рассмотрели эти задачи в первом семестре, и пока они заканчиваются на последнем курсе, я все же думаю, что это хорошая оценка, чтобы увидеть, как они способны думать и решать проблемы ( давай, Фибоначчи им практически отдают). По поводу списка вопросов, да, я не очень хорошо объяснил здесь, но для них я взял более одной строки. И у нас действительно была открытая дискуссия о других вещах разработки программного обеспечения, их мотивации и т. Д.!
Миколас Симутис

4

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

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

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


4

Мне пришлось посмотреть, что вы имели в виду под "FizzBuzz"; Оказывается, я слышал об игре и ее правилах, но не с таким названием и не скоро. Так что не думайте, что вам не нужно давать ЛЮБУЮ информацию собеседникам.

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

  • Незначительные синтаксические проблемы: если вы ожидаете код на определенном языке, не рассчитывайте слишком сильно, если они пропускают точку с запятой или неправильно пишут одно использование некоторого идентификатора. Большинство IDE сразу же это поймут, и все время от времени делают опечатки. Почти в каждом интервью, в котором я должен был что-то кодировать, «псевдо-C-иш» был приемлемым, если алгоритм был должным образом передан интервьюеру и логика была разумной.

  • Незначительный логический недостаток: если алгоритм будет вести себя так, как ожидалось, в большинстве, но не во всех ожидаемых сценариях (скажем, при кодировании FizzBuzz, 15 приведет только к «Fizz» или «Buzz», но не к обоим, как предполагалось), тогда будьте «модульным тестером» и укажите, что в этом случае алгоритм потерпит неудачу, и посмотрите, смогут ли они это исправить. Возможно, они упустили из виду этот конкретный случай или не полностью поняли требования. И то, и другое снова вполне понятно, повседневные случаи в кодировании, которые должны быть легко преодолены путем простого предоставления дополнительной информации или обратной связи.

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

  • Не знаю с чего начать / жестко запрограммированный ответ на конкретные случаи / не могу понять их псевдокод: это красные флаги. Если вы попросите кого-нибудь написать алгоритм, который следует правилам FizzBuzz, объясните им эти правила, и вы получите пустой взгляд, интервью закончено. Точно так же, если они могут поставить ЧТО-ТО на доску, но она терпит неудачу на больших участках проблемного пространства, и вы должны держать их за руку, иллюстрируя сбой и как его исправить, я не буду переходить ко второму собеседованию ,


Используя практическое приложение, чтобы проверить интервьюера на постоянные вопросы, которые они получили в школе? Какая новая идея. +1
Эван Плейс

3

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

Тогда это будет его территория, поэтому он не может быть безумно нервным. Когда вы найдете подходящее место, спросите: «Эй, как ты это реализовал?». Если он сможет объяснить, это может дать вам некоторое представление о его мышлении.

Поставьте свои собственные тесты в повестку дня после этого.


2

Fizzbuzz является абсолютным требованием. Если они не могут закодировать Fizzbuzz, вы не должны нанимать их.

Обычно я спрашиваю кандидата на сессии кода перед собеседованием, где мы используем Документы Google для решения проблемы программирования (обычно это Fizzbuzz + проблема более высокого уровня, если они могут легко завершить Fizzbuzz).

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

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

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


1

Это зависит от калибра позиции, которую вы пытаетесь заполнить.

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

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


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

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

1

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

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

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


Может быть, да, но не решая эти вопросы, действительно чувствовал, что я бы просто выучил их с самых основ!
Миколас Симутис

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

1

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

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


0

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

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

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


0
  1. Постарайся быть милым с ними. По твоим вопросам видно, что ты не пытаешься быть милым даже здесь. Как вы думаете, все должны знать этот термин "fizzbuzz"? Или мы должны искать в сети, потому что вам было лень писать это самостоятельно? Наоборот, я думаю, все здесь знают, что такое правильный треугольник.
  2. Что такое «Список структур»? Я не знаю. Я знаю "структуру списка". Что это значит: список для целых чисел? Список целых чисел вы имеете ввиду? Я тоже не знаю, с чего начать. И, пожалуйста, не говорите, что вы не англичанин. Я тоже. И даже я никогда не был в англоязычной стране. Вы наверняка знаете, что целое число во множественном числе будет целым числом s . Если вы не пытаетесь быть понятными со своими равными здесь, я могу представить, как у вас там дела .
  3. Любой грамотный программист знает, что строка Фибоначчи - это книжный пример того, что нельзя делать рекурсией. Вы проверяете их на способность противостоять вам или на навыки кодирования? Сделайте свою работу и найдите лучший пример для проверки навыков использования рекурсии.
  4. «Способность работать под нагрузкой» для программиста означает, что он может работать по ночам, когда это необходимо. Но если вы хотите иметь хороших программистов, они подождут, что их начальник очень хороший, понимающий и полезный парень. Если нет, у вас никогда не будет хороших программистов. Они не альфа-крысы-самцы. Если они почувствуют какую-либо агрессию, они просто закроются в своих снарядах и ничего не сделают.

Итак, мой ответ: будь лучше подготовлен сам.

PS Вы уже менеджер, поэтому вам действительно следует выдерживать стресс.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.