Sobes.tech

Golang

Ülesanne: «Timeout-iga ping-pong» Kirjutage funktsioon pingPong, mis: - Käivitab kaks gorutini: üks genereerib sõnumeid "ping", teine — "pong". - Gorutini vahetavad sõnumeid rangelt järjest läbi ühise kanali. - Vahetus kestab 3 sekundit, pärast mida programm peaks lõpetama (sügav väljalülitus). - Kasutage konteksti ajapiirangu ja tühistamise jaoks. - Kuvage iga sõnum ekraanil koos ajaga (millisekundites alates algusest). Oodatud väljundnäide: 0ms: ping

216

Lihtne live coding ülesanne (põhiline konkurents) Tingimus: Kirjutage funktsioon fetchAll(urls []string) map[string]string, mis iga URL jaoks teeb samaaegselt HTTP GET-päringu ja tagastab kaardi, kus võti on URL ja väärtus on vastuse keha (string). Kui päring ebaõnnestub (viga, mitte 200), on väärtus tühi string. Piirangud: - Ei tohi kasutada väliseid teeke (ainult standardseid). - Ei tohi muuta allkirja. - Programm ei tohi kokku kukkuda http.Get paanikale. Sisendnäide: ["[link]" "[link]" "[link]"]

201

peamine pakett 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

What to tell the interviewer (if asked) "I would use a worker pool with a fixed number of workers, a task channel, and sync.WaitGroup. The workers will perform the requests, and timeout and cancellation will be controlled via the context. I will gather the results in a buffer protected by a mutex (or through a separate channel)." Now it's your turn Write the code in this chat. I will check it and give feedback. If you don't know where to start, ask for a hint. Good luck!

177

// kõik slice elemendid peavad olema unikaalsed + kokku 1000 elementi // programm ei tohi time.sleep tõttu tarbetult kinni jääda 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("duplikaatne kasv") } checkIncrement[i] = 1 }() } time.Sleep(2 * time.Second) fmt.Println(len(data)) }

159

Mis on pointer ja mis juhtub, kui funktsiooni argument on pointer?

159

Täida viil lõikamata elementidega, et see sisaldaks kõiki 1000 elementi.

148