Sobes.tech

Golang

Czy korzystałeś z chmur publicznych? Jeśli tak, to od jakich dostawców i usług?

185

Czy masz doświadczenie w wsparciu lub rozwoju systemów rozproszonych?

185

typ Response interfejs {} typ Backend interfejs { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr zawiera ip:port konkretnego egzemplarza func NewBackend(addr string) *BackendImpl type Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { jeśli len(b.backends) == 0 { return nil, fmt.Errorf("Liczba backendów w slice wynosi 0") } b.mu.Lock() index := b.index jeśli 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 zawiera adresy wszystkich zbalansowanych egzemplarzy func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs))

185

Jak pracujesz nad architekturą — czy w zespole jest architekt, platforma, komisja?

184

Jak szybko będzie działać liniowe przeszukiwanie wszystkich backendów przy wysokim RPS (np. 30 000 RPS i 10 backendów)?

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("Liczba backends w 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 zawierają adresy wszystkich balansowanych instancji 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

Na ilu hostach działała usługa i ile instancji było uruchomionych?

180

Jaka była największa ilość danych, z którą pracowałeś w bazach danych?

180

Opowiedz więcej o swoim pierwszym miejscu pracy od 2019 do 2021 roku.

180

Jak szybko sprawdzić, czy w oknie są wszystkie symbole (porównanie dwóch map)?

180

Jak bardzo są aktywne poszukiwania? Może już są jakieś oferty?

180

Czy istnieją prostsze i szybsze sposoby równoważenia obciążenia zamiast wybierania najmniej obciążonego backendu?

179

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

178

Ile osób zaangażowanych było w największy projekt, nad którym pracowałeś? Mniej niż dziesięć, dziesiątki, setki?

178

Znajdź błędy składniowe w poprawionym kodzie

177

Jak rozwiązać problem ograniczenia równoległych zapytań w rozproszonym systemie z wieloma instancjami, jeśli użytkownik musi czekać, a nie otrzymywać błąd?

177

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 }

176

Dlaczego wiadomości z Message Service są przesyłane bezpośrednio przez gRPC, a nie przez Kafka?

176

Zaimplementuj metodę BulkCreateUsers na podstawie pliku proto: stwórz strukturę projektu, logikę biznesową, repozytorium i zapytania SQL zgodnie z zasadami SOLID

175

""" Miejsca w kinie są ustawione w jednym rzędzie. Nowo przybyły widz wybiera miejsce, aby usiąść jak najdalej od innych widzów w rzędzie. Innymi słowy, odległość od tego miejsca, na którym usiądzie widz, do najbliższego widza powinna być maksymalna. Gwarantuje się, że w rzędzie zawsze są wolne miejsca i że już siedzi co najmniej jeden widz. Napisz funkcję, która na podstawie podanego rzędu miejsc (tablicy zer i jedynek) zwróci odległość (liczbę przerw między fotelami) od wybranego miejsca do najbliższego widza. [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