Koji je bio vaš najveći projekat baze podataka koji ste morali implementirati ili održavati?
Golang
Na kojim fazama procesa intervjua u raznim organizacijama često postavljaju ovo pitanje?
Kako se vrše upiti na bazu podataka PostgreSQL?
Можете ли да објасните принцип функционисања gRPC и његове главне особине?
Koliko zahteva za zapis po sekundi je dolazilo do podataka?
На којикoј количини инстанци/контейнера је радио сервис?
U kojem sloju se postavljaju klijenti za spoljne usluge i sisteme?
Koje imate iskustvo u razvoju aplikacija koje koriste višestruko niti i paralelne proračune?
По којом принципу треба смањивати или повећавати бројач have?
Можеш ли да се оријентишеш у хостовима? Колико хостова, колико контејнера се покреће?
Koji je bio najduži projekat na kojem ste radili?
Kako se vrši povezivanje i prikaz podataka u Grafani?
func maxPlaces(arr []int) int { maxDistance := 0 prev, first := -1, -1 for i := 0; i < len(arr); i++ { if arr[i] == 1 { if first == -1 { first = i maxDistance = max(maxDistance, i) } else { maxDistance = max(maxDistance, (i - prev) / 2) } prev = i } } maxDistance = max(maxDistance, len(arr) - 1 - prev) return maxDistance }
""" Места у биоскопу су распоређена у једном реду. Нови гледалац који је управо стигао бира место, да седи што даље од осталих гледалаца у реду. То јест, растојање од тог места, до најближе гледаоца, треба да буде максимално. Гарантовано је да увек постоје слободна места и да већ седи бар један гледалац. Напишите функцију која, датом редом места (массив нула и јединица), враћа растојање (број интервала између седишта) од изабраного места до најближег гледаоца. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 """
Kako vizuelno ili algoritamski odrediti da je element jedinstven u strukturi podataka Map?
Kako organizovati arhitekturu za zahtev koji izvršava poslovnu logiku, poziva spoljašnji servis (Google) i čuva rezultat u bazi podataka? Opisati slojevito od vrha prema dnu.
/* Потребно је пренети податке из извора одређеном потрошачу. При томе извор испоручује податке у малим пакетићима (~ десетине записа), а потрошач ради ефикасније са већим батчевима. Реалан пример - испорука података из редова типа 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 }
Koje pokazatelje efikasnosti ste koristili pri oceni rada u poslednjem projektu?
Да ли сада радите или не, и у ком формату: офис, хибрид, удаљен?
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 }