Sobes.tech

Golang

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("Počet backends v 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 obsahují adresy všech vyvažovaných instancí 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

Jak jste provedli testování a ověření správnosti provedených požadavků?

Junior — Middle
181

Jaké bylo největší množství dat, se kterým jste pracoval v databázích?

180

Jaké bylo maximální množství požadavků za sekundu na nejvíce zatížené službě?

180

Používal jste veřejné cloudové služby? Pokud ano, s jakými poskytovateli a službami?

179

Pověz mi podrobněji o svém prvním zaměstnání od roku 2019 do 2021.

178

Na kolika hostech služba běžela a kolik instancí bylo spuštěno?

178

Kolik lidí se zapojilo do největšího projektu, na kterém jste pracoval? Méně než deset, desítky, stovky?

178

Jak jsou aktivní hledání? Možná už jsou nějaké nabídky?

178

Existují jednodušší a rychlejší způsoby vyvážení zátěže než výběr nejméně zatíženého backendu?

177

Jak vyřešit problém omezení paralelních požadavků v distribuovaném systému s několika instancemi, pokud musí uživatel čekat místo toho, aby dostal chybu?

177

Jak rychle zkontrolovat, že v okně jsou všechny znaky (porovnání dvou map)?

176

Implementujte metodu BulkCreateUsers na základě proto-souboru: vytvořte strukturu projektu, obchodní logiku, úložiště a SQL dotazy v souladu s principy SOLID

175

Najděte syntaktické chyby v opraveném kódu

175

Proč zprávy z Message Service jdou přímo přes gRPC, místo přes Kafka?

174

Lze vytvořit konstantní paměť, aniž bychom odstranili mapu?

174

""" Místa v kině jsou uspořádána v jednom řádku. Nově příchozí divák si vybírá místo, aby seděl co nejdále od ostatních diváků v řadě. Jinými slovy, vzdálenost od tohoto místa, kam sedne, k nejbližšímu divákovi by měla být maximální. Je zaručeno, že v řadě jsou vždy volná místa a že již sedí alespoň jeden divák. Napište funkci, která na základě daného řádku míst (pole nul a jedniček) vrátí vzdálenost (počet mezer mezi sedadly) od vybraného místa k nejbližšímu divákovi. [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

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

174

V jaké fázi je vaše hledání práce: aktivně nebo pasivně zvažujete volná místa?

173

Pověz mi o databázích — s čím jsi pracoval a s čím pracuješ teď?

172
/11