Vai esat izmantojis Inbox un Outbox modeļus?
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
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]"]
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) }
Kur tika glabāti žurnāli?
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!
Kā nodrošināja idempotenci?
// 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)) }
Kas ir pointer un kas notiks, ja funkcijas arguments ir pointer?
Aizpildiet sēklu bez mutex, lai tajā būtu visi 1000 elementi.
Pastāsti par bloķēšanas mehānismiem Postgres.
Kāda ir atšķirība starp DELETE un TRUNCATE?
Vai esi dzirdējis par izplatīto izsekošanu?
Kā jūs izmantojāt Redis?
Pastāsti man par savu pēdējo projektu.