> Что нравилось и что хотелось бы изменить в процессе код-ревью на последнем проекте (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Поведенческие вопросы
Компании: Employcity
Стек: Go
> Пример ответа
Короткий ответ
На последнем проекте нравилось, что код-ревью было обязательным и быстрым: среднее время до первого комментария - меньше двух часов. Хотелось бы изменить культуру: убрать формальные approve без реального чтения diff. Также не хватало чек-листа для критичных мест: обработка ошибок, контексты, graceful shutdown. Предлагал ввести ротацию ревьюеров и метрику "комментариев на 100 строк", но не успел довести до конца.
Пример по STAR
Ситуация: В команде из шести backend-разработчиков на Go мы поддерживали монолит с десятками микросервисов. Код-ревью формально существовало, но часто сводилось к "LGTM" через пять минут после открытия pull request.
Задача: Мне как senior-разработчику нужно было повысить качество ревью без роста времени на merge. Основная боль - пропущенные баги в конкурентном коде и необработанные ошибки.
Действия: Я предложил три изменения. Первое - шаблон pull request с обязательными пунктами: как тестировал, какие edge cases покрыл, есть ли изменения в API. Второе - ротация: каждый разработчик раз в неделю был "дежурным ревьюером" и проверял все PR в своём сервисе. Третье - я начал оставлять комментарии не только про баги, но и про альтернативы: например, почему errgroup лучше ручного WaitGroup в конкретном месте.
Результат: Через месяц количество комментариев на PR выросло с 0.8 до 2.3, а время до merge увеличилось всего на 15 минут. Мы поймали два race condition до продакшена. Однако сопротивление осталось: двое разработчиков считали ротацию дополнительной нагрузкой. Я не смог полностью убрать формальные approve - это осталось как задача для следующего квартала.
Как отвечать на собеседовании
Сначала назовите одну конкретную вещь, которая нравилась, и одну, которую хотели бы изменить. Не говорите абстрактно "всё было хорошо" или "всё было плохо". Приведите метрику или пример: время до первого комментария, количество найденных багов, конкретный случай. Покажите, что вы не просто критиковали, а предлагали решение и измеряли эффект. Если изменение не удалось - честно скажите почему и что бы сделали иначе. Для senior-уровня важно показать, что вы влияли на процесс, а не только на код.
Что проверяет интервьюер
Интервьюер хочет услышать, что вы умеете давать и принимать обратную связь. Проверяется, отделяете ли вы личные предпочтения от объективных проблем процесса. Также важно, как вы работаете с сопротивлением: давите, договариваетесь или отступаете. Для backend на Go отдельно смотрят, упоминаете ли вы специфичные для языка вещи: обработку ошибок, конкурентность, context. Ещё один сигнал - готовы ли вы признать, что не всё получилось. Senior-кандидат, который говорит только об успехах, вызывает меньше доверия.
Типичные ошибки
Говорить только о том, что нравилось, и избегать критики. Или наоборот - жаловаться на коллег без предложений. Называть абстрактные проблемы без примеров: "мало ревьюили" вместо "среднее время до первого комментария - 8 часов". Приписывать все улучшения себе, игнорируя командную работу. Не упоминать метрики или результат. Путать код-ревью с парным программированием. Забывать, что интервьюер может спросить: "А что вы сделали, когда коллега не согласился?" - и не иметь ответа.
> Похожие задачи по Go
Как устроена система доступа в компании
Приведи пример самого частого комментария в код-ревью
Использовали ли вы query builder для SQL запросов
Каковы недостатки генерации уникальных чисел с помощью последовательного заполнения и перемешивания
> Похожие задачи по backend
Как устроена система доступа в компании
Приведи пример самого частого комментария в код-ревью
Использовали ли вы query builder для SQL запросов
Каковы недостатки генерации уникальных чисел с помощью последовательного заполнения и перемешивания
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью