Перейти к содержимому

Magnit / Магнит - 3 (SuperApp)

Актуальность: 1 кв 2025

  • Есть процессор, у него 4 ядра и 8 потоков. Представим, что все 8 потоков доступны для нашей программы. Создаем 100 горутин и в каждой из них бесконечный for. Что будет? go/runtime
  • Как работает эвакуация в мапе? go/maps
  • Делаем нагрузочное тестирование. Данные с запросов мы складываем в in-memory хранилище. Что лучше юзать: каналы или мьютексы? Что будет работать быстрее? go/concurrency
func main() {
for i := 0; i < 5; i++ {
go func() {
fmt.Println(i)
}()
}
}
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)
}
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
}
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)
}
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)
}
}
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() {}