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

GOLANG СОБЕСЕДОВАНИЕ LAMODA НА 300К

Почти двухчасовое техническое Go-собеседование в Lamoda с лайвкодингом по concurrency и SQL-задачами. В конце команда рассказывает о процессе разработки, тестировании и используемых инструментах.

Источник: nilchanpub

Открыть на YouTube

Таймлайн

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

Запись технического собеседования на Go в Lamoda: кандидат рассказывает о работе с сервисами управления базовыми станциями и маркетинговым бэкендом, после чего отвечает на вопросы по Kafka, микросервисам и распределённым операциям. Основная часть состоит из лайвкодинга и разбора Go: слайсов, горутин, планировщика, контекста, гонок, мап, каналов и интерфейсов. В финале разбирают SQL, индексы и конкурентное списание баланса, затем интервьюеры описывают процессы и стек компании.

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

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

  • Разделяйте гарантии Kafka: at-most-once допускает потерю без дубликатов, at-least-once допускает дубликаты; чувствительные операции требуют идемпотентности, например идентификатора или хеша операции.
  • Нужно уметь объяснить, что слайсы могут разделять базовый массив: append способен изменить данные за пределами текущей длины слайса, если хватает capacity; для изоляции данных применяют отдельное выделение памяти и copy.
  • В конкурентном Go-коде WaitGroup увеличивают до запуска горутины, а не внутри неё; вместо ожидания через time.Sleep используют WaitGroup, а для большого числа запросов ограничивают параллелизм worker pool’ом.
  • Для остановки группы горутин при первой ошибке обсуждаются errgroup и context; также нужно знать race detector, различия Mutex и RWMutex и риск конкурентного доступа к map.
  • Канал закрывает отправитель; при fan-in выходной канал закрывают только после завершения всех копирующих горутин, обычно через WaitGroup.
  • Для SQL-подготовки важны JOIN относительно сохраняемой таблицы, GROUP BY и агрегаты, EXPLAIN ANALYZE, селективность и порядок колонок составного индекса.
  • Операции с балансом не следует хранить во float: обсуждается хранение в минимальных единицах и атомарное обновление с проверкой достаточности средств и фильтром по пользователю.

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