Sobes.tech

Golang

Ce poziție iei în considerare acum pentru tine, ce ar fi interesant?

193

Ce este grooming-ul și în ce constă diferența față de planificare?

193

Ce format de lucru luați în considerare?

192

Cum compari elementele dintr-o hartă? Cum verifici dacă două hărți sunt identice?

191

Care sunt așteptările tale financiare?

190

/* Există o aplicație cu arhitectură de microservicii. Un microserviciu poate fi abstractizat folosind interfața Backend. Pentru a accesa o instanță de microserviciu, se poate folosi tipul BackendImpl, care este deja implementat. Pentru fiecare microserviciu, există câzeci de instanțe în execuție, fiecare accesibilă prin adresa sa addr. Cu toate acestea, instanțele individuale ale microserviciului nu sunt fiabile: pot cădea, pot fi indisponibile sau suprasolicitate. De aceea, trebuie să implementați tipul Balancer, care de asemenea implementează interfața Backend și realizează echilibrare a încărcării pe partea clientului între instanțele microserviciului, alegând de fiecare dată instanța **cu cea mai mică încărcare**. */ type Request interface{} type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr conține ip:portul unei instanțe specifice func NewBackend(addr string) *BackendImpl type Balancer struct { //TODO } var _ Backend = &Balancer{} // addrs conține adresele tuturor instanțelor echilibrate func NewBalancer(addrs []string) *Balancer { //TODO }

188

Care este limitarea unui semafor și a unui canal cu buffer ca soluții pentru limitarea solicitărilor paralele?

188

Ce știți despre programul MultiTrack al Yandex?

185

tip Response interfață {} tip Backend interfață { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr conține ip:port al unei instanțe specifice func NewBackend(addr string) *BackendImpl tip Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { dacă len(b.backends) == 0 { return nil, fmt.Errorf("Numărul de backends în slice este 0") } b.mu.Lock() index := b.index dacă 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 conține adresele tuturor instanțelor echilibrate func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs))

185

Cum ai integrat LLM într-un proiect cu datorii de primit? Spune în general.

185

/** :-))) :-(( "ab :-)" = "ab " "ab :-)))" = "ab " "ab :-)))(" = "ab (" "ab ):-)" = "ab )" ":-)" = "" **/ func deleteP(str string) string { }

184

Sarcină: există un serviciu cu o restricție de 5 solicitări paralele către LLM. La a 6-a solicitare, se primește un 429. Cum se rezolvă această problemă conceptual?

183

Cum apare o funcție și ajunge până la vânzare: planificare, dezvoltare, teste, revizuire de cod, implementare, rollback?

183

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

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

181

/* Se dă un șir de caractere. Găsiți numărul de perechi de indici i și j (i <= j), între care nu există caractere repetate. Pentru șirul "aba", răspunsul este 5: pot fi ASCII [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */

181

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

Cum ați efectuat testarea și verificarea corectitudinii cererilor efectuate?

Junior — Middle
181

Cum verifică JWT autenticitatea sa? Cum se asigură că token-ul nu a fost falsificat?

180
/11