Вернуться в видеотекуGOLANG СОБЕСЕДОВАНИЕ LAMODA НА 300К
Почти двухчасовое техническое Go-собеседование в Lamoda с лайвкодингом по concurrency и SQL-задачами. В конце команда рассказывает о процессе разработки, тестировании и используемых инструментах.
- Направление
- Backend
- Формат
- Техническое собеседование
- Компания
Lamoda- Длительность
- 1 ч 54 мин
Коротко о видео
Запись технического собеседования на 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: обсуждается хранение в минимальных единицах и атомарное обновление с проверкой достаточности средств и фильтром по пользователю.