Sobes.tech

Golang

Zadatak: «Ping-pong sa timeout-om» Napišite funkciju pingPong koja: - Pokreće dve goroutine: jedna generiše poruke "ping", druga — "pong". - Goroutine-ovi treba da razmenjuju poruke putem zajedničkog kanala striktno redom. - Razmena traje 3 sekunde, nakon čega program treba da se završi (graceful shutdown). - Koristite kontekst za otkazivanje sa timeout-om. - Prikazujte svaku poruku na ekranu zajedno sa vremenom (u milisekundama od starta). Primer očekivanog izlaza: 0ms: ping

216

Једноставан задатак за live coding (основна конкуренција) Услов: Напишите функцију fetchAll(urls []string) map[string]string, која за сваки URL извршава конкуретно HTTP GET захтев и враћа мапу где је кључ URL, а вредност тело одговора (стринг). Ако захтев не успе (грешка, не 200), вредност ће бити празан стринг. Ограничења: - Не може се користити спољашње библиотеке (само стандардне). - Не може се мењати потпис. - Програм не треба да пада у панике у http.Get. Пример улаза: ["[link]" "[link]" "[link]"]

199

glavni paket import ( "fmt" ) func a(p *string) { s2 := "string2" *p = s2 } func main() { str1 := "string1" p := &str1 fmt.Println(*p) a(&p) fmt.Println(*p) }

185

Шта да кажете интервјуеру (ако вас питају) "Користио бих фиксни број радника у пулу, канал за задатке и sync.WaitGroup. Радници ће извршавати захтеве, а време извршења и отказ ће се контролисати преко контекста. Резултате ћу сакупљати у бафер, заштићен мьютексом (или преко посебног канала)." Сада је ваш ред Напишите код у овом чату. Ја ћу га проверити и дати повратне информације. Ако не знате од где да почнете, затражите савет. Срећно!

175

// все елементи у слайса трябва да са уникални + общо 1000 елемента // програмата не трябва да се блокира излишно заради time.sleep func main() { checkIncrement := map[int]int32{} var data []int for i := 0; i < 1000; i++ { go func() { data = append(data, i) if _, found := checkIncrement[i]; found { fmt.Println(i) panic("дублирано увеличение") } checkIncrement[i] = 1 }() } time.Sleep(2 * time.Second) fmt.Println(len(data)) }

158

Šta je pokazivač i šta će se desiti ako je argument funkcije pokazivač?

157

Popunite slice elementima bez mutexa da bi sadržao svih 1000 elemenata.

148