Sobes.tech

Golang

Milliseid programmeerimiskeeli kasutate peale Go?

246

Kui keeruline on algoritm aja ja mälu osas?

244

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

242

Milliseid tulemuslikkuse näitajaid kasutasite oma töö hindamisel viimases projektis?

Junior — Middle
242

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 }

240

Milline on teie kogemus autentimise ja autoriseerimise süsteemide juurutamisel ja seadistamisel?

Junior — Middle
240

Mis vahe on L4 ja L7 koormuse jaoturil?

239

""" Kinoteatri kohad on paigutatud ühte ritta. Uus vaataja valib koha, soovides istuda võimalikult kaugel teistest vaatajatest reas. See tähendab, et kaugus sellest kohast, kuhu ta istub, kuni lähima vaatajani, peaks olema maksimaalne. On tagatud, et reas on alati vabad kohad ja et juba istub vähemalt üks vaataja. Kirjutage funktsioon, mis, lähtudes antud kohtade reas (nullide ja ühtede massiiv), tagastab kauguse (vahede arv istmete vahel) valitud kohast lähima vaatajani. [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 { }

239

""" Kino salona vietas ir izvietotas vienā rindā. Jauns apmeklētājs, kurš tikko ir ieradies, izvēlas vietu, lai sēdētu pēc iespējas tālāk no citiem apmeklētājiem rindā. Tas ir, attālums no šīs vietas, to tuvāko apmeklētāju, ir jābūt maksimālam. Tiek garantēts, ka vienmēr ir brīvas vietas un jau ir sēdējis vismaz viens apmeklētājs. Uzrakstiet funkciju, kas, dodot vietu rindu (masīvu no nullēm un vieniniekiem), atgriezīs attālumu (skaitu starp sēdvietām) no izvēlētās vietas līdz tuvākajam apmeklētājam. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """

238

/* * Antud on täisarvude massiiv ja arv X, * tuleb leida kõige pikem mitte-tühi alamriba, mille miinimum on X. * Tagastage selle alamriba pikkus või -1, kui sellist ei ole. */

236

Millist projekti valida tehnilisele intervjuule ja kuidas seda kirjeldada?

234

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

Junior — Middle
233

Kuidas visuaalselt või algoritmiliselt määrata, et element on unikaalne Map-struktuuris?

Junior — Middle
231

Kui palju taotlusi sekundis saavutati andmete kirjutamisel?

Junior — Middle
230

// Kahe täisarvude massiivi pikkusega N, // kõigi K jaoks vahemikus 1 kuni N, arvutage K pikkuste prefiksites ühiste arvude arv. // Massiivi numbrid võivad korduda, lõike arvutatakse ilma kordust arvestamata. // K pikkune prefiks massiivist A on selle esimeste K elemendi massiiv // 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]

228

Miks on vaja kahte if kontrolli (rida 79 ja rida, kus on len(buf)==MaxItems), mitte ühte?

228

[nimi] märkis: 20. realtabel uniq ei sisalda unikaalsete märkide arvu, vaid midagi muud. Mis täpselt?

227

// On kaks järjestatud järjestust täisarvudest, mis on kasvavas järjekorras. // Tuleb tagastada kõik esimese järjestuse elemendid, mis teises ei ole. // 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 }

226

Rääkige meile kõige keerulisemast ja huvitavamast ülesandest, mille lahendasite, eriti arhitektuurilise kogemuse osas.

225

Kuidas liigutada akent libiseva akna algoritmis?

225
/11