Kas kasutate avalikke pilvemooduleid? Kui jah, siis milliste teenusepakkujate ja teenustega?
Golang
Kas teil on kogemusi jaotatud süsteemide toetamisel või arendamisel?
tüüp Response liides {} tüüp Backend liides { Invoke(ctx: kontekst, req: Request): Response, error } var _ Backend = &BackendImpl{} // addr näitab konkreetse näite ip:port aadressi func NewBackend(addr: string) *BackendImpl tüüp Balancer struktuur { // TODO backends []*BackendImpl index int mu sync.Mutex } var _ Backend = &Balancer{} func (b: *Balancer) Invoke(ctx: kontekst, req: Request) (Response, error) { kui len(b.backends) == 0 { tagasta nil, fmt.Errorf("Backends massiivis on 0 elementi") } b.mu.Lock() index := b.index kui b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) tagasta resp, err } // addrs sisaldab kõiki tasakaalustatud näidete aadresse func NewBalancer(addrs: []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs))
Kuidas te töötate arhitektuuriga — kas meeskonnas on arhitekt, platvorm, komisjon?
Kui kiiresti töötab lineaarne otsing kõigi backendide puhul kõrge RPS (näiteks 30 000 RPS ja 10 backendi)?
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 in slice count 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 contain all the addresses of the balanced instances func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }
Kui paljudes hostides töötas teenus ja kui palju eksemplare käivitati?
Mis oli suurim andmemahuti, millega olete andmebaasides töötanud?
Räägi mulle rohkem oma esimesest töökohast aastatel 2019–2021.
Kuidas kiiresti kontrollida, kas aknas on kõik sümbolid (kahe kaardi võrdlus)?
Kui aktiivsed otsingud on? Võib-olla on juba mõned pakkumised?
Kas on lihtsamad ja kiirem viis koormuse jaotamiseks, kui valida kõige vähem koormatud backend?
/** :-))) :-(( "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) }
Kui palju inimesi osales kõige suuremal projektis, millel oled töötanud? Vähem kui kümme, kümned, sajad?
Leidke süntaksiveadid parandatud koodis
Kuidas lahendada paralleelsete päringute piirangu probleem jaotatud süsteemis, kus on mitu instantsi, kui kasutaja peab ootama, mitte saama vea?
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 }
Miks Message Service sõnumid lähevad otse gRPC kaudu, mitte Kafka kaudu?
Rakenda BulkCreateUsers meetodit vastavalt proto-failile: loo projekti struktuur, äriloogika, hoidla ja SQL-päringud SOLID põhimõtete järgimisega
""" Kinodes asuvad kohad ühel real. Uus vaataja valib koha, soovides istuda võimalikult kaugel teistest vaatajatest real. Teisisõnu, selle koha, kuhu ta istub, ja lähima vaataja vaheline kaugus peaks olema maksimaalne. Garanteeritakse, et real on alati vabad kohad ja et juba istub vähemalt üks vaataja. Kirjutage funktsioon, mis, võttes arvesse antud kohtade rida (nullide ja ühtede massiiv), tagastab kauguse (vahede arv istmete vahel) valitud kohast lähima vaatajani. [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] -> 3 [1, 0, 0, 0] -> 3 place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }