Sobes.tech

Golang

Cu ce baze de date lucrezi? Care a fost volumul maxim de date stocate?

157

Poți să povestești pe scurt despre experiența ta? Care este limbajul principal de programare pe care îl folosești? Câți ani de experiență ai în dezvoltarea industrială?

157

De ce ați decis să folosiți LLM în loc de logică simplă în cod?

157

Care este avantajul JWT față de stocarea sesiunilor pe server?

156

/* Există o aplicație cu arhitectură de microservicii. Un microserviciu poate fi abstractizat prin intermediul unei interfețe Backend. Pentru a accesa o instanță de microserviciu, se poate folosi tipul BackendImpl, care este deja implementat. Fiecare microserviciu are câteva zeci de instanțe în execuție, fiecare accesibilă prin propria adresă addr. Cu toate acestea, instanțele individuale ale microserviciului nu sunt fiabile: pot cădea, fi inaccesibile sau suprasolicitate. De aceea, trebuie să implementați un tip Balancer, care de asemenea implementează interfața Backend și realizează echilibrarea încărcăturii pe partea clientului între instanțele microserviciului, alegând de fiecare dată **cea mai puțin încărcată** instanță.

155

Care este limbajul principal de programare pe care îl folosești? Folosești C++ sau Python?

153

func Pipe(p Producător, c Consumator) error { // TODO buf := make([]any, 0, MaxItems) cookies := make([]int, 0) flush := func() error { if len(buf) == 0 { return nil } if err := c.Process(buf); err != nil { return err } for _, cookie := range cookies { if err := p.Commit(cookie); err != nil { return err } } buf = buf[:0] cookies = cookies[:0] return nil } for { items, cookie, err := p.Next() if err != nil { flush() return err }

153

Câtă memorie este alocată inițial pentru buffer?

153

De ce a fost făcută apelarea la backend.Invoke în afara mutex-ului?

152

Balancerul trebuie să înțeleagă că backend-ul răspunde cu erori, și depășind un prag pentru o anumită perioadă, să îl excludă din echilibrare (Circuit Breaker)

150

Ce se întâmplă dacă Consumer.Process returnează o eroare — datele din buffer nu vor fi pierdute?

150

Dat fiind o șir S, trebuie să numărăm numărul de subșiruri din acest șir care conțin toate caracterele din acest șir cel puțin o dată. Exemple: "abca" -> 3 // abc, bca, abca "aa" -> 3 // aa, a, a, "ffg" -> 2 // ffg, fg

149

Care este numărul maxim de solicitări pe secundă pe care îl puteți gestiona în prezent sub o încărcare mare?

147

Ce limbaje de programare, în afară de Go, folosiți pentru dvs. sau în dezvoltarea comercială?

147

În ce limbaj de programare lucrați? De ce au apărut dificultăți cu sintaxa?

143

Aceasta este o secvență de caractere. Găsiți numărul de perechi de indici i și j (i <= j), între care, inclusiv, nu există caractere repetate. Pentru șirul "aba" răspunsul este 5: [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") Pentru șirul "acbb" răspunsul este ?:

143

// TODO backends []*BackendImpl index int mu sync.Mutex func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { b.mu.Lock() index := b.index if b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) b.mu.Lock() defer b.mu.Unlock() b.index += 1 return resp, err } // addr conține ip:port al unei instanțe specifice func NewBackend(addr string) *BackendImpl // addrs conțin adresele tuturor instanțelor balansate func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs)) for _, addr := range addrs { backends = append(backends, NewBackend(addr)) } return &Balancer{ backends: backends, } }

142

Ești dispus să treci la un alt limbaj de programare, dacă este necesar sau din dorință personală?

142

Ce criterii vei folosi pentru a alege un angajator? Ce este cel mai important pentru tine?

141
/11