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) } }
Golang
Jak jste provedli testování a ověření správnosti provedených požadavků?
Jaké bylo největší množství dat, se kterým jste pracoval v databázích?
Jaké bylo maximální množství požadavků za sekundu na nejvíce zatížené službě?
Používal jste veřejné cloudové služby? Pokud ano, s jakými poskytovateli a službami?
Pověz mi podrobněji o svém prvním zaměstnání od roku 2019 do 2021.
Na kolika hostech služba běžela a kolik instancí bylo spuštěno?
Kolik lidí se zapojilo do největšího projektu, na kterém jste pracoval? Méně než deset, desítky, stovky?
Jak jsou aktivní hledání? Možná už jsou nějaké nabídky?
Existují jednodušší a rychlejší způsoby vyvážení zátěže než výběr nejméně zatíženého backendu?
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?
Jak rychle zkontrolovat, že v okně jsou všechny znaky (porovnání dvou map)?
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
Najděte syntaktické chyby v opraveném kódu
Proč zprávy z Message Service jdou přímo přes gRPC, místo přes Kafka?
Lze vytvořit konstantní paměť, aniž bychom odstranili mapu?
""" 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 { }
/** :-))) :-(( "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) }
V jaké fázi je vaše hledání práce: aktivně nebo pasivně zvažujete volná místa?
Pověz mi o databázích — s čím jsi pracoval a s čím pracuješ teď?