Naudojote Inbox ir Outbox šablonus?
Golang
Užduotis: «Timeout su ping-pong» Parašykite funkciją pingPong, kuri: - Paleidžia dvi gorutinas: viena generuoja pranešimus "ping", kita — "pong". - Gorutinos turi keistis pranešimais griežtai paeiliui per bendrą kanalą. - Keitimasis tęsiasi 3 sekundes, po to programa turi baigtis (sklandus uždarymas). - Naudokite kontekstą su laiko limitu atšaukimui. - Kiekvieną pranešimą išveskite ekrane kartu su laiku (milisekundėmis nuo pradžios). Laukiamas išėjimas pavyzdys: 0ms: ping
Paprastas tiesioginio kodavimo uždavinys (pagrindinė konkurencija) Sąlyga: Parašykite funkciją fetchAll(urls []string) map[string]string, kuri kiekvienam URL vykdo konkuruojantį HTTP GET užklausą ir grąžina žemėlapį, kur raktas yra URL, o reikšmė – atsakymo turinys (eilutė). Jei užklausa nepavyksta (klaida, ne 200), reikšmė bus tuščia eilutė. Apribojimai: - Negalima naudoti išorinių bibliotekų (tik standartinės). - Negalima keisti parašo. - Programa neturėtų kristi panikos atveju http.Get. Įvesties pavyzdys: ["[link]" "[link]" "[link]"]
pagrindinis paketas 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 buvo saugomi žurnalai?
Ką pasakyti interviuotojui (jei paklaus) "Aš naudociau worker pool su fiksuotu darbuotojų skaičiumi, užduočių kanalą ir sync.WaitGroup. Darbuotojai vykdys užklausas, o laiko limitas ir atšaukimas bus kontroliuojami per kontekstą. Rezultatus surinksiu į buferį, apsaugotą mutex (arba per atskirą kanalą)." Dabar tavo eilė Rašyk kodą šiame pokalbyje. Aš jį patikrinsiu ir duosiu atsiliepimų. Jei nežinai nuo ko pradėti, paprašyk patarimo. Sėkmės!
Kaip užtikrino idempotenciją?
// visi slice elementai turi būti unikalūs + iš viso turi būti 1000 elementų // programa neturi užstrigti dėl 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("dublikatinis padidėjimas") } checkIncrement[i] = 1 }() } time.Sleep(2 * time.Second) fmt.Println(len(data)) }
Kas yra pointer ir kas nutiks, jei funkcijos argumentas yra pointer?
Užpildykite slice be mutex elementais, kad turėtų visus 1000 elementų.
Pasakok apie užraktus Postgres.
Kuo skiriasi DELETE nuo TRUNCATE?
Ar girdėjote apie paskirstytą sekimą?
Kaip naudojote Redis?
Papaskink apie savo paskutinį projektą.