Собеседование с AI
@notedatascienceНе так давно, я начал искать работу и встал вопрос о том, что бы как можно быстрее и эффективнее подготовиться к собеседованиям. Несмотря на то, что собеседования будут скорее всего сложнее и не такие однозначные, как мы себе представляем, но некоторые моменты вспомнить все таки стоит.
Формат собеседований
Насколько мы знаем собеседования могут состоять из разных форматов.
Например:
- интервью по теории и проектам —вам задают некоторые вопросы релевантные вакансии, которые оценивают ваши знания;
- алгоритмическое интервью — вам предстоит решить некоторую задачу на основе python, sql или других фреймворках. Тут интервьюер оценивает насколько качественно вы пишите код и он соответствует pep8, ход ваших мыслей – умеете ли вы декомпозировать задачу и оценивать сложности, оптимальность и скорость решения;
- интервью на знание математики, статистики, теории вероятности и тд.
Технология собеседования
Конечно, для того, что бы развиваться нужно понимать где пробелы в знаниях, нужна какая то метрика и способы ее повышения, а так же список вопросов и метод оценивания. Другими словами нужно разобраться с тем как мы будем понимать что мы вообще знаем и не знаем?

Метрика
Далеко ходить не надо, давайте субъективно (смещенно) оценивать с вами релевантность ответа.
Релевантность — такая метрика, которая оценивается от 0 до 1 и показывает степень актуальности, корректности ответа.
Однако мы должны быть не только метрикой едины, но ещё и выбрать список навыков, которые хотим оценивать. Ведь обычно на собеседованиях просто разделяют на 1-2 вопроса по каждой секции.
Пример разбияния по секциям, темам или подтемам:
- Python [Regular]
- Python [Backend]
- SQL
- ML [REC SYS]
- ML [Regular]
- ML [Data Validation]
- DL [NLP]
- DL [RL]
- A/B

Методы оценки компетенции
После определения компетенций будем оценивать насколько мы эксперты в вопросах. Для этого мы так же будем использовать небольшую валидацию, по каждой компетенции нужно спросить себя по 1-4 вопросу k раз [допустим 3-6] каждой категории. Можно оценивать себя релевантностью [от 0 до 1] или более грубо перейти к бинарной строгой велечине [0 или 1]. Тем самым мы замеряем наш bias и varience.
Используем ИИ
Согласитесь, есть некоторая рутина и субъективность в вопросах создания вопросов для собеседования, которые все равно требуют некоторую компетенцию и варьируются в взаимности от вакансии и сектора бизнеса. Однако мы можем найти некого альтернативного внешнего агента для оценки своих компетенций. В целом это может быть и ваш знакомый, и ментор и желательно менять их что бы минимизировать субъективность. И тут хорошим вариантом подходит тот же GPT, который буквально обучен чуть ли не на всем интернете и имеет огромный спектр понимания мира и скорее всего он не имеет субъективности такой субъективности так как обращает пользовательские ответы и контент в интернете. Более того, разнообразие мира поможет нам с лёгкостью генерировать достаточно большой список вопросов, а так же оценивать результаты наших ответов на вопросы.
Грубо говоря это такое решение в лоб, замена задачнику с более интеллектуальным оцениванием наших результатов.
Промт инженерим
Прежде всего советую вам использовать более новую модель, а именно GPT4. По сравнению с моделью версии 3.5 она выдаёт адекватные вопросы, иногда достаточно интересные. Однако стоит заметить они все ещё отличаются от вопросов для самих собеседованиях и могут быть несколько легче. Например для senior ML engineer актуально задавать вопросы по систем дизайну, а не "что такое машинное обучение". Тем не менее все зависит от того как вы составите промт.
Пример качественного промта:
Выступи в роли интервьюера по вакансии Middle ML-engineer в крупную IT компанию. Вот мой первый запрос: создай список сложных вопросов из FAANG и ответы к ним, что бы оценить знания кандидата
Выступи в роли интервьюера по вакансии Senior ML-engineer в крупную IT компанию. Вот мой первый запрос: создай список сложных олимпиадных вопросов, что бы оценить знания кандидата
Теперь, когда мы получаем список вопросов, запишите свои ответы в какой нибудь файл, возможно вам понадобиться какое-то время для проверки ответов, но этот процесс мы тоже можем автоматизировать. Давайте использовать вот такой промт, для проверки нашего ответа.
Выступи в роли оценивающей системы на ответы кандидата. Для оценки пользовательского ответа нужно дать результат по метрике релевантность от 0 до 1.
Вопрос: "Как вы определите, когда модель переобучена?"
Ответ кандидата: "Модель будет выдавать хорошие результаты на train и плохие на test, это так же можно проверить качественной валидацией данных и подбором гиперпараметров."
Формат ответа: "релеваность {0-1}, комментарий: {твой комментарий, в чем студент ошибся и/или был прав}"
Finally, ботаем
Отлично, мы можем составить матрицу компетенций и составить список тем, в которых мы блуждаем. Однако помните, что ботать и зазубривать теорию < применить на практике. И знаете что? Попросите ChatGPT на основе вашей матрицы составить вам пет-проект, который заполнит ваши пробелы в знаниях. Возможно это будут маленькие проектики, но все равно. Можно например реализовать деревья решений, какую то метрику, провести A/B тест и так далее.