Что такое массивы и слайсы в Go, чем они отличаются? Как работает append и расширение capacity?
В Go массив (array) — это структура фиксированного размера, размер которой задаётся при объявлении и не может изменяться. Например:
Читать ответПодготовка к интервью
49 вопросов с собеседований в Lamoda Tech
Что проверяют на интервью
Подборка объединяет вопросы, отмеченные на этапах интервью в Lamoda Tech. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: go, database, sql.
Каталог
В Go массив (array) — это структура фиксированного размера, размер которой задаётся при объявлении и не может изменяться. Например:
Читать ответKafka не гарантирует абсолютную доставку сообщений (exactly-once delivery) из коробки, но обеспечивает как минимум один раз (at-least-once) доставку.
Читать ответВ языке Go (Golang) управление памятью осуществляется автоматически с помощью встроенного сборщика мусора (garbage collector, GC).
Читать ответВ Go тип errgroup.Group из пакета golang.org/x/sync/errgroup используется для управления группой горутин, которые могут возвращать ошибки.
Читать ответУровни изоляции транзакций в СУБД реализуются через контроль доступа к данным и управление блокировками, а также через механизмы версионности данных (MVCC).
Читать ответВ Go нет классического наследования, как в объектно-ориентированных языках. Вместо этого используется композиция и интерфейсы.
Читать ответВ Go для обработки аварийного завершения программы, вызванного паникой, часто используют конструкцию defer вместе с функцией recover().
Читать ответЕсли таблица большая и в ней нет индекса, добавление индекса может занять много времени и заблокировать таблицу, что приведёт к проблемам с доступом.
Читать ответДедлок (взаимная блокировка) — ситуация, когда два или более потоков (горутин) навсегда блокируют друг друга, ожидая освобождения ресурсов, которые заняты друг другом.
Читать ответДля дедупликации списка адресов в Go удобно использовать map, где ключом будет адрес, а значением — булево значение или пустая структура для экономии памяти.
Читать ответПланировщик запросов в базе данных решает, когда применять индекс, основываясь на статистике и стоимости выполнения операций.
Читать ответИнтерфейсы в Go нужны для определения поведения объектов без привязки к конкретной реализации. Они позволяют писать более гибкий и расширяемый код, поддерживают полиморфизм и облегчают тестирование.
Читать ответ