Компания, с которой я работаю, попросила меня проверить кандидатские телефонные звонки, чтобы убедиться, что они не смущаются при отправке кого-либо потенциальному клиенту.
Оказывается, довольно много людей были назначены на роль разработчика C ++. Я не трачу много времени на C ++, но я сделал несколько тривиальных и нетривиальных проектов на языке. Я подумал, что «Объяснить идиому RAII» было бы хорошим вопросом софтбола, на который большинство серьезных разработчиков C ++ могли бы ответить в полусне, и позволил бы мне перейти к более интересным вопросам об опыте. Но оказывается, что люди, которые имеют опыт C ++ более 10 лет, не распознают этот термин, даже если я расширю акроним до «Приобретение ресурсов - это инициализация». Один кандидат зашел так далеко, что сказал, что, по его мнению, не всегда практично применять эту технику при разработке Windows, что, на мой взгляд, было странным чувством, но я видел несколько примеров, которые, возможно, подтверждают эту точку зрения.).
Даже пара разработчиков C ++, которых я знаю достаточно хорошо, чтобы судить об их компетентности, сказали, что они не распознали этот термин, но, прочитав краткое изложение техники, сказали: «О, да, я не знал, что у него есть имя. Я просто думать о тех вещах, как о чем-то, что вам просто нужно сделать ". Я помню термин из второго издания книги Страуструпа, хотя в то время не было полного воздействия.
Итак, "Можете ли вы объяснить мне идиому RAII?" честный вопрос отбора? Разумно ли ожидать, что все компетентные разработчики C ++ поймут это? Является ли термин более эзотерическим, чем я мог бы подумать? Предполагая, что кандидат не знает этого термина, есть ли дополнительные вопросы, которые могли бы помочь мне выяснить, насколько они усвоили методы, которые заставляют RAII работать? Есть ли лучшие альтернативные вопросы, которые дают кандидату некоторую свободу ответов и помогают ему продемонстрировать свое понимание разработки на C ++?
Редактирование, чтобы добавить : чтобы уточнить, я не из тех интервьюеров, которые дисквалифицируют людей, потому что они не знают модных слов и сокращений. Тем не менее, я думаю, что разумно ожидать, что опытный программист на C ++ усвоил передовой опыт управления ресурсами. Я также думаю, что важно убедиться, что кандидат понимает некоторые «основы» технологии, в которой он претендует, прежде чем перейти к более интересным вопросам о дизайне, решении проблем и т. Д. Я думаю, что то, что я ищу, - это хороший способ задавать открытый вопрос, подходящий для использования при просмотре коротких телефонных звонков, который я могу использовать, чтобы оценить базовое понимание кандидатом хороших методов управления ресурсами в C ++, прежде чем задавать «сложные» вопросы.
Ответы:
Похоже, вы обнаружили, что разработчики C ++, которых вы знаете по опыту, компетентны, незнакомы с этим сокращением или даже с полным выражением. Это само по себе может указывать на то, что этот вопрос не подходит для проверки во время телефонного звонка.
С другой стороны, вы можете добраться до той же точки более окольным путем, изобразив сценарий. Что-то вроде: «Вы реализуете класс Log, который будет записывать информацию журнала в файл. Очевидно, вам потребуется переменная-член, которая является дескриптором файла (std :: FILE *). Где вы размещаете и освобождаете этот файл? ручка?" Если кандидат начинает говорить о создании методов open () и close (), а не о выделении дескриптора файла в конструкторе и об освобождении дескриптора в деструкторе, вы можете задать вопрос о том, как поведет себя его класс, если вызывающий код вызывает исключения и т. д.
источник
Я не думаю, что это практический вопрос, как это предлагается. Я думаю, вы обнаружите, что многие разработчики попадут в лагерь «о, да, я не знал, что у этого есть имя». Я хотел бы предложить вам проверить кандидатов на концепцию, а не название концепции. Дайте им пример кода и спросите, почему он неполный, или попросите их продемонстрировать, что они знают эту концепцию.
источник
Я думаю, что это правильный вопрос. Хотя я не знаю, насколько популярен термин RAII (в моей команде мы все время используем термин RAII), но концепция обработки ресурсов важна, особенно если вы хотите также исключительную безопасность и многопоточную безопасность ,
источник
Ну, я знаю, что когда я хочу узнать, компетентен ли кто-то, первое, что я делаю, это проверяю его знания аббревиатур. Как только это будет установлено, я уверен, что они знают названия других технологий, которые, на мой взгляд, звучат круто. Если они все еще там после этого, тогда я попрошу у них список их любимых цветов.
Я терпеть не могу такого рода вещи. Я имею в виду, на моем конце интервью, это сирены и предупреждающие звонки. Я не хочу работать в месте, где действительно важно знать причудливую мнемонику, которую мой начальник считает «фундаментальной». Я не могу беспокоиться о том, чтобы выучить имена людей, с которыми я имел дело в течение многих лет, поэтому я уверен, что, черт возьми, не теряю мозговое пространство с милыми сокращениями, которые описывают лучшие практики.
Посмотри на мой код. Спроси меня, как я буду делать вещи. Я буду рисовать дерьмо на доске, пока коровы не вернутся домой. Я напишу вам приложение. Не задавай мне вопросов по пустякам. Викторины всегда ударить или пропустить, и это никогда не является фундаментальным.
источник
Если ваша цель - быстро отсеять некомпетентных, попробуйте что-то вроде этого:
Тест FizzBuzz
Затем вы можете оставить концепции и практики C ++ для тех, кто в лучшем положении для оценки опыта C ++.
источник
Это правильный вопрос, но не для проверки. Я использовал это как письменный вопрос, чтобы обсудить его на собеседовании. Вы можете получить представление о шаблонах мышления, предварительно уведомив об этом. В качестве проверочного вопроса это просто неприятная ловушка.
источник