Magnit / Магнит - 7
Актуальность: 4 кв 2025
Вопросы
Заголовок раздела «Вопросы»- Какой был самый интересный проект, который вы разрабатывали?
hr-behavioral/about-you - Было ли в рамках вашей деятельности полный этап от проектирования до разработки, мониторинга, сопровождения и так далее?
devops/observability - Что такое слайс?
go/slices-arrays - Какие операции со слайсами можно делать?
go/slices-arrays - Потокобезопасны ли слайсы?
go/slices-arrays - Если создать слайс
a, присвоить его переменнойb, а затем изменить элемент в исходном слайсеa- изменится лиb? Почему это происходит и как сделать так, чтобы изменения в одном не затрагивали другой?go/slices-arrays - Какие бывают каналы? В чем их отличие?
go/channels - Зачем придумали буферизированный и небуферизированный канал?
go/channels - По какому принципу работает буфер?
go/channels - Что будет, если попытаться отправить данные в закрытый канал?
go/channels - Что будет, если попытаться закрыть уже закрытый канал?
go/channels - Что произойдет, если использовать
for rangeдля чтения из канала, который никогда не будет закрыт?go/channels - Чем
deadlockотличается от паники?go/sync - Что такое строки в Go?
go/strings-runes - Почему строки сделали неизменяемыми?
go/strings-runes - Как устроены строки в Go на техническом уровне? Мы говорим, что строка - это слайс байтов, но при этом работаем с символами. Как это устроено внутри?
go/slices-arrays - Сколько максимум байт занимает один символ?
go/strings-runes - Что такое руна?
go/strings-runes - Сколько байт занимает одна руна?
go/strings-runes - Что такое мапа? Чем отличаются новая мапа?
go/maps - Как мапа реализована в Go?
go/maps - Два элемента лежат в бакете. Как по ключу получить нужное значение из бакета?
go/maps - Как называется ситуация, когда несколько элементов попали в один бакет?
go/maps - Что происходит, когда два разных ключа имеют одинаковый хэш и попадают в один бакет?
go/maps - Мапа потокобезопасна?
go/maps - Чем отличается
fatal errorот паники?go/errors-panic - Возможно ли перехватить
fatal error?go/errors-panic - Какие бывают мьютексы? В чем их отличие?
go/sync - Что под капотом используется в мьютексе?
go/sync - Чем
atomicлучше мьютекса?go/sync - Какие основные техники используются при работе с атомиками?
go/sync - Какие примитивы синхронизации из стандартного пакета
syncвы применяли на практике, помимоsync.Map?go/sync - В каких случаях использовали
sync.Pool?go/sync - Что такое горутина? В чем ее преимущество перед потоками?
go/concurrency - За счет чего обеспечивается «бесплатность» коммуникации между горутинами?
go/concurrency - Всегда ли эффективно решать задачу с помощью горутины? В каких случаях они не дадут выигрыш?
go/concurrency - Как классифицировать операции, с которыми работают горутины? В каком случае будет преимущество?
go/concurrency - Что такое стек горутины?
go/concurrency - Что происходит при переполнении стека?
go/memory-gc - Какие способы можно применить, чтобы разгрузить память и избежать переполнения?
go/memory-gc - Как определить, на стек или на кучу ложится переменная?
go/memory-gc - Почему предпочтительнее использовать стек, а не кучу?
go/memory-gc - Почему куча - это медленная память?
go/memory-gc - Какой алгоритм у сборки мусора? Есть ли там этапы сборки?
algorithms/general - Что такое Mark and Sweep?
go/memory-gc - Что такое Stop the World и на каком этапе срабатывает?
go/memory-gc - Как можно уменьшить негативное влияние Stop the World?
go/memory-gc - Какие индексы в Postgres знаете, с какими есть опыт работы?
sql/indexes - Что из себя представляет B-tree?
sql/indexes - Чем сбалансированное дерево лучше бинарного?
network/balancing - Нужно составить составной индекс по трем полям. Как будете его составлять, какие метрики использовать для этого?
sql/indexes - Что такое селективность?
sql/indexes - Что такое покрывающий индекс?
sql/indexes - В чем минусы большого количества индексов?
sql/indexes - Есть ли опыт работы с транзакциями?
sql/transactions - Что такое транзакции?
sql/transactions - Какие принципы ACID?
sql/transactions - Что такое фантомное чтение?
sql/transactions - Какие есть уровни изоляции?
sql/transactions - Рассмотрим уровень изоляции транзакций Read Committed. Запущены две параллельные транзакции. Вторая транзакция вносит изменения в данные и успешно коммитится, пока первая еще активна. Увидит ли первая транзакция эти изменения при следующем чтении тех же данных?
sql/transactions - Какой уровень изоляции стоит выбрать для того, чтобы гарантированно работать с данными, не позволяя другим транзакциям их изменять?
sql/transactions - Работали ли вы с масштабированием баз данных?
hr-behavioral/about-you - Какие есть способы масштабирования баз данных?
sql/replication-scaling - Есть ли опыт работы с блокировками? Какие использовали в работе?
sql/transactions - Есть ли опыт работы с Kafka?
brokers/kafka - Как будет работать комбинация «консьюмеров больше, чем партиций»?
brokers/general - Как будет работать комбинация «партиций больше, чем консьюмеров»?
brokers/general - Какие есть гарантии доставки?
brokers/general - Удавалось ли реализовывать exactly once на уровне микросервисов? Какие паттерны использовали? Какие еще можно предложить способы реализации?
architecture/microservices - Что такое паттерн Outbox?
architecture/microservices - Как можно разрешить Consumer Lag?
brokers/kafka - Гарантирует ли Kafka уникальность и последовательность сообщений?
brokers/kafka - Есть несколько консьюмеров одного и того же топика, два-три разных сервиса. Каким образом каждый из этих консьюмер-групп будет получать сообщение? Не получится ли так, что первая группа получила некоторое сообщение, а вторая, не успев, потеряет?
brokers/general - Как консьюмер-лаг соотносится с консьюмер-группами?
brokers/general
Задача: Смерджить два упорядоченных массива в один упорядоченный массив. go/slices-arrays
Заголовок раздела «Задача: Смерджить два упорядоченных массива в один упорядоченный массив. go/slices-arrays» Пример:
Дано: `[1, 2, 3, 4, 5]`, `[4, 5, 6, 7, 8]`Результат: `[1, 2, 3, 4, 4, 5, 5, 6, 7, 8]`func merge(a []int, b []int) []int { // код решения}Доп. вопросы после решения задачи
Заголовок раздела «Доп. вопросы после решения задачи»- Какая сложность чтения по индексу добавления?
sql/indexes - Что можете сказать про алгоритмическую сложность?
algorithms/complexity - Почему добавление в слайс константное? Чем это гарантируется? Константно ли оно всегда?
go/slices-arrays
Задача: Смерджить произвольное количество каналов в один канал. go/channels
Заголовок раздела «Задача: Смерджить произвольное количество каналов в один канал. go/channels»func merge(chList ...chan int) chan int { // код решения}
func main() { ch1 := make(chan int, 2) ch1 <- 1 ch1 <- 2 close(ch1)
ch2 := make(chan int, 2) ch2 <- 1 ch2 <- 2 close(ch2)
out := merge(ch1, ch2)
for v := range out { fmt.Println(v) }}