Как и обещал, сегодня расскажу про отбор на стажировку. Сегодня расскажу процесс с другой стороны.
Начало процесса
Нужно было нанять стажера, позиция согласована и начинается набор. Процесс начинается с общения с HR для начала скрининга. Основная вводная для скрининга - студент 3-5 курс, технический вуз. По результатам скрининга (HR + мой просмотр резюме) кандидатов на собеседование было аж 10. Т.е стартовая воронка 10к1.
Далее начинается процесс приглашения на собеседование. На приглашение откликнулись не все, всего лишь 7 человек.
Собеседование
Тут в целом полная свобода выбора формата со стороны собеседующего. После продолжительного размышления и оценки тайминга, решил сделать следующий формат: 1 собеседование (напоминаю, мы нанимаем стажера, а не сеньора) на 1 час. Общение, теоретические вопросы и пару простых задач на питон.
Особенно отмечу, что не хотелось на стажировку в подразделении, занимающимися классическим ML спрашивать DL, задачи по питону тоже хотелось менее "сферическими в вакууме" сделать. Их было 2, одна на алгоритмы и структуры (кто давно меня читает, знает, что надо бояться не тех, кто решал 10000 задач 1 раз, а кто решал 10000 раз задачи на анаграммы), вторая на фильтрацию pandas DataFrame (ну тут более прикладного и не придумаешь).
Структура следующая (с таймингами):
▪️(~2 минуты) знакомство, переход на ты, рассказ формата собеседования
▪️(~5 минут) рассказ о подразделении, ожиданиях от кандидата на стажировку и предварительный план, ответ на орг. вопросы
▪️(~5 минут) вопрос о бекграунде (учеба/предыдущий опыт), мотивация (Что ты хочешь получить от стажировки? почему хочешь именно к нам?)
▪️(~20 минут) Вопросы по классическому ML, включающие в себя вопросы по моделям (линейные модели, бустинг, деревья и случайный лес), метрикам (метрики классификации). В зависимости от ответов и тайминга старался копнуть глубже.
▪️(~30 минут) 2 задачи на питон. Задача на анаграммы (было 2 модификации, по результатам первой части давалась одна или другая). Задача на фильтрацию была разделена на 2 части - создать бинарный признак (общая для всех), второй вопрос был уникальным для каждого. В процессе часто спрашивал про типы данных, иногда про оптимальность алгоритма. Тут важный момент, что для поддержания тайминга иногда задавал наводящие вопросы, на результирующую оценку это не влияло. Иногда давал прямо сильные подсказки, это уже влияло на результат.
Примеры задач:
Напишите функцию is_anagram, которая возвращает наличие анаграмм ('abaa', 'aaab' и 'baaa' - анаграммы) в списке из строк str. Если в списке один или вовсе нет элементов - False.
Пример:
>>>input
['a','b', 'c']
>>>output
False
>>>input
['ab','ba', 'ac', 'db']
>>> True
def is_anagram(input: List) -> bool:
pass
return False Есть Pandas Dataframe df с колонками [age {int}, gender {M/F}, name{str}, height{float}]
Задача:
1. Создать признак, is_tall, который показывает высоких людей. Высокие люди для мужчин выше 185, высокие женщины выше 170 см.
2. Вывести самого высокого по росту из низких мужчин.Результаты
Оценка состояла из 3 основных факторов:
▪️Мотивация и интерес к стажировке. Тут я занимаю позицию, что нужно обучать тех, кто в этом заинтересован, чем тех, кто все умеет, но надо постоянно заставлять. Поэтому будьте уж добры, если действительно хотите куда-то попасть в конкретное место, подготовьте ответ на вопрос, почему вы хотите именно туда-то.
▪️Результат по теории.
▪️Результат по программированию.
Обратная связь
По результам собеседований составил таблицу с подробной ОС, пометки были следующие - отказ/приглашение(номер приоритета), передал информацию HR.
Тут важный момент, что я подготовил ОС всем.
Больше всего из личного опыта бесят собеседования, где либо не говорят, что не так и что можно улучшить, а иногда и вовсе сливают со странными комментариями. Хочется данную порочную практику закончить, поэтому я всегда даю ОС.
Финал
На стажировку приглашен 1 кандидат, еще 2 интересных кандидата были приглашены на стажировку, как появится место (~август)
#трудовые_будни #карьера #ds_зарядка
