Jakou pozici nyní zvažujete pro sebe, co by bylo zajímavé?
Golang
Co je grooming a čím se liší od plánování?
Jaký formát práce zvažujete?
Jak porovnat prvky v mapě? Jak zkontrolovat, že dvě mapy jsou shodné?
Jaké jsou vaše finanční očekávání?
/* Existuje aplikace s architekturou mikroservisů. Mikroservis lze abstrahovat pomocí rozhraní Backend. Pro přístup k jedné instanci mikroservisu lze použít typ BackendImpl, který je již implementován. Každý mikroservis má několik desítek spuštěných instancí, každá dostupná na své adrese addr. Nicméně jednotlivé instance mikroservisu nejsou spolehlivé: mohou selhat, být nedostupné nebo přetížené. Proto je třeba implementovat typ Balancer, který také implementuje rozhraní Backend a provádí vyvažování zátěže mezi instancemi mikroservisu, volbou **nejméně zatížené** instance při každém volání. */ type Request interface{} type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr obsahuje ip:port konkrétní instance func NewBackend(addr string) *BackendImpl type Balancer struct { //TODO } var _ Backend = &Balancer{} // addrs obsahují adresy všech vyvažovaných instancí func NewBalancer(addrs []string) *Balancer { //TODO }
Jaké je omezení semaforu a bufferovaného kanálu jako řešení pro omezení paralelních požadavků?
Co víte o programu multitrek Yandexu?
typ Response rozhraní {} typ Backend rozhraní { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr obsahuje ip:port konkrétní instance func NewBackend(addr string) *BackendImpl typ Balancer struktura { // TODO backends []*BackendImpl index int mu sync.Mutex } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { pokud len(b.backends) == 0 { return nil, fmt.Errorf("Počet backends v poli je 0") } b.mu.Lock() index := b.index pokud 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 obsahuje adresy všech vyvážených instancí func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs))
Jak jste integrovali LLM do projektu s pohledávkami? Vyprávějte obecně.
Je nějaký termín?
/** :-))) :-(( "ab :-)" = "ab " "ab :-)))" = "ab " "ab :-)))(" = "ab (" "ab ):-)" = "ab )" ":-)" = "" **/ func deleteP(str string) string { }
Úkol: existuje služba s omezením na 5 paralelních požadavků na LLM. Při 6. požadavku přijde chyba 429. Jak tento problém koncepčně vyřešit?
Jak se funkce objeví a dostane se až k prodeji: plánování, vývoj, testy, code review, nasazení, rollback?
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) } }
Máš zkušenosti s podporou nebo vývojem distribuovaných systémů?
/* Zadan je niz znakova. Pronađite broj parova indeksa i i j (i <= j), između kojih nema ponovljenih znakova. Za niz "aba" odgovor je 5: mogu biti ASCII [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */
Jak rychle bude fungovat lineární prohledávání všech backendů při vysokém RPS (například 30 000 RPS a 10 backendů)?
Jak jste provedli testování a ověření správnosti provedených požadavků?
Jak JWT ověřuje svou pravost? Jak se zajišťuje, že token není padělaný?