Sobes.tech

Golang

Која од следеће опције је највероватнија да се деси када покушате да покренете веома велики број горутина (на пример, десетине хиљада) без додатне контроле? - Главни проблем ће бити блокирање глобалног mutex-а унутар runtime-а, што ће довести до потпуног заустављања извршавања програма - Планер Go ће извршавати горутине у малим групама секвенцијално, тако да раст њиховог броја скоро да не утиче на потрошњу меморије - Масовно стварање горутина може довести до значајне потрошње меморије и додатних трошкова планера; у таквим случајевима, одговарајуће је коришћење пул-а радника - Ако број горутина пређе број логичких процесора, Go ће аутоматски почети да одбија нове покретање горутина са паником

Intern
AvitoAvito
85

// Находим максимальное четное число 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("Максимум равен %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

// бројеви од 1 до 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

Koje su prednosti i mane pgx?

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

Zašto je potreban consumer group u Kafka?

Senior
Lanit PPM
85

Ispričajte nam o optimizaciji upita za bazu podataka: kako ste pronašli problematične upite i što ste radili?

Senior
А7
85

Šta tačno radite sa Postgres — upiti, indeksi?

Senior
OZONOZON
85

Šta će se desiti ako se sistemski poziv (syscall) blokira?

Middle+
Servicepipi
85

Postoji li način da upravljate i prilagodite stop-the-world sakupljač smeća u Go?

Middle+
WildberriesWildberries
85

// таблица с товарами: // ID | cnt_view // ----------- // 1 | 100 // два пользователя начали одновременно просматривать товар с id = 1 // и в нашей базе данных запущены 2 параллельные транзакции // какой будет результат? 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

Šta te motiviše, zašto voliš da radiš kao programer?

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

Koje linters koristiš u Go i gde ih pokrećeš?

Junior
СБК ПАРУС
85

Izvadite pitanje/zadatak sa intervjua sa ovog snimka ekrana. Sačuvajte originalni jezik.

Senior
Pasul LTD
85

Zašto nastaju nijanse sa dužinom niza u UTF-8?

Middle+
Napoleon IT
85

Ispričaj o svom iskustvu sa brokerima poruka (Kafka, NATS).

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

Дат је стринг S, потребно је пребројати број подстринга у овом стрингу који садрже све карактере из тог стринга бар једном. Примери: "abca" -> 3 // abc, bca, abca "aa" -> 3 // aa, a, a, "ffg" -> 2 // ffg, fg

Senior
Яндекс
85

Да ли си спреман за преселје у Јелабугу?

Senior
Алабуга
85

Знаш ли шта је трансакција и која су њена својства (ACID)?

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

Koje su prednosti goroutines u odnosu na OS niti?

Middle+
101ХР101ХР
85

Да ли имате искуство у профилисању сервиса?

Middle
WildberriesWildberries
85
/412