Вы сказали, что вы проводите собеседование для стажировок в этом вопросе, так что с этой точки зрения, для разработчиков, работающих полный рабочий день, планка будет немного выше.
Когда вы берете интервью у стажеров, вы должны помнить, что они, возможно, не закончили учебу и что они также могли поступить в колледж без каких-либо предварительных знаний в области программирования и информатики. Таким образом, вам нужно масштабировать ожидания в соответствии с тем, что вы можете разумно ожидать от кого-то, и в какой-то степени престиж этой должности (т. Е. 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 для целых чисел и написать функцию для обратного.
Этот вопрос на самом деле может быть слишком открытым, так как он написан, поэтому он также может быть хорошим вопросом, чтобы увидеть, как кандидат ищет дополнительную информацию (например, должны ли быть удалены функции, преобразование в массивы и т. Д.), Но с учетом определенная постановка задачи («Реализовать базовую структуру списка для целых чисел, которая позволяет добавлять числа в конец или по произвольному индексу, удалять и включать функцию, возвращающую обратную копию списка»), ученики должны иметь возможность решать проблема в том, что списки представляют собой общую структуру, представленную либо в раннем курсе структур данных, либо в раннем базовом курсе информатики.
Что касается работы с кандидатами, если они испытывают трудности, убедитесь, что они расслаблены, и дайте им немного снисходительности, поскольку они могут просто испытывать беспокойство по поводу производительности, поскольку это может быть их первое настоящее собеседование. Могут потребоваться советы по решению проблем, особенно в случае третьей и четвертой проблем, а не первых двух.
Кроме того, структурируйте весь процесс собеседования таким образом, чтобы в нем были встроены точки «изящного выхода». Например, у вас может быть следующая повестка дня:
- Встречи и приветствия, процедуры собеседования.
- Короткое интервью с штатным программистом (ами), основные вопросы об истории.
- Презентация викторины по программированию.
- Перемена
- Возвращение из перерыва, увольнение некоторых кандидатов, которые не подходят.
- Расширенное интервью с штатным программистом (ами).
- Интервью с человеческими ресурсами (при необходимости).
- Заворачивать.
Этот поток интервью имеет тенденцию работать хорошо, если вы хотите иметь возможность отстранить кандидатов раньше, поскольку они знают с самого начала, что они могут быть уволены после перерыва. Короткое интервью перед викториной также означает, что они не просто появляются, чтобы сдать тест, что дает им некоторую практику интервью, а также может позволить им решить, что они не подходят. Если есть другие программисты, наблюдающие за тестом или помогающие кандидату во время него, то это также дает им возможность пройти / не пройти кандидата во время короткого перерыва.
Всегда, когда вы проходите собеседование для прохождения практики, а кандидаты являются студентами, вы должны помнить, что они все еще являются студентами и могут не практиковаться в проведении собеседований (что ведет к возможному беспокойству по поводу успеваемости), а также, возможно, не достигли точки в своих исследованиях, чтобы даже быть в состоянии ответить на вопросы, что означает, что было бы хорошей идеей отправить их по пути с копией «идеального (ых) решения (й)» для поставленных задач.