Ai experiență în suportul sau dezvoltarea sistemelor distribuite?
Golang
Povestește despre bazele de date — cu ce ai lucrat și cu ce lucrezi acum?
Cât de rapid va funcționa o căutare liniară a tuturor backend-urilor la un RPS ridicat (de exemplu, 30.000 RPS și 10 backend-uri)?
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("Numărul de backends în 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 conțin adresele tuturor instanțelor echilibrate func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }
Care a fost numărul maxim de solicitări pe secundă pe cel mai încărcat serviciu?
Cât de activi sunt căutările? Poate există deja unele oferte?
Care a fost cea mai mare cantitate de date cu care ați lucrat în baze de date?
Pe câți hosts a funcționat serviciul și câte instanțe au fost lansate?
Ai folosit cloud-uri publice? Dacă da, cu ce furnizori și servicii?
Povestește-mi mai detaliat despre primul tău loc de muncă din 2019 până în 2021.
Câte persoane au fost implicate în cel mai mare proiect la care ai lucrat? Mai puțin de zece, zeci, sute?
Există modalități mai simple și mai rapide de a echilibra sarcina în loc să alegi backend-ul cel mai puțin încărcat?
Cum se rezolvă problema limitării cererilor paralele într-un sistem distribuit cu mai multe instanțe, dacă utilizatorul trebuie să aștepte în loc să primească o eroare?
Găsiți erorile de sintaxă în codul corectat
Cum să verifici rapid dacă în fereastră sunt toate caracterele (compararea a două hărți)?
/** :-))) :-(( "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) }
De ce mesajele din Message Service merg direct prin gRPC, în loc de Kafka?
Implementați metoda BulkCreateUsers pe baza fișierului proto: creați structura proiectului, logica de afaceri, depozitul și interogările SQL respectând principiile SOLID
Se poate face memorie constantă fără a elimina harta?
""" Locurile din cinematograf sunt aranjate într-un singur rând. Un spectator care tocmai a sosit alege un loc, pentru a sta cât mai departe de ceilalți spectatori din rând. Adică, distanța de la locul respectiv, pe care îl va ocupa, până la cel mai apropiat spectator trebuie să fie maximă. Se garantează că în rând există întotdeauna locuri libere și că deja există cel puțin un spectator așezat. Scrieți o funcție care, dat fiind un rând de locuri (un array de zerouri și unu), să returneze distanța (numărul de spații între scaune) de la locul ales până la cel mai apropiat spectator. [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 { }