Sobes.tech

Golang

Да ли сада радите или не, и у ком формату: офис, хибрид, удаљен?

246

Koja je složenost algoritma po vremenu i memoriji?

244

/* Потребно је пренети податке из извора одређеном потрошачу. При томе извор испоручује податке у малим пакетићима (~ десетине записа), а потрошач ради ефикасније са већим батчевима. Реалан пример - испорука података из редова типа Kafka у базу података Clickhouse. Извор: - Условно бесконачан. - Извор никада не враћа више од MaxItems записа у једном позиву Next. - У оквиру једне "сесије" (једног позива функције Pipe), извор сваки пут враћа нове податке за сваки позив Next. - Међутим, након поновног покретања, извор почиње од претходне "потврђене" позиције, одређене cookie-јем. Стога, *свака* вредност cookie-а коју је вратио позив Next, након чувања података у примаоцу, мора бити фиксирана позивом Commit, и то строго у истом редоследу у којем су враћени од стране Next. Прималац: - Не може обрадити више од MaxItems у једном кораку. Основни ниво: Потребно је реализовати функцију func Pipe(p Producer, c Consumer) error која чита податке из извора, групише их у буфер величине не већој од MaxItems и чува у примаоца, након чега фиксира напредак у извору. */ const MaxItems = 9999 type Producer interface { // Next враћа: // - пакет ставки за обраду // - cookie за потврду када је обрада завршена // - грешку Next() (items []any, cookie int, err error) // Commit се користи за означавање пакета података као обрађеног 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

Koje pokazatelje efikasnosti ste koristili pri oceni rada u poslednjem projektu?

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

Koje imate iskustvo u implementaciji i konfiguraciji sistema za autentifikaciju i autorizaciju?

Junior — Middle
240

Koja je razlika između L4 i L7 balansera opterećenja?

239

""" Места у кинотеатра расположени у једном реду. Нови гледалац бира место, да седи што даље од осталих гледалаца у реду. То јест, растојање од тог места, куда ће седети, до најближе гледаоца треба да буде максимално. Гарантовано је да увек постоје слободна места у реду и да већ седи бар један гледалац. Напишите функцију која, на основу датог реда места (низ нула и јединица), враћа растојање (број размаклица између седишта) од изабраного места до најближе гледаоца. [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

""" Места у биоскопу су распоређена у једном реду. Нови гледалац који је управо стигао бира место, да седи што даље од осталих гледалаца у реду. То јест, растојање од тог места, до најближе гледаоца, треба да буде максимално. Гарантовано је да увек постоје слободна места и да већ седи бар један гледалац. Напишите функцију која, датом редом места (массив нула и јединица), враћа растојање (број интервала између седишта) од изабраного места до најближег гледаоца. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """

238

/* * Дан је низ целих бројева и број X, * потребно је пронаћи најдужи непразан подсклоп који има минимално вредност X. * Вратите дужину тог подсклопа или -1 ако таквих нема. */

236

Koji projekat odabrati za tehnički intervju i kako ga opisati?

234

Kako se određuje vreme izvršavanja operacije dodavanja elementa po ključeve u strukturu podataka Map?

Junior — Middle
233

Kako vizuelno ili algoritamski odrediti da je element jedinstven u strukturi podataka Map?

Junior — Middle
231

Koji je pokazatelj zahteva po sekundi dostignut prilikom zapisivanja podataka?

Junior — Middle
230

// Za dva niza celih brojeva dužine N, // za sve K od 1 do N, prebrojajte broj zajedničkih brojeva u prefiksima dužine K. // Brojevi u nizu mogu se ponavljati, preseci se računa bez obzira na multiplikacije. // Prefiks dužine K niza A su prvih K elemenata niza A // 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

Zašto su potrebne dve provere if (na liniji 79 i na liniji sa len(buf)==MaxItems), umesto jedne?

228

[ime] je naveo: na liniji 20, uniq ne sadrži broj jedinstvenih karaktera, već nešto drugo. Šta tačno?

227

// Дані сукупності відсортовані за зростанням цілі числа. // Необхідно повернути всі елементи з першої сукупності, яких немає у другій. // 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

Ispričajte nam o najtežem i najzanimljivijem zadatku koji ste riješili, posebno o arhitektonskom iskustvu.

225

Kako pomeriti prozor u algoritmu kliznog prozora?

225
/11