Вернуться в видеотеку

Открытое собеседование на Middle Go-разработчика в Wildberries: код-ревью

Учебное мок-собеседование Middle Go-разработчика с теоретическим блоком и подробным код-ревью сервиса генерации PDF. В конце разбираются ответы кандидата и вопросы зрителей по Go, TLS, кэшированию и конкурентности.

Источник: Эйч Навыки — менторская программа

Открыть на YouTube

Таймлайн

Коротко о видео

Это открытое мок-собеседование на Middle Go-разработчика: интервьюер Павел Фазлуктинов проверяет кандидата Владимира по архитектуре, интерфейсам, конкурентности, сетям и проектированию сервисов. В практической части кандидат проводит код-ревью сервиса, который получает данные пользователя, генерирует PDF и меняет его статус; обсуждаются транзакции, Kafka, Transactional Outbox, кэширование, отказоустойчивость и масштабирование. В финале интервьюер положительно оценивает практические навыки кандидата, но советует освежить теорию Go runtime, сетей, TLS и криптографии; это оценка в рамках мок-интервью, а не результат реального найма.

Затронутые темы

Что взять на заметку

  • Для подготовки к middle-интервью по Go полезно уметь объяснить, почему зависимость от интерфейса упрощает замену инфраструктурных реализаций и написание моков для тестов.
  • Нужно различать nil-интерфейс и интерфейс с типизированным nil-значением: проверка интерфейса на nil может не сработать, а вызов метода способен привести к panic при обращении к полям nil-указателя.
  • Стоит отработать Liskov Substitution Principle через ожидаемое поведение реализации: подмена не должна нарушать контракт, например неожиданно менять результат Len после Add.
  • Следует понимать границу между конкурентностью и параллелизмом, модель GMP и то, что GOMAXPROCS ограничивает число P, а не число потоков ОС.
  • При выборе между REST и gRPC важно учитывать не только HTTP/2 и Protobuf, но и поддержку браузера, генерацию клиентов, инструменты отладки и возможности команды.
  • В сервисах с БД и Kafka нельзя отправлять событие отдельно от сохранения бизнес-состояния: обсуждается Transactional Outbox, а для повторной обработки — идемпотентные consumer'ы и при необходимости Inbox.
  • Долгие сетевые вызовы и генерацию PDF не следует держать внутри транзакции; для фоновой обработки нужны очередь, статус задачи, контекст, логирование и трассировка.

Рекомендуем посмотреть