Какие вопросы интервью подходят для экрана телефона c ++? - PullRequest
11 голосов
/ 14 декабря 2008

Любопытно узнать мысли людей. Я часто провожу собеседования, и в моей карьере было достаточно, чтобы поразмышлять над ними, и я заметил широкий круг вопросов. Я сделал этот C ++ специфичным, но стоит отметить, что у меня были люди, которые задавали мне вопросы об алгоритмической сложности по телефону, и я даже не имею в виду, какова сложность поиска по хэшу по сравнению с бинарным деревом, я имею в виду больше как аналитическое проблемы, такие как «представьте, что есть 4 шмеля, каждый гудит бла бла бла».

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

Я знаю, что есть еще одна тема, похожая на эту, но, откровенно говоря, кажется, что она полностью упустила момент, когда речь идет об экранах телефонов, а не об интервью лицом к лицу. Плюс это более специфично для C ++.

Ответы [ 4 ]

12 голосов
/ 14 декабря 2008

Я бы спросил об управлении ресурсами / памятью, потому что это важный вопрос в C ++, и он не требует конкретного кода. Просто набросайте простой гипотетический сценарий и спросите, как они обеспечили бы освобождение какого-либо жизненно важного ресурса даже перед лицом ошибок / исключений. Скажем, они разрабатывают сетевое приложение, как они гарантируют, что мы правильно закроем наши сокеты? Конечно, правильный ответ будет заключаться в том, чтобы обернуть его в объект RAII, но не спрашивайте их об этом напрямую (легко ввести «RAII» в Google, в то время как приведенный выше вопрос «как бы вы обеспечили правильное высвобождение ресурсов» на самом деле показывает вам, или нет, они знают соответствующие приемы. Если они ответят «обернуть все в try / catch», у них может возникнуть проблема. И это хорошо связано с вопросами о различиях между кучей и стеком.

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

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

Вы также можете спросить о некоторых общих областях неопределенного поведения (каковы значения a и b после выполнения a = b++ + b++??) Или выделить массив из 10 элементов и добавить 10 или 11 к указателю массива. и спросите, каков результат в каждом случае (+ = 10 допустимо, дает указатель на конец, + = 11 не определено). Или дайте им сценарий, в котором им нужно скопировать множество объектов, и спросите, как они это делают (простое циклическое копирование каждого элемента за раз, memcpy или std :: copy - очевидные ответы. Обратите внимание на предостережения с memcpy , что это не безопасно для не POD объектов)

Или спросите об их стиле кодирования в целом. Как они относятся к итераторам? Они предпочитают простые старые петли? Они знают, как использовать std :: for_each или std :: transform?

Изменить: Кажется, что предложение a = b++ + b++ (ответ - неопределенное поведение, кстати) вызвало множество комментариев. Возможно, люди слишком много читают об этом. Как сказал ОП, он предпочел бы задать конкретные (не абстрактные, а простые для объяснения / ответа / обсуждения по телефону) вопросы, которые позволили бы немного рассказать о навыках собеседника на С ++, и это просто (и да, возможно, придирчивый) тому пример. Причиной этого является то, что 1) оно имеет интуитивное значение, что неверно, и 2) вам необходимо иметь определенный уровень опыта работы с C ++, прежде чем вы поймете это. И конечно 3), это коротко и легко спросить по телефону. Никому не нужно записывать код. Нет, это не покажет, является ли кандидат «великим программистом», но, как я понял, вопрос тоже не был целью. Если кто-то понимает это неправильно, это ничего не значит вообще, но если они понимают это правильно, вы можете быть уверены, что они немного знают C ++. Но если вы прочитаете мой ответ еще раз, вы увидите, что это был всего лишь быстрый пример категории вопросов, которые, по моему мнению, должны быть представлены. C ++ полон неопределенного поведения, даже в коде, который выглядит совершенно безобидным и интуитивно понятным. Попросить кандидата распознать какой-то экземпляр этого может быть полезным, будь то приведенный выше пример "дважды изменить одну и ту же переменную в одном и том же выражении", или что-то другое.

5 голосов
/ 14 декабря 2008

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

Вы могли бы рассмотреть вопрос

  • Что такое vtable.
  • Как работают шаблоны
  • Какая разница между кучей и стеком. Глубина ответа на этот вопрос может быть весьма яркой!

Ответ на последний вопрос «вам действительно нужно взять у меня интервью» будет охватывать

  • распределение - пределы, варианты использования, режимы сбоев, эффективность, очистка ресурсов, деструкторы
  • стек колл-фреймов - что происходит при вызове функции, параметры, обратные следы
3 голосов
/ 08 апреля 2009

Как часть экрана телефона для позиций C ++, я спросил «Кто такой Бьярн Страуструп»?

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

1 голос
/ 14 декабря 2008
  • Шаблоны проектирования
  • Основы C / C ++
  • Виртуальные функции
  • Полиморфизм
  • Концепции из серии Скотта Майера
  • О шаблонах. (Не в определенном порядке)

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

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