Несколько месяцев назад я поймал себя на мысли: я знаю свою профессию, читаю статьи, работаю в команде — но сто́ит заговорить о собеседованиях, появляется напряжение. Да, я не один такой: стресс, туманные ожидания от интервьюеров, неочевидные слабые места в знаниях. Решил попробовать подойти к подготовке иначе — с помощью AI. Ну все сейчас хотят ко всяким GPT по разным нуждам.

Проблема: классическая подготовка не работает

Когда мы читаем «100 вопросов для Python-разработчика» или готовимся по leetcode, это даёт теорию и "набивание" руки. Но реальное интервью — это другое. Там не угадаешь, что спросят, и не получишь сразу фидбек на свой ответ. Хотя все же самое сложное - реально фиг знает, че там могут спросить. Готовишься к алгоритмам, попросят бизнес-логику. Хотя иногда бывает и не трудные собесы. У меня однажды спросили, знаю ли я SQL, я сказал, что нет, но быстро выучу, в итоге я уже 4 года работаю на этом месте. И да, SQL таки я изучил, потому что он присутствует в 70% моих задач.

В общем, я понял, чего мне не хватает по теме собеседований:

  • Условного «симулятора интервью»

  • Обратной связи, где я ошибся

  • Индивидуального плана, какие темы подтянуть

А ещё мне хотелось видеть, как выгляжу со стороны, пусть и со стороны какого-то цифрового интеллекта. И тут в голову пришла идея — пусть AI задаёт мне вопросы и анализирует мои ответы.

Первая попытка: prompt + OpenAI

Я начал с простого: набросал промпт в стиле:

Представь, что ты технический интервьюер. Задай мне вопрос по Python уровня middle. Подожди моего ответа, оцени его и задай следующий.

Результат превзошёл ожидания. Модель не просто генерировала вопросы, но и давала развёрнутую обратную связь. Я начал добавлять:

  • Задание уровня: Junior / Middle / Senior

  • Подбор вопросов по описанию вакансии (из LinkedIn, HeadHunter и т.п.)

  • Автоанализ ответов и генерация списка тем, которые «просели»

Минимум Django, максимум практики

Дальше я решил обернуть это в простой Django-проект — без лишнего интерфейса, просто для себя.

Минимальный стек: Django + HTMX для реактивного UI без сложных JS

Чтобы не захламлять проект, я использовал простой набор Django-моделей. В основе — интервью-сессия и связанные с ней вопросы и ответы.

class JobInterview(models.Model):
  user = models.ForeignKey(User, on_delete=models.CASCADE)
  position = models.CharField(max_length=255)
  description = models.TextField() # вакансия или описание требований
  created_at = models.DateTimeField(auto_now_add=True)

Каждая сессия содержит вопросы и ответы пользователя:

class InterviewQuestion(models.Model):
  interview = models.ForeignKey(JobInterview, on_delete=models.CASCADE, related_name='questions')
  question = models.TextField()
  user_answer = models.TextField(blank=True)
  ai_feedback = models.TextField(blank=True) # сюда AI пишет разбор
  created_at = models.DateTimeField(auto_now_add=True)

Немного о витринах

1. Старт интервью

Простая форма: пользователь указывает вакансию и желаемое количество вопросов.

class InterviewCreateView(FormView):
    template_name = 'interview/start.html'
    form_class = InterviewStartForm

    def form_valid(self, form):
        # создаём JobInterview, генерируем вопросы и редиректим на сессию

Форма выглядит так:

  • Должность: Senior Python Developer

  • Описание вакансии: текст из HH / LinkedIn

  • Уровень: Middle/Senior

  • Кол-во вопросов: 5–10

Как я собираю AI-интервьюера, чтобы имитировать собеседования ChatGPT, Фриланс, Программист, Вакансии, Собеседование, Искусственный интеллект, IT, Длиннопост

AI на основе этого генерирует адаптированный набор вопросов.

2. Интервью в действии

Пользователь отвечает на вопрос, AI присылает обратную связь и следующий вопрос. Ответы сохраняются, можно вернуться к любой сессии.

class InterviewSessionView(DetailView):
    model = JobInterview
    template_name = 'interview/session.html'

    def post(self, request, *args, **kwargs):
        # сохраняем ответ пользователя
        # вызываем LLM для фидбека
        # записываем следующий вопрос

На фронте — простой HTMX + hx-post, чтобы обновлялось только нужное.

Стриминг и UX

AI отвечает не сразу — а стримится по частям, имитируя реального интервьюера. Использую стандартный StreamingHttpResponse и SSE:

def stream_ai_response(request):
    def event_stream():
        for chunk in generate_response_chunks(...):
            yield f"data: {chunk}\n\n"
    return StreamingHttpResponse(event_stream(), content_type='text/event-stream')

Это заметно улучшает UX: кажется, будто AI реально «думает» и «слушает» твой ответ.

Что получилось: почти как настоящее собеседование

Сейчас процесс выглядит так:

  1. Я вставляю описание вакансии (например, из Dodo или Yandex)

  2. AI формирует пул вопросов по стеку

  3. Интервью идёт в диалоговом режиме

  4. После каждого ответа — фидбек: что было хорошо, где можно улучшить

  5. В конце — список тем, которые стоит повторить

Вот типичный фидбек от AI после моего ответа:

«Вы объяснили, что такое GIL в Python, но не упомянули, как он влияет на многопоточность и CPU-bound задачи. Рекомендуем изучить модуль multiprocessing как альтернативу.»

Или вот про другой собес ответ

Как я собираю AI-интервьюера, чтобы имитировать собеседования ChatGPT, Фриланс, Программист, Вакансии, Собеседование, Искусственный интеллект, IT, Длиннопост

Что я понял

  • AI не устаёт, не осуждает и не душнит — отличный спарринг-партнёр

  • Отвечать письменно — уже практика: структурируешь мысли

  • Даже просто читать вопросы, которые задаёт AI, — хорошая проверка знаний

  • Появился реальный план, какие темы повторять

  • Опять же история с рандомностью вопросов. Не знаешь, что спросит

  • Вопросы и задачи касаются именно требований к вакансии, не надо решать абстрактное все подряд

  • Это НЕ ЧУДО ТАБЛЕТКА. Это просто дополнительный инструмент, который помогает. По крайней мере так честнее перед самим собой, чем во время реального интервью читерить с GPT на соседней вкладке.

  • Это не замена реальному интервью, но альтернативный способ «набить руку»

А дальше?

Проект я пока веду как pet project. Если тема интересна — могу поделиться, как собираю промпты и как вытаскиваю темы из фидбека AI. Пишите в комментарии. В идеале потом сделать аудио версию ответов, чтоб они транскрибировались в текст. Чисто голосовушкой ответить. Ну и можно еще придумать какой-нибудь хард режим, в духе - лимит времени на все ответы 20 минут.

Комментарии (5)


  1. Brenwen
    02.07.2025 13:45

    Отличная идея и реализация. Можно использовать в том числе и для подготовки к любым техническим экзаменам.


    1. pnirtep Автор
      02.07.2025 13:45

      главный + по мне, это рандомность вопросов, но при этом по теме


  1. Gendu
    02.07.2025 13:45

    Круто, сам бы хотел иметь такой инструмент под руками. Жду продолжения :)


    1. pnirtep Автор
      02.07.2025 13:45

      Подумываю сделать какую-нибудь историю с ответом голосом, типа надиктовываешь ответ, если это не какая-то история про написание кода, с мобильных устройств нормально зайдет


  1. evgeniy_kudinov
    02.07.2025 13:45

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