Sobes.tech

Golang

Kokius veiklos rodiklius naudojote savo darbo įvertinimui paskutiniame projekte?

Junior — Middle
240

/* 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 }

240

Kuo skiriasi L4 ir L7 apkrovos paskirstytojas?

239

func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) n := len(s) for right := 0; right < n; right++ { hm[s[right]]++ for hm[s[right]] > 1 { hm[s[left]]-- if hm[s[left]] == 0 { delete(hm, s[left]) } left++ } result += (right - left + 1) } return result }

238

""" Kinijos vietos yra išdėstytos vienoje eilėje. Naujas žiūrovas pasirenka vietą, kad sėdėtų kuo toliau nuo kitų žiūrovų eilėje. Kitaip tariant, atstumas nuo tos vietos, į kurią jis sės, iki artimiausio žiūrovo turi būti maksimalus. Yra garantuojama, kad visada yra laisvų vietų eilėje ir kad jau sėdi bent vienas žiūrovas. Parašykite funkciją, kuri pagal duotą vietų eilę (masyvą iš nulinių ir vienetinių reikšmių) grąžins atstumą (erdvės skaičių tarp sėdynių) nuo pasirinktos vietos iki artimiausio žiūrovo. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }

237

""" Kino salės vietos išdėstytos vienoje eilėje. Naujas žiūrovas ką tik atvyksta ir pasirenka vietą, kad sėdėtų kuo toliau nuo kitų žiūrovų eilėje. Kitaip tariant, atstumas nuo tos vietos, iki artimiausio žiūrovo, turi būti maksimalus. Garantuojama, kad visada yra laisvų vietų ir jau sėdi bent vienas žiūrovas. Parašykite funkciją, kuri, duodama vietų eilę (masyvą iš nulio ir vieno), grąžins atstumą (erdvės skaičių tarp sėdynių) nuo pasirinktos vietos iki artimiausio žiūrovo. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """

237

/* * Duotas sveikųjų skaičių masyvas ir skaičius X, * reikia rasti ilgiausią ne tuščią poskyrį, kurio minimumas yra X. * Grąžinkite tokio poskyria ilgį arba -1, jei tokio nėra. */

236

Kuo skiriasi paslauga nuo naudojimo atvejo sluoksnių architektūroje? Pateikite konkrečius pavyzdžius.

234

Kokį projektą pasirinkti techniniam pokalbiui ir kaip jį aprašyti?

234

Kaip nustatomas laikas, reikalingas elemento pridėjimo operacijai pagal raktą duomenų struktūroje Map?

Junior — Middle
233

Kaip vizualiai ar algoritmiškai nustatyti, kad elementas yra unikalus Map duomenų struktūroje?

Junior — Middle
231

Koks buvo užklausų per sekundę rodiklis įrašant duomenis?

Junior — Middle
230

Kodėl reikalingi du if patikrinimai (79 eilutėje ir eilutėje su len(buf)==MaxItems), o ne vienas?

226

// Duotos sutvarkytos eilės sveikųjų skaičių didėjimo tvarka. // Reikia grąžinti visas pirmos eilės elementus, kurių nėra antroje. // 0 <= N <= 10^6 // -10^9 <= a[i] <= 10^9 // [1] // [2, 3, 4, 5, 6] // [1] // [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...] // [1] // [2, 3, 4, 5, 6, 7, 8] func filter(first []int, second []int) []int { res := make([]int, 0, len(first)) i, j := 0, 0 for i < len(first) && j < len(second) { if first[i] < second[j] { result = append(result, first[i]) i++ } else if first[i] > second[j] { j++ } else { i++ j++ } } for i < len(first) { result = append(result, first[i]) i++ } return result }

224

Papaskinkite apie sudėtingiausią ir įdomiausią užduotį, kurią sprendėte, ypač architektūros patirties kontekste.

223

Ar šiuo metu gyvenate Maskvoje? Kokią miestą svarstote? Ar svarstote hibridinį darbo formatą? Kokiame paieškos etape esate?

223

// Dviem sveikųjų skaičių masyvų, kurių ilgis N, // visiems K nuo 1 iki N, suskaičiuokite bendrų skaičių skaičių prefiksuose, kurių ilgis K. // Skaičiai masyve gali kartotis, sankirta skaičiuojama be daugybos. // Prefiksas, kurio ilgis K, yra pirmieji K masyvo A elementai // A [1, 1] => [1], [1, 1] // B [1, 1] => [1], [1, 1] // R [1, 1] // [1, 2, 5] => [1], [1, 2], [1, 2, 5] // [1, 5, 4] => [1], [1, 5], [1, 5, 4] // [1, 1, 2]

222

Kaip judėti langą slankiojo lango algoritme?

221

Kaip šios metrikos yra integruojamos ir rodomos Grafanoje?

Junior — Middle
221

Ar turite kitus aktyvius pokalbių procesus?

220
/11