Sobes.tech

Golang

/* Dani je niz znakova. Nađite broj parova indeksa i i j (i <= j), između kojih nema ponovljenih znakova. Za niz "aba" odgovor je 5: mogu biti ASCII [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */

187

Máte skúsenosti s podporou alebo vývojom distribuovaných systémov?

185

Použili ste verejné cloudové služby? Ak áno, s ktorými poskytovateľmi a službami?

185

Ako pracujete na architektúre — je v tíme architekt, platforma, výbor?

184

Ako rýchlo bude fungovať lineárne prehľadávanie všetkých backendov pri vysokom RPS (napríklad 30 000 RPS a 10 backendov)?

183

Ako rýchlo skontrolovať, či sú v okne všetky znaky (porovnanie dvoch máp)?

182

type Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex N int K time.Duration } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { if len(b.backends) == 0 { return nil, fmt.Errorf("Počet backends v slice 0") } b.mu.Lock() index := b.index for b.backends[index].banned { b.index = (b.index + 1) % len(b.backends) index = b.index } b.index = (b.index + 1) % len(b.backends) b.mu.Unlock() backend := b.backends[index] resp, err := backend.Backend.Invoke(ctx, req) if err != nil && backend.countErrors < b.N { backend.mu.Lock() backend.countErrors += 1 if backend.countErrors == b.N { backend.banned = true go func() { time.Sleep(b.K) backend.mu.Lock() defer backend.mu.Unlock() backend.banned = false backend.countErrors = 0 }() } backend.mu.Unlock() } return resp, err } // addrs съдържат адресите на всички балансирани инстанции func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }

181

Aký bol najväčší objem údajov, s ktorým ste pracovali v databázach?

180

Na koľkých hostiteľoch bežal servis a koľko inštancií sa spustilo?

180

/** :-))) :-(( "ab :-)" = "ab " "ab :-)))" = "ab " "ab :-)))(" = "ab (" "ab ):-)" = "ab )" ":-)" = "" **/ func deleteP(str string) string { n := len(str) res := make([]byte, 0, n) i := 0 for i < n { if str[i] == ':' && str[i+1] == '-' && (str[i+2] == ')' || str[i+2] == '(') { ch := str[i+2] i += 2 for i < n && str[i] == ch { i++ } } else { res = append(res, str[i]) } } return string(res) }

180

Ako sú aktívne vyhľadávania? Možno už existujú nejaké ponuky?

180

Povedz mi viac o svojom prvom mieste práce od 2019 do 2021.

180

Existujú jednoduchšie a rýchlejšie spôsoby vyváženia záťaže namiesto výberu najmene zaťaženého backendu?

179

Koľko ľudí sa zúčastnilo na najväčšom projekte, na ktorom ste pracovali? Menej ako desať, desiatky, státisíce?

178

Ako riešiť problém obmedzenia paralelných požiadaviek v distribuovanom systéme s viacerými inštanciami, ak používateľ musí čakať namiesto toho, aby dostal chybu?

177

Nájdite syntaktické chyby v opravenom kóde

177

Pre API Gateway jeden Load Balancer, pre WebSocket iný — celkovo dva LB v systéme?

177

Prečo správy z Message Service idú priamo cez gRPC, nie cez Kafka?

176

func countSubs(s string) int { result := 0 left := 0 hm := make(map[rune]int) for right := 0; right < len(s); 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 }

176

Implementujte metódu BulkCreateUsers na základe proto súboru: vytvorte štruktúru projektu, biznis logiku, úložisko a SQL dopyty v súlade s princípmi SOLID

175
/11