Расскажите про опыт работы с Go
Что проверяют
Глубину: пишете ли вы идиоматичный Go или переносите привычки из другого языка. Дальше идут вопросы про горутины и интерфейсы.
Как отвечать
Рамка и пример решения.
> «На Go три года, до этого писал на Python. Сейчас сервис агрегации: принимает вебхуки, обогащает данные и складывает в PostgreSQL, около трёх тысяч запросов в секунду на пике. > > Из задач: пул воркеров на горутинах с ограничением через семафор на канале, отмена по контексту, graceful shutdown. Поймал утечку горутин: при ошибке writer не закрывался, и горутины копились по одной на запрос, нашёл через pprof по числу goroutine».
Что стоит назвать как реально используемое: горутины и каналы, context для отмены и таймаутов, sync.WaitGroup и errgroup, интерфейсы у потребителя, database/sql или pgx, тесты с табличными случаями, go test -race, профилирование через pprof, линтер golangci-lint.
Идиоматичность стоит подчеркнуть отдельно: ошибки возвращаются, а не бросаются, и оборачиваются через fmt.Errorf("...: %w", err); интерфейсы маленькие и объявлены там, где используются; паника только для действительно неисправимых ситуаций.
Где спотыкаются
Пишут на Go как на Java: большие интерфейсы рядом с реализацией, фабрики, наследование через встраивание ради иерархии.
Игнорируют возвращённую ошибку.
Не знают про детектор гонок и не гоняли тесты с -race.
Не могут рассказать ни об одной пойманной утечке горутин, хотя это самая частая проблема в проде.