Sobes.tech

Golang

Ai experiență în suportul sau dezvoltarea sistemelor distribuite?

183

Povestește despre bazele de date — cu ce ai lucrat și cu ce lucrezi acum?

182

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)?

181

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) } }

181

Care a fost numărul maxim de solicitări pe secundă pe cel mai încărcat serviciu?

180

Cât de activi sunt căutările? Poate există deja unele oferte?

180

Care a fost cea mai mare cantitate de date cu care ați lucrat în baze de date?

180

Pe câți hosts a funcționat serviciul și câte instanțe au fost lansate?

180

Ai folosit cloud-uri publice? Dacă da, cu ce furnizori și servicii?

179

Povestește-mi mai detaliat despre primul tău loc de muncă din 2019 până în 2021.

178

Câte persoane au fost implicate în cel mai mare proiect la care ai lucrat? Mai puțin de zece, zeci, sute?

178

Există modalități mai simple și mai rapide de a echilibra sarcina în loc să alegi backend-ul cel mai puțin încărcat?

177

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?

177

Găsiți erorile de sintaxă în codul corectat

177

Cum să verifici rapid dacă în fereastră sunt toate caracterele (compararea a două hărți)?

176

/** :-))) :-(( "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) }

176

De ce mesajele din Message Service merg direct prin gRPC, în loc de Kafka?

176

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

175

Se poate face memorie constantă fără a elimina harta?

174

""" 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 { }

174
/11