Загрузка…
Загрузка…
backend / intern / tech_deep
Формат
online
Стадия
tech_deep
Когда
within_quarter
Длительность
—
01
Поведенческий
Расскажите немного о себе: как пришли в IT и в программирование?
HR-часть. Follow-up: чем не угодил JavaScript?
02
Поведенческий
Как был устроен твой учебный день, был ли план, как справлялась с дедлайнами?
Вопрос с подвохом — проверка умения планировать время.
03
Поведенческий
Чем кроме программирования увлекаешься?
04
Поведенческий
Расскажи про свой опыт командной работы: что делали, как была устроена, понравилась ли?
Заметки
Формат — учебное/демо-собеседование (мок) на позицию стажёра-бэкендера (Python/Django). Интервьюер — Андрей Пронина, компания «Пронин Тим» (позиционируется как небольшая студия, «зелёная галера»). Целевой проект — «Донор Серч» (DonorSearch): монолит возрастом ~12 лет, переезжал с Ruby на Django, есть легаси и места для оптимизации. Возможные задачи: доработки в админке, celery-таски для сбора статистики, работа с очередями. Условия: удалёнка, Scrum, недельные спринты, daily-стендапы по утрам. Оплата: первые ~2 недели стажировка бесплатная, далее проектная — у стажёра нет базовой части, заработок ~20-30к при минимальной активности и ~50-60к при активной работе; через ~3 месяца пересмотр на базу+бонусы. Менторство/код-ревью заявлено, но на момент собеседования есть просадка по бэкенд-ревью (ищут менторов-сеньоров). По итогу выдано дополнительное тестовое: склонировать главную страницу djangoproject.com как Django-проект на шаблонах со статикой/скриптами в течение часа.
Подготовка
По фидбэку стоит подтянуть: работу с git и gitflow, методологии гибкой разработки (Agile/Scrum), работу с очередями (Celery, RabbitMQ) и Redis-кешированием, Docker и настройку серверов (wsgi/nginx), парсинг (BeautifulSoup). Django ORM (запросы, подзапросы, аннотации, prefetch/select_related, permissions) — на хорошем уровне. Полезно иметь план на день и уметь планировать своё время (вопрос с подвохом).
Стиль интервьюера
Дружелюбный, разговорный стиль, много шутит. Часть вопросов с подвохом (например, про план на день — проверка умения планировать время). Активно даёт подсказки и наводящие follow-up-вопросы, подводит кандидата к ответу. Поощряет рассуждения вслух и гуглинг неизвестного, предлагает решать задачи как микрозадания. Прозрачно объясняет структуру собеседования заранее (рассказ о себе → технический разбор кода → вопросы кандидата → фидбэк) и даёт развёрнутый честный фидбэк по итогам.
05
Теория
Каким образом была устроена работа с git, как ты привыкла работать (ветки, пул-реквесты)?
06
Теория
Что такое gitflow? Какие твои действия, когда к тебе прилетает таска (например, написать модель)?
Кандидат не знал термин gitflow, реконструировал процесс: создать ветку, сделать работу, отправить запрос на merge.
07
Поведенческий
Приходилось ли читать чужой код / делать code review?
08
Теория
Что ты знаешь про методологии гибкой разработки (Agile, Scrum)?
Кандидат ответил, что это мимо неё.
09
Теория
Есть ли у тебя бэкграунд по настройке серверов и работе с Docker?
10
System design
Представь, что Docker ещё не изобрели. Как задеплоить Python/Django проект на сервер, какими инструментами воспользоваться, чтобы он держал больше одного пользователя?
Подводка к wsgi-серверу и nginx.
11
Теория
Что ты подразумеваешь под настройкой nginx? Что делает nginx?
Обсуждение: nginx перенаправляет запросы на wsgi-сервер и отдаёт статику.
12
Код
Пройдись построчно по этому запросу и расскажи, что он делает и как работает (подзапрос с id рецептов автора + prefetch).
Разбор тестового: вытащить первые N рецептов, связанных с автором (many-to-many), через подзапрос со списком id.
13
Код
Как доработать этот запрос, чтобы он отдавал только опубликованные рецепты (есть булево поле is_published)?
14
Код
Если добавить filter(is_published=True), запрос будет работать корректно или где-то может быть проблема?
15
Теория
Что будет, если в выборку не попало ничего (срез/лимит по пустому queryset)?
Срез пустого queryset вернёт пустое множество, аналогично LIMIT в SQL.
16
Теория
Почему для проверки наличия подписки используешь именно Exists?
17
Теория
Как ещё можно проверить наличие объекта прямо в запросе, если Exists недоступен (например, через подсчёт количества / агрегацию Count)?
18
Теория
Что такое annotate и зачем он нужен?
Пример: подсчёт количества рецептов для каждого пользователя.
19
Теория
Каким образом ещё можно задать сортировку (order_by), кроме как в самом запросе?
Ответ: через Meta.ordering в модели.
20
Теория
Какой механизм работы у prefetch_related и чем он отличается от select_related?
21
Код
Зачем тебе этот permission (проверка, что пользователь — автор) и как ты его используешь?
Используется для действий частичного обновления и удаления рецепта.
22
Теория
Зачем в этом случае наследоваться от IsAuthenticated, если мы и так проверяем, что пользователь автор? Может ли сюда попасть неавторизованный пользователь?
request.user может быть AnonymousUser — объект другой модели, поэтому проверка автора без проверки авторизации может не сработать.
23
Кейс
Прилетела задача: сделать страницу, которая один-в-один копирует главную страницу сайта (djangoproject.com). Как бы ты поступила (с позиции человека, к которому прилетела задача)?
Дедлайн час. Проверка подхода: разметка макета, просмотр исходного кода, копирование статики/картинок, гугление неизвестного решения.
24
Теория
Что ты знаешь про парсинг? Какими инструментами можно спарсить/скопировать страницу?
Кандидат упомянула BeautifulSoup.