Golang
Koje komande obično koristiš u operativnom sistemu Linux?
Koji pristupi se mogu koristiti za obezbeđivanje sigurnosti niti prilikom rada sa slice-ovima u višestrukom okruženju?
Koje operacije su dozvoljene pri radu sa nil slice-om u programskom jeziku?
Koje metodologije projektovanja sistema preferiraš prilikom kreiranja rešenja?
Ispričajte o teškom zadatku koji ste uspjeli riješiti pisanjem skripte za Linux sistem
Kako regulisati količinu podataka koji se čuvaju u keš memoriji?
Spremnost da preuzmete ulogu jedinog Backend stručnjaka u timu
Koji je glavni razlog za korišćenje tipa sync.Map u Go?
Koje su dobre prakse i antipatterns u jedinićnim testovima? Kako prepoznati da su testovi dobri?
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 } Грешка при компилацији # command-line-arguments ./main.go:39:32: грешка у синтакси: неочекивани нови ред, очекивао { након if клаузуле
Да ли сте икада имали потешкоћа у имплементацији интеракција између различитих сервиса?
Kako se prenosi rez (slice) u funkciju u programskom jeziku?
Šta je Saga obrazac?
Zašto nisu uzeli Testcontainers?
/* Потребно је пренети податке из извора одређеном потрошачу. При томе извор испоручује податке у малим пакетићима (~ десетине записа), а потрошач ради ефикасније са већим батчевима. Реалан пример - испорука података из редова типа 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 }
Da li je tabela sa (id PRIMARY KEY, data JSON) prilično dobar indeks u PostgreSQL za pretraživanje po ključevi?
Čime se razlikuje virtualizacija od kontejnerizacije?
Може ли да се убаци још један блок кода са фигурним заградама унутар постојеће функције?
Kako ste definisali i formulisali zadatke na vašoj prethodnoj poziciji?
Kako je finalni kod implementiran u produkciono okruženje u vašem poslednjem projektu?