Вернуться в видеотекуОткрытое собеседование на Middle Go-разработчика в Wildberries: код-ревью
Учебное мок-собеседование Middle Go-разработчика с теоретическим блоком и подробным код-ревью сервиса генерации PDF. В конце разбираются ответы кандидата и вопросы зрителей по Go, TLS, кэшированию и конкурентности.
- Направление
- Backend
- Формат
- Видео
- Компания
Wildberries- Грейд
- Middle
- Длительность
- 1 ч 41 мин
Коротко о видео
Это открытое мок-собеседование на 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 не следует держать внутри транзакции; для фоновой обработки нужны очередь, статус задачи, контекст, логирование и трассировка.