Как во время собеседования определить, выполнима ли задача по программированию?

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

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

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

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

Вы не получите от этого большой пользы, вы расскажете кому-то, как решить проблему, которую вы им дали, и попросите их заполнить пробелы. Он не покажет вам, как этот человек думает/решает проблемы/придумывает решения
@Joe Ваш комментарий звучит так, как будто задача слишком проста.
Я бы не стал закрывать. Это вопрос об эффективных способах оценки способности к развитию с помощью практического упражнения.
@AndrewBerry Я отозвал свой закрытый голос и отредактировал вопрос, чтобы сделать его более общим и доступным для ответа здесь.
С доступом к сети и достаточной готовностью сделать это, кажется, все в порядке. Вопрос в том, для какого уровня людей вы это даете? люди с несколькими годами или прямо из универа?
Кандидаты, которые потерпели неудачу, задают вопросы? Они сидят у экрана, а потом просто сдаются через какое-то время?
Я инженер-программист с полугодовым опытом и никогда не касался ASP.NET. и я нахожу это задание более легким, чем задачи, которые я должен был выполнить, чтобы попасть к моему нынешнему работодателю. задачи не кажутся такими уж сложными. Однако у меня было бы больше проблем с шагами 1–4 просто потому, что я не очень разбираюсь в ASP. Но, исходя из моих знаний ООП, это не должно быть невозможно. Вы пытаетесь получить сотрудников начального уровня? или вы пытаетесь заполучить людей с хоть каким-то опытом? вы ищете конкретный .NET? или люди со знанием другого языка тоже в порядке?
Некоторые люди просто плохо справляются с тестами. Я думаю, вы, возможно, захотите отказаться от этого подхода и пойти на более техническое собеседование. ( ИМХО )
Я чувствую, что с новым редактированием исходный вопрос был слишком сильно изменен. Однако, чтобы исходный вопрос остался в силе, я хотел бы знать, кого вы пытаетесь нанять. На каком уровне они должны быть? Начальный уровень с образованием в области ИТ? Или исследование, специально посвященное .NET? или кто с опытом?
@Snowlockk Оба человека с несколькими годами, а также прямо из университета.
@MisterPositive некоторые люди плохо справляются с собеседованиями, поэтому мы должны исключить и это из процесса ... Не сказать, что тесты верны, но основание для удаления неверно.
@HorusKol Я думаю, что ваше заявление смешно. При приеме на работу вы пытаетесь понять, подойдет ли кандидат вашей компании. По моему опыту, тестирование для разработчиков в лучшем случае дает неоднозначные результаты. Большую часть информации можно почерпнуть из хорошо продуманного технического интервью. Кроме того, вы можете получить только определенное представление о кандидате, независимо от того, что вы делаете. Иногда вам приходится бросать кости с кандидатом, и если он не может выполнить задание, отпустите его.
@MisterPositive забавно, потому что я хотел сказать то же самое о вашем заявлении. Тесты не плохи — плохи только плохо разработанные тесты.
Вероятно, есть несколько вопросов по разработке, которые вы могли бы найти по различным стекам и уровням владения языком. Вы ежедневно занимаетесь кодированием, независимо от того, что кто-то должен уметь делать, вам нужно найти тех, кто может это сделать или, по крайней мере, продемонстрировать некоторые способности, чтобы научиться этому.
@DavidK Это вопрос, относящийся к отрасли программного обеспечения, и ваше редактирование сделало вопрос более общим, возможно, слишком широким и менее подходящим для ответа, IMO. Как задать хороший вопрос? говорит «Расскажите нам, что вы нашли», что предполагает, что вопрос должен включать то, что ОП уже пробовал и что не работает.
@ChrisW Основная часть, которую я удалил, была самим тестом. Оставление в тесте меняет этот вопрос на вопрос о программировании , а не на рабочем месте . Это также заставило бы его спрашивать о конкретной должности в конкретной компании, что также не по теме .
@DavidK С другой стороны, удаление ссылки на тест теперь в основном делает недействительным ответ nvoigt (теперь это не имеет смысла без контекста самого теста).
Ответ @Brandin nvoigt был опубликован через 20 минут после того , как я внес изменения. Кроме того, ранее существовавшие ответы не влияют на то, следует ли отредактировать вопрос, чтобы он соответствовал теме, или нет. В нашем справочном центре особо указано , что вам не следует пытаться отвечать на вопросы, не относящиеся к рабочему месту.
@DavidK Другие ответы также конкретно относятся к некоторым деталям теста. Независимо от того, относится ли включение конкретных деталей к теме или нет, этот набор ответов теперь относится к вещам, которых не существует. Так что это будет бесполезно для будущих посетителей.
@ Александр, нет, я говорю, что ты задаешь неправильный вопрос
@Brandin Я создал мета-обсуждение этого вопроса, чтобы мы могли перестать обсуждать его в комментариях.
Это также было бы хорошим вопросом для чата , так как это скорее обсуждение, чем реальный вопрос.
Только что наткнувшись на этот вопрос и не проявляя интереса к обсуждению, я просто хочу указать, что редактирование чужого вопроса для удаления деталей, которые были там во время большей части комментариев / ответов, эффективно нарушает процесс для новых посетителей. Я понятия не имею, о чем большинство ответов или комментариев, и мне кажется, что вопрос слишком расплывчатый, потому что он не дает деталей, которые я ищу.
Редактирование @DarrenRinger вопросов, чтобы сделать их более подходящими, является основной частью процесса Stack Exchange. Иногда это шокирует новых пользователей, но помните, что это не похоже на другие сайты. рабочее место.stackexchange.com/help/editing
@DoritoStyle Нет, я хорошо знаком с этим сайтом. Редактирование вопроса таким образом, что на него больше нельзя ответить и он заслуживает тщательного голосования, вероятно, не одобряется.
Однако есть 2 вещи: этот вопрос был отредактирован до того, как были опубликованы какие-либо ответы, и он заслуживал тщательного голосования до редактирования (а не после).
Поскольку 100% ваших кандидатов терпят неудачу, ваш первоначальный отбор плохой. Также рекомендуется иметь краткий (может быть 10-минутный) технический телефонный экран и / или отправить им по электронной почте очень простую задачу по программированию, и они ответят по электронной почте в течение часа. Это должно отсеять людей и сэкономить массу вашего времени, прежде чем приглашать кандидатов на собеседование.

Ответы (7)

Часть кода теста заняла у меня 5 минут, это заняло бы, может быть, 10-15, если бы я набрал все бессмысленные свойства и назначения и реализовал метод (который никогда не вызывается). Удвойте это за потенциально дерьмовую обстановку и нервозность на собеседовании, и время будет в порядке. SQL должен быть таким же простым.

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

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

Тот факт, что люди не проходят ваш тест, показывает, что ваш процесс вплоть до собеседования несовершенен.

Вы должны спросить себя, как получилось, что вы берете интервью у людей, которые не проходят такой простой тест. Они солгали в своем резюме? Это распространено в вашем регионе? Есть ли способ узнать раньше? Может быть, вы найдете несколько простых вопросов, которые можно задать по телефону? Или вы пригласили не тех людей? Они на самом деле сказали, что знают C#, или вы так предположили? Боюсь, здесь я не могу вам помочь, потому что там, где я живу, люди обычно не лгут и не преувеличивают таким образом в своих резюме. Если они говорят, что могут кодировать на C#, они могут.

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


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

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

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

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

Вы слышали о псевдокоде ?

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

пример :

// Place a for loop here, For as long as i < [var].Length then do this other thing. 

Самое главное, что вы проникаете в мысли инженера-программиста. Знайте, как он собирается кодировать. После этого вам нужно спросить себя, насколько легко будет вывести его на уровень, на котором он сможет работать над более крупными проектами. Обычно это занимает от 1 до 2 месяцев в любом случае.

Кроме того, я бы НАСТОЯТЕЛЬНО рекомендовал разрешить ему использовать Интернет для ссылок на код. Кодирование требует ОГРОМНОГО количества поисковых кодов, чтобы выучить их.

Как только он закончит, и вы беспокоитесь, что он просто скопировал код, который не понимает, просто спросите его о самом коде. Почему он использовал эту переменную здесь? Почему он назвал это именно так, вместо того, чтобы полностью расшифровать? Зачем использовать цикл for вместо while? и т.д. и т.п. Это могут быть глупые вопросы, но если он врет вам, он не сможет ответить ни на один из них.

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

Что касается задач SQL, я чувствую, что вы слишком легко с ними справились. Я бы показал им небольшую модель базы данных SQL и сказал, что вы хотите добавить определенный элемент, но не хотите редактировать ни одну из текущих таблиц. Спросите его, что он предложит для реализации изменений. А также почему. в основном выговорите информацию из него. Я бы все же спросил, как сделать запрос на обновление/вставку/создание. Он может найти эти вещи за 2 секунды, но если он не может, это простой способ увидеть, не врет ли он вам.

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

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

«Кодирование требует ОГРОМНОГО количества поисковых кодов, чтобы их выучить». +1 Как инженеру-программисту, мне платят за то, чтобы я структурировал что-то, а затем искал, как это реализовать, со случайными перерывами в возможности просто развернуть это, потому что в этом месяце мы работаем на Python.
Это был бы отличный ответ для программистов, но не лучший ответ на рабочем месте.
«Я собираюсь ответить на этот вопрос, основываясь на информации до редактирования: «Зачем вам это делать? То, что взносы не делают этот вопрос более полезным для будущих посещений, на самом деле делает прямо противоположное .
@DoritoStyle вопрос не редактировал автор. существенно изменив исходный вопрос. Я хотел ответить на вопрос, который он первоначально задал, плюс его комментарии. а не то, что кто-то другой сделал из этого.
@Migz, который не считается важным на Stack Exchange; ответ был изменен, потому что он плохо подходил. К сожалению, этим действием вы нарушаете основную политику сайта. рабочее место.stackexchange.com/help/editing
@DoritoStyle любой вопрос, который меняет исходный вопрос, не является хорошим редактированием. На самом деле, единственное, что сделала правка, это УДАЛИЛА информацию, а не добавила ничего. а затем изменил основной вопрос. делая это совершенно другим вопросом в процессе. Я здесь, чтобы помочь людям, которые задают вопросы. Не соблюдать правила, установленные сообществом. В конце концов, мы здесь, чтобы помогать людям. Вот почему я поместил заявление об отказе от ответственности в начале своего сообщения. Я сделал это правильно, так как это могло предоставить полезную информацию о том, что он искал. В конце концов, это просто мнение.
@Migz Я абсолютно не согласен. Конечно, мы здесь, чтобы помочь, но мы не хотим решать конкретные проблемы для одного человека, нам нужны вопросы, которые будут полезны будущим посетителям с похожими общими проблемами. Если вы не можете соблюдать эти правила, то вам, вероятно, будет плохо на этом сайте, поскольку это его абсолютная основная цель. work.stackexchange.com/help/how-to-answer "Не на все вопросы можно или нужно ответить здесь. Избавьте себя от разочарования и не пытайтесь отвечать на вопросы, которые... ...не относятся к рабочему месту, как это определено в центр помощи."
@Dorito Я полностью согласен с мнением Мигза. Хотя я опираюсь на свой опыт работы с Mathematica.se и понимаю, что каждое подсообщество в сети SE имеет свои особенности, последнее, что меня волнует, — это общая модель SE (в конце концов, текст в справке center в основном не продукт этого конкретного сообщества, а движок SE в целом). Мне нравится SE, потому что я сталкиваюсь с интересными конкретными проблемами, которые нужно решить. Меня не волнует, если это не служит той цели, которую имели в виду создатели SE, и я не думаю, что сообщество обязано слепо следовать их правилам.
Ну, лично я не думаю, что такой подход полезен в долгосрочной перспективе. Ты как бы тратишь время всех из-за своих собственных желаний.
@Dorito для протокола, однако, я не думаю, что редактирование слишком сильно повредит (или улучшит) вопрос и ответы здесь. OTOH, когда вопрос значительно обобщен, людям может быть трудно применить его к своей конкретной ситуации. Неплохо иметь несколько полудублеров, которые лишь наполовину обобщены, чтобы каждый мог найти что-то для своей конкретной ситуации.
@Дорито, это очень идеализированная картина, к которой ты стремишься. Еще одна вещь, которая поддерживается сетью se, заключается в том, что отвечающие являются наиболее важными членами сообщества. Если они не получат проблемы, которые их интересуют, сайт быстро потеряет свою актуальность.
Это стало довольно не по теме, давайте продолжим в чате, если хотите. Или просто соглашайтесь не соглашаться (с рекомендациями на моей стороне;)

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

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

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

Наконец, я бы сказал, что «слишком сложно» на самом деле зависит от типа человека, которого вы хотите нанять. Не тупите свои вопросы, потому что вам не нравится, что люди не проходят мимо. Вместо этого устанавливайте разумную планку вопросов, чтобы отсеивать людей, которые не добьются успеха на этой должности. Я уверен, что на должности в Google, на которой соискатель будет разрабатывать расширенные поисковые алгоритмы, не будет простых вопросов вроде «В чем разница между запросами POST и GET?» Вместо этого я уверен, что им задают сложные вопросы по алгоритмам и машинному обучению. Идеально иметь вопросы, которые слишком сложны для людей, которые не собираются добиваться успеха, но демонстрируют понимание принципов, которые им потребуются для достижения успеха.

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

Чего вы хотите достичь этой задачей разработки?

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

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

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

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

Например:

У меня есть массив объектов ac#, и я выполняю цикл foreach.

Затем вы ждете, пока кандидат скажет: «О, преобразуйте это в список объектов, и тогда вы сможете использовать linq для поиска по списку.

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

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

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

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

Но ваш пример не имеет особого смысла. Зачем мне MyDate, когда я могу получить всю эту информацию из объекта DateTime. Вы пытаетесь выяснить, насколько они хороши как разработчик. Вместо того, чтобы сидеть с ними за компьютером и выполнять упражнение «Раскрась по номерам», заставьте их говорить о программировании. Справедливости ради, ваша задача SQL намного лучше. Может просто нужно переписать задачу под более реальный жизненный сценарий?
Теперь я мог бы объяснить, что .NET WebAPI сериализует DateTime таким образом, который интерфейс не понимает, и что класс MyDate может быть форматом, который клиент хочет получить. В более широком смысле мы почти всегда копируем некоторые данные из одного объекта в другой, причем источником является, например, DataReader, DirectoryEntry или другая внутренняя структура, а целью является сериализуемый класс JSON-/XML.
И сразу же, говоря о коде, а не простом примере, мы гораздо более подробно говорим о знании .net, а не о том, как вы смотрите, как я создаю класс в VS. Обсуждение кода/подхода обеспечивает больше доказательств знаний, чем привязка базового примера. Из этого ответа я мог бы сказать, что вам не нужен класс MyDate для форматирования даты и времени в определенном строковом формате, поскольку мы можем сделать это с помощью средства форматирования строк. Такого рода дискуссии показывают понимание языка. Выполнение поставленной перед вами задачи для меня не показало, что они умеют "программировать"
«О, преобразуйте это в список объектов, а затем вы сможете использовать linq для поиска по списку». Я не уверен, что нанял бы кандидата, который хочет провести рефакторинг кода, который работает нормально, основываясь на поверхностном понимании другой техники. LinQ работает с IEnumerable, поэтому он отлично работает с массивом. Но вы никогда не говорили , что ваш foreachцикл доступен только для чтения, что, безусловно, является требованием для чего-то под названием Language-Integrated Query .
Я думаю, что ваш подход хорош, но это «Шаг 2». Альтернативы «Шагу 1» нет: выяснить, не врет ли кандидат сквозь зубы. Конечно, кто-то, кто знает, как преобразовать цикл foreach в linq, должен знать, как написать простой класс.
@nviogt ха-ха, мой плохой. Но основная суть все же есть. Если бы я ответил так, вы могли бы поднять это как красный флаг. Это более проницательно, чем то, что я печатаю пару десятков строк кода, который не дает многого.
Но смотреть, как кто-то печатает курс, — бессмысленное занятие, не так ли? Это просто пустая трата времени. Введите класс, затем напишите пару строк кода на основе точных инструкций. На мой взгляд, это мало что дает, но я согласен, я не уверен, как ОП получает людей, которые не прошли технический тест.
Я согласен с тем, что части теста повторяются и поэтому бессмысленны. Но кандидаты не должны его провалить. Пока люди терпят неудачу, у него есть место. Хотя грустно, что это так.
Если людям не удается создать класс, то им нужно проверить, как эти кандидаты проходят собеседования? Может сначала интервью по телефону?
@AndrewBerry Дело в том, что HR присылает мне резюме только тогда, когда собеседование назначено - и из резюме все они выглядят многообещающе. И потом, они присылают мне кандидата после первого собеседования (полчаса или около того). Я поговорю с HR о ваших опасениях. Это то, что я намеревался сделать, когда получил мнение третьей стороны о том, слишком ли сложен тест.
@AndrewBerry: Что касается «разговоров о деталях знаний .net»: они работали с .NET, но, возможно, не с WebAPI и автоматической сериализацией, а часть Serializer действительно привередлива. Итак, прежде чем я расскажу им о сериализаторах, я хочу убедиться, что они знают, как читать UML-диаграмму, как определять класс, как писать конструктор. И тут они уже терпят неудачу.
@ Александр Похоже, вам нужно вмешаться в HR. Имеют ли они право судить, проходит ли кто-то собеседование? Я думаю, раз уж этот вопрос здесь, ответ - нет. Вам нужно отфильтровать резюме и посмотреть, сможете ли вы реализовать этап предварительного собеседования.

У меня два комментария:

1) DateTime SUCK для работы, если вы хотите увидеть, как люди могут обрабатывать преобразование из одного типа данных в другой или как они будут справляться с созданием реализации класса, тогда я бы предложил найти другой пример для работы. Кроме того, то, что вы описываете, может быть скорее случаем чего-то редко выполняемого, чем сложного. В подобных ситуациях порядочный разработчик сможет решить проблему за считанные минуты с помощью Google.

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

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

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


Бонус: не забывайте, что некоторые люди ДЕЙСТВИТЕЛЬНО борются на собеседовании. Я знал людей, которым было очень комфортно брать интервью и отвечать на поведенческие вопросы, но они полностью замирали/не обращали внимания на технические вопросы, потому что не ожидали этого или были готовы к чему-то другому.

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

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

Не тестируй - тестируй...

Как определить, слишком ли сложные задания или нам просто не повезло с кандидатами?

  1. Сколько длится ваше интервью? (Для обсуждения предположим, что это два часа.)
  2. Сколько задач по программированию вы собираетесь опросить интервьюируемого? (Допустим, это четыре задачи).
  3. Учитывая четыре задания на двухчасовое собеседование, сможете ли вы выполнить каждое задание за 25 минут? Или, если некоторые из них сложнее других, сможете ли вы пройти их все за 100 минут? [Предположим, что вы видите эти вопросы впервые.] Если ответ «Нет», то интервью слишком сложное. Если ответ «Да», то интервью не слишком сложное.
  4. В качестве альтернативы вы можете попросить бывшего коллегу или приятеля по программированию сыграть роль потенциального собеседника и посмотреть, смогут ли они пройти ваше техническое собеседование в разумные сроки.

Одна статистика такова: сколько терпит неудачу? Если у вас было более 10 отказов, каков шанс, что вы действительно получили 10 плохих кандидатов?

Они получают ответы неправильно или просто не заканчивают? В незнакомой среде 1 час не очень долго. Я только ожидал, что вы могли бы попросить около 4 основных задач. Через час вы будете тестировать только базовую механику.

Может вопросы непонятные а может вопросов слишком много/сложных для 1 часа.

Не могли бы вы опубликовать некоторые из ваших вопросов?

Это довольно простые задачи. Я предполагаю, что вы даете им доступ к документации. Я бы не запомнил синтаксис для всех компонентов даты и времени. Я бы хотел, чтобы у каждого был босс, даже если он сам себе босс. Мне кажется, это разумный тест. Представьте, что вы попросили написать бинарный поиск
У них есть VS с IntelliSense, этого достаточно?
Было 4 кандидата, кстати.
Если вы ожидаете, что они получат часовой пояс от культуры, это мелочно. Затем со временем UTC вы нарушаете это. Я пытаюсь подвергнуть сомнению ваше понимание DateTime в .NET. Хорошо, тест, но я думаю, что вы сделаете его более простым и по-прежнему будете тестировать основы. Я бы спросил себя, зачем мне нужен объект DateTime.
@JanDoggen «Для одной статистики» - это ответ.
Я неправильно понял языковую конструкцию