Sobes.tech

Golang

Kura no šīm iespējām ir visbiežāk sastopama, mēģinot palaist ļoti lielu goroutine skaitu (piemēram, desmitiem tūkstošu) bez papildu kontroles? - Galvenā problēma radīsies, bloķējot globālo mutex iekšā runtime, kas novedīs pie pilnīgas programmas darbības apturēšanas - Go plānotājs izpildīs goroutines mazās grupās secīgi, tāpēc to skaita pieaugums praktiski neietekmēs atmiņas patēriņu - Masveida goroutine radīšana var novest pie ievērojama atmiņas patēriņa un papildu plānotāja izmaksām; šādos gadījumos ir piemērots worker pool - Ja goroutine skaits pārsniedz loģisko procesoru skaitu, Go automātiski sāks noraidīt jaunas goroutine palaišanas ar paniku

Intern
AvitoAvito
85

// Atrodiet lielāko pāra skaitli package main import "fmt" func main() { var max int for i := 1000; i > 0; i-- { go func() { if i%2 == 0 && i > max { max = i } }() } fmt.Printf("Maksimālais ir %d", max) } func maxEvent(n, workers int) int { var wg sync.WaitGroup results := make(chan int, workers) jobs := make(chan int, workers) for w := 0; w < workers; w++ { wg.Add(1) go func() { defer wg.Done() localMax := -1 for num := range jobs { if num%2 == 0 && num > localMax { localMax = num } } result <- localMax }() } go func() { for i := 1; i <= n; i++ { jobs <- i } close(jobs) }() go func() { wg.Wait() close(results) }() globalMax := -1 for localMax := range results { if localMax > globalMax { globalMax = localMax } } return globalMax }

Middle
WildberriesWildberries
85

// skaitļi no 1 līdz 10 func main() { done := make(chan struct{}, 10) for i:=1; i<=10; i++{ go func(){ defer func() {done<-struct{}{}}() printNumber(n) }() } for i:=1; i<=10; i++{ <-done } } func printNumber(n int) { time.Sleep(time.Second) fmt.Println(n) }

Middle+
МВидеоМВидео
85

Kādi ir pgx plusi un mīnusi?

Middle+
МВидеоМВидео
85

Kādam mērķim ir nepieciešama consumer grupa Kafka?

Senior
Lanit PPM
85

Pastāstiet par vaicājumu optimizāciju datu bāzē: kā atradāt problēmjautājumus un ko darījāt?

Senior
А7
85

Ko tieši darījāt ar Postgres — vaicājumi, indeksi?

Senior
OZONOZON
85

Kas notiks, ja sistēmas izsaukums (syscall) tiks bloķēts?

Middle+
Servicepipi
85

Vai ir veids, kā pārvaldīt un pielāgot stop-the-world atkritumu savācēju Go?

Middle+
WildberriesWildberries
85

// preču tabula: // ID | cnt_view // ----------- // 1 | 100 // divi lietotāji sāka vienlaikus skatīties preces ar ID = 1 // un mūsu datu bāzē tika palaistas 2 paralēlas transakcijas // kāds būs rezultāts? postgresql func IncrementView(ctx context.Context, db *sql.DB, id int64) error { tx, err := db.BeginTx(ctx, nil) if err != nil { return err } defer tx.Rollback() var cnt int err = tx.QueryRowContext(ctx, "SELECT cnt_view FROM goods WHERE id = $1", id, ).Scan(&cnt) if err != nil { return err } cnt++ _, err = tx.ExecContext(ctx, "UPDATE goods SET cnt_view = $1 WHERE id = $2", cnt, id, ) if err != nil { return err } return tx.Commit() }

Middle+
Lenta Tech
85

Kas tevi motivē, kāpēc tev patīk strādāt programmētājam?

Senior
МВидеоМВидео
85

Kādus linters izmantojat Go un kur tos palaidjat?

Junior
СБК ПАРУС
85

Izņemiet intervijas jautājumu/uzdevumu no šīs ekrānattēla. Saglabājiet oriģinālo valodu.

Senior
Pasul LTD
85

Kāpēc rodas nianses ar virknes garumu UTF-8?

Middle+
Napoleon IT
85

Pastāstiet par savu pieredzi ar ziņojumu starpniekiem (Kafka, NATS).

Middle
АО Медиа Эффект
85

Dotā ir S virkne, jāskaita šo virsgrāmatas apakšvirkņu skaits, kas satur visus šīs virsgrāmatas simbolus vismaz vienu reizi. Piemēri: "abca" -> 3 // abc, bca, abca "aa" -> 3 // aa, a, a, "ffg" -> 2 // ffg, fg

Senior
Яндекс
85

Vai esi gatavs pārcelties uz Jelabugu?

Senior
Алабуга
85

Vai zini, kas ir transakcija un kādas ir tās īpašības (ACID)?

Senior
МВидеоМВидео
85

Kādi ir goroutines priekšrocības salīdzinājumā ar OS pavedieniem?

Middle+
101ХР101ХР
85

Vai jums ir pieredze pakalpojumu profilēšanā?

Middle
WildberriesWildberries
85
/412