Magnit / Магнит - 3 (SuperApp)
Актуальность: 1 кв 2025
- Есть процессор, у него 4 ядра и 8 потоков. Представим, что все 8 потоков доступны для нашей программы. Создаем 100 горутин и в каждой из них бесконечный for. Что будет?
go/runtime - Как работает эвакуация в мапе?
go/maps - Делаем нагрузочное тестирование. Данные с запросов мы складываем в in-memory хранилище. Что лучше юзать: каналы или мьютексы? Что будет работать быстрее?
go/concurrency
Задача: Какое поведение у кода ниже? go/basics
Заголовок раздела «Задача: Какое поведение у кода ниже? go/basics»func main() { for i := 0; i < 5; i++ { go func() { fmt.Println(i) }() }}Задача: Какое поведение у кода ниже? go/basics
Заголовок раздела «Задача: Какое поведение у кода ниже? go/basics»const workers = 10000
var count int
func networkRequest() { time.Sleep(time.Millisecond)}
func main() { for i := 0; i < workers; i++ { go networkRequest() }
fmt.Println(count)}Задача: Что выведет? go/puzzles
Заголовок раздела «Задача: Что выведет? go/puzzles»func main() { x := 10 y := 20
defer func(val int) { fmt.Println("x ", val) }(x)
defer func() { fmt.Println("y ", y) }()
x = 100 y = 200}Задача: Что выведет? go/puzzles
Заголовок раздела «Задача: Что выведет? go/puzzles»func main() { slice := []string{"a ", "a "}
func(slice []string) { slice = append(slice, "a ") slice[0] = "b " slice[1] = "b " fmt.Println(slice) }(slice)
fmt.Println(slice)}Задача: Какое поведение? go/basics
Заголовок раздела «Задача: Какое поведение? go/basics»func work(done chan struct{}, out chan int) { for i := 1; i <= 10; i++ { out <- i }
done <- struct{}{}}
func main() { out := make(chan int) done := make(chan struct{})
go work(done, out)
<-done
for n := range out { fmt.Println(n) }}Задача: Какое поведение будет у кода ниже? go/basics
Заголовок раздела «Задача: Какое поведение будет у кода ниже? go/basics»func main() { ch := make(chan int)
for i := 0; i < 10; i++ { select { case x := <-ch: print(x) case ch <- i: } }}Задача: Написать нагрузочное тестирование (простое). В результате должно быть количество успешных запросов, время на каждый и среднее время выполнения запроса. testing/general
Заголовок раздела «Задача: Написать нагрузочное тестирование (простое). В результате должно быть количество успешных запросов, время на каждый и среднее время выполнения запроса. testing/general»func main() {}