Sobes.tech

Golang

típus Response interfész {} típus Backend interfész { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr tartalmaz egy adott példány ip:port címét func NewBackend(addr string) *BackendImpl típus Balancer struktúra { // TODO backends []*BackendImpl index int mu sync.Mutex } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { ha len(b.backends) == 0 { return nil, fmt.Errorf("A backends száma a szeletben 0") } b.mu.Lock() index := b.index ha b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) return resp, err } // addrs tartalmazza az összes kiegyensúlyozott példány címét func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs))

187

Mit tud a Yandex MultiTrack programjáról?

187

API Gateway-hez egy Load Balancer, WebSocket-hez egy másik — összesen két LB a rendszerben?

185

Használta nyilvános felhőket? Ha igen, mely szolgáltatókkal és szolgáltatásokkal?

185

Hogyan dolgozik az architektúrán — van-e építész a csapatban, platforma, bizottság?

184

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("Backends száma a slice-ben 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 tartalmazza az összes kiegyensúlyozott példány címét func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }

183

Milyen gyorsan fog működni egy lineáris keresés az összes backenden magas RPS esetén (pl. 30 000 RPS és 10 backend)?

183

Hogyan ellenőrizhetjük gyorsan, hogy az ablakban minden karakter megtalálható-e (két térkép összehasonlítása)?

182

Mennyire aktívak a keresések? Lehet, hogy már vannak ajánlatok?

180

Hány ember vett részt a legnagyobb projektben, amin dolgoztál? Kevesebb mint tíz, tucat, száz?

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

Mesélj részletesebben az első munkahelyedről 2019-től 2021-ig.

180

Mennyi hoszton futott a szolgáltatás, és hány példány indult el?

180

Mekkora volt az eddigi legnagyobb adatmennyiség, amellyel adatbázisokban dolgozott?

180

Vannak egyszerűbb és gyorsabb módszerek a terhelés kiegyensúlyozására, mint a legkevésbé terhelt backend kiválasztása?

179

Miért mennek a Message Service üzenetek közvetlenül a gRPC-n keresztül, nem pedig a Kafka-n keresztül?

178

Hogyan oldja meg a párhuzamos kérések korlátozásának problémáját egy több példányból álló elosztott rendszerben, ha a felhasználónak várnia kell, ahelyett hogy hibát kapna?

177

Keresse meg a szintaktikai hibákat a javított kódban

177

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

Implementáld a BulkCreateUsers módszert a proto fájl alapján: hozd létre a projektstruktúrát, az üzleti logikát, a repository-t és az SQL lekérdezéseket a SOLID elvek betartásával

175
/11