Sobes.tech

Golang

Uzdevums: «Timeout ar ping-pong» Uzrakstiet funkciju pingPong, kas: - Sāk divas gorutīnas: viena ģenerē ziņojumus "ping", otra — "pong". - Gorutīnas ir jāmainās ziņojumiem caur kopēju kanālu stingri pēc kārtas. - Apmaiņa turpinās 3 sekundes, pēc tam programma jābeidz (gluds izslēgšanas process). - Izmantojiet kontekstu ar laika limitu atcelšanai. - Katru ziņojumu izvadiet ekrānā kopā ar laiku (milisekundēs no sākuma). Sagaidāmais iznākums piemērs: 0ms: ping

216

Vienkārša tiešās kodēšanas uzdevums (pamata konkurētspēja) Nosacījums: Uzrakstiet funkciju fetchAll(urls []string) map[string]string, kas katram URL vienlaikus veic HTTP GET pieprasījumu un atgriež karti, kur atslēga ir URL, bet vērtība ir atbildes ķermenis (virkne). Ja pieprasījums neizdodas (kļūda, ne 200), vērtība būs tukša virkne. Ierobežojumi: - Nav atļauts izmantot ārējās bibliotēkas (tikai standarta). - Nav atļauts mainīt parakstu. - Programma nedrīkst krist panikas dēļ http.Get. Ievades piemērs: ["[link]" "[link]" "[link]"]

203

galvenais pakotne 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

Ko teiktu intervētājam (ja viņš jautā) "Es izmantotu worker pool ar fiksētu darba ņēmēju skaitu, uzdevumu kanālu un sync.WaitGroup. Darba ņēmēji veiks pieprasījumus, un laika limitu un atcelšanu kontrolēs konteksts. Rezultātus es savāku buferī, kas ir aizsargāts ar mutex (vai caur atsevišķu kanālu)." Tagad ir tava kārta Raksti kodu šajā čatā. Es to pārbaudīšu un sniegšu atsauksmi. Ja nezināji, ar ko sākt, lūdz padomu. Veiksmi!

177

// visi slice elementi ir jābūt unikāli + kopā 1000 elementu // programma nedrīkst nevajadzīgi aizķerties dēļ 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("dublēts palielinājums") } checkIncrement[i] = 1 }() } time.Sleep(2 * time.Second) fmt.Println(len(data)) }

159

Kas ir pointer un kas notiks, ja funkcijas arguments ir pointer?

159

Aizpildiet sēklu bez mutex, lai tajā būtu visi 1000 elementi.

148