Golang
Kokius komandas paprastai naudojate Linux operacinėje sistemoje?
Kokius požiūrius galima naudoti siekiant užtikrinti sriegių saugumą dirbant su slices daugiagijame aplinkoje?
Kokios operacijos yra leidžiamos dirbant su nil slice programavimo kalboje?
Kokias sistemų projektavimo metodikas teiki pirmenybę kuriant sprendimus?
Papaskokite apie sudėtingą užduotį, kurią pavyko išspręsti rašant scenarijų Linux sistemai
Kaip galima reguliuoti duomenų kiekį, saugomą talpykloje?
Pasirengimas būti vieninteliu Backend specialistu komandoje
Kokia yra pagrindinė priežastis naudoti sync.Map tipą Go?
Kokios yra geros praktikos ir antipatterns vienetiniuose testuose? Kaip suprasti, kad testai yra geri?
func Exclude(a, b []int) []int { set := make(map[int]struct{}) for _, v := range b { set[v] = struct{}{} } result := make([]int, 0) for _, v := range a { if _, ok := set[v]; !ok { result = append(result, v) } } return result } Klaida kompilacijoje # command-line-arguments ./main.go:39:32: sintaksės klaida: netikėtas naujas eilutė, tikėtasi { po if sąlygos
Ar kada nors susidūrėte su sunkumais įgyvendinant sąveikas tarp skirtingų paslaugų?
Kaip perduodamas skiltis (slice) į funkciją programavimo kalboje?
Kas yra Saga modelis?
Kodėl nepaėmė Testcontainers?
/* Mums reikia perduoti duomenis iš tam tikro šaltinio tam tikram vartotojui. Šaltinis teikia duomenis mažais paketais (~ dešimtys įrašų), o vartotojas efektyviau dirba su didesniais paketais. Realus pavyzdys - duomenų tiekimas iš Kafka tipo eilių į Clickhouse duomenų bazę. Šaltinis: - Sąlyginai begalinis. - Šaltinis niekada negrąžins daugiau nei MaxItems įrašų vienu Next iškvietimu. - Vienoje "sesijoje" (vieno Pipe funkcijos iškvietimo) šaltinis kiekvieną kartą grąžina naujus duomenis. - Tačiau, po perkrovimo, šaltinis pradės nuo ankstesnės "patvirtintos" pozicijos, nurodytos cookie. Todėl, *kiekviena* cookie reikšmė, kurią grąžino Next, po duomenų išsaugojimo gavėjui, turi būti patvirtinta Commit, ir tai turi būti atlikta griežtai tokia pačia seka, kaip ir grąžinta. Gavėjas: - Negali apdoroti daugiau nei MaxItems vienu metu. Pagrindinis lygis: Reikia įgyvendinti funkciją func Pipe(p Producer, c Consumer) error, kuri skaito duomenis iš šaltinio, juos grupuoja į buferį, kurio dydis ne didesnis kaip MaxItems, ir saugo gavėjui, po to patvirtina pažangą šaltinyje. */ const MaxItems = 9999 type Producer interface { // Next grąžina: // - duomenų paketą // - cookie patvirtinimui // - klaidą Next() (items []any, cookie int, err error) // Commit žymi, kad duomenų paketas apdorotas Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }
Ar lentelė su (id PRIMARY KEY, data JSON) yra pakankamai gera PostgreSQL indeksas paieškai pagal raktą?
Kuo skiriasi virtualizacija nuo konteinerizacijos?
Ar galima įterpti dar vieną kodo bloką su skliaustais esamos funkcijos viduje?
Kaip apibrėžėte ir suformulavote užduotis savo ankstesnėje pozicijoje?
Kaip galutinis kodas buvo įdiegta į gamybos aplinką jūsų paskutiniame projekte?