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

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

Тренировочное Go-интервью с разбором баз языка, конкурентности и system design сервиса коротких ссылок, а также с публичной обратной связью по ответам кандидата.

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

Открыть на YouTube

Таймлайн

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

Это запись открытого тренировочного собеседования 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.

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