Вернуться в видеотекуОткрытое собеседование на Go-разработчика | Тренировочные интервью
Тренировочное Go-интервью с разбором баз языка, конкурентности и system design сервиса коротких ссылок, а также с публичной обратной связью по ответам кандидата.
- Направление
- Backend
- Формат
- Мок-собеседование
- Компания
МТС- Длительность
- 1 ч 8 мин
Коротко о видео
Это запись открытого тренировочного собеседования Go-разработчика. Кандидат рассказывает о примерно двух годах работы с Go и работе в SberDevices, затем отвечает на вопросы по устройству Go: интерфейсам, слайсам, map, функциям, каналам, горутинам и синхронизации. Во второй части он проектирует сервис коротких ссылок под нагрузку около 10 000 RPS, обсуждая кэш, репликацию БД, масштабирование, HTTP/2, контейнеризацию и CI/CD; в конце интервьюер даёт обратную связь и отвечает на вопросы зрителей о подготовке и формате интервью.
Затронутые темы
Что взять на заметку
- Повторите модель Go вместо классического ООП: встраивание структур, экспортируемость идентификаторов по регистру и неявное удовлетворение интерфейсов.
- Уметь объяснить различие массива и slice: длина массива входит в его тип, а slice содержит ссылку на массив, length и capacity; append может выделить новый массив и возвращает новый slice.
- Для map нужно знать допустимые ключи: ключ должен быть comparable; структура пригодна как ключ только если сравнимы все её поля. Запись в nil map приводит к panic.
- Обычная map небезопасна при конкурентном доступе: нужны синхронизация, sync.Map или иной контролируемый доступ, а гонки стоит проверять race detector’ом.
- Подготовьте семантику каналов: буферизированные и небуферизированные каналы, закрытие, чтение с проверкой ok, select с default, отмена через context и ожидание горутин через sync.WaitGroup.
- В system design сначала фиксируйте нагрузку и профиль чтения/записи. Для сокращателя ссылок обсуждались кэш с TTL, master/replica, риск отставания реплики, Redis и горизонтальное масштабирование приложений.
- По обратной связи интервьюера, кандидату полезно углубить reverse engineering, внутренности HTTP/2, базы данных и system design; в качестве подготовки также советуют разбирать документацию и статьи о планировщике Go, каналах и runtime.