Sobes.tech

Golang

Mida vahemällu salvestas? Mõned kataloogid?

Senior
МВидео/эльдорадо
166

/* Meilės 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. Reali 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 metu) š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 }

Middle
Яндекс
166

Kas saaksite loetleda ettevõtteid või tarnijaid, kellega olete kokku puutunud?

Junior — Middle
166

Rääkige oma viimatisest töökohast: millega tegeledes, millist tehnoloogiat kasutades, millised olid keerulised ülesanded?

Middle
OZONOZON
166

Mis on slice Go keeles?

Middle
Бюро 1440Бюро 1440
166

Kas saaksite loetleda gRPC-s kasutatavate peamisi kõne tüüpe?

Junior — Middle
СБЕР дейвайсыСБЕР дейвайсы
166

Kas on lubatud saada teavet kanalilt, millel on seatud suletud režiim?

Junior — Middle
ГазпромГазпром
X5 groupX5 group
AvitoAvito
+1
166

Kas on võimalik kirjutada otse Kafka kindlasse partitsiooni, vältides hashimiseks kasutatavat võtit?

Junior — Middle
Самокат Тех
166

Kas saaksite selgitada andmestruktuuri, näiteks nimekirja või massiivi, lõppu elementide lisamise mehhanismi?

Junior — Middle
Lamoda Tech
Startribe
Самокат Тех
+2
166

Millised andmed ja kuidas neid paigutatakse virna programmi täitmisel?

Junior — Middle
166

Milliseid vahemälu meetodeid eelistate oma projektides kasutada ja miks?

Junior — Middle
166

Mis vahe on materialiseerunud vaate ja tavalise vaate vahel?

Middle
RWB
165

Millised komponendid kuuluvad seotud nimekirja struktuuri?

Junior — Middle
165

Kuidas määratakse Map andmestruktuuris võtme järgi elemendi lisamise operatsiooni täitmise aeg?

Junior — Middle
ЯндексЯндекс
165

Miks on tavaliselt niitide algne virna suurus seatud 2 MB-ks?

Junior — Middle
165

Kas olete kunagi kasutanud ErrGroup struktuuri oma projektides paralleelsete ülesannete haldamiseks?

Junior — Middle
165

Milliseid ebatavalisi või mitte-standardsed pakette olete oma praktikas kasutanud?

Junior — Middle
165

Miks viilu kasv aeglustub ja miks seda ei saa pidevalt kahekordistada?

Middle
RWB
165

Kus toimuvad käskude käivitamine GitLab CI/CD tööprotsessi ajal?

Junior — Middle
165

Millised võivad olla tagajärjed, kui tarkvaraarenduses ei järgita SOLID põhimõtteid?

Junior — Middle
Zonatelecom
165
/413