Golang
Existuje v Go objektově orientované programování? Pokud ano, jak je implementováno; pokud ne, proč?
Co je pro vás v práci nejdůležitější?
Co vrací čtení z uzavřeného kanálu?
Jak jste organizovali škálování a s jakými architekturami mikroservisů jste pracovali?
Kdy dochází ke úniku goroutines?
Jak implementovat metodu Status pro získání stavu úkolu podle ID?
Jak jste komunikovali požadavky na nasazení služby v Kubernetes týmu DevOps: v jakém formátu jste dokumentovali provoz služby a jak byla navázána interakce?
Co se stane s programem, pokud dojde k panice v samostatné gorutině?
Jak je to v kódu řešeno?
Existují mezi popsanými týmy nebo oblastmi nějaké příkazy nebo směry, které vás obzvlášť oslovují nebo kterým byste se raději vyhnuli?
Jak vypadal pomalý dotaz na zprávu a jaká byla celá cesta od uživatelské žádosti po získání výsledku?
type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr tartalmazza egy adott példány ip:port címét func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs tartalmazza az összes kiegyensúlyozható példány címét func NewBalancer(addrs []string) *Balancer { data := make([]*backentry,len(addrs)) for i,addr := range addrs{ data[i] = &backentry{ backend: NewBackend(addr), inflight: 0, } } return &Balancer{backends:data} } func(b *Balancer)Invoke(ctx context.Context, req Request) (Response, error){ b.mu.Lock() entry := b.best() atomic.AddInt64(&entry.inflight,1) b.mu.Unlock() defer atomic.AddInt64(&entry.inflight,-1) return entry.backend.Invoke(ctx,req) } func(b *Balancer) best() *backentry{ var best *backentry for _,entry := b.backends{ if best == nil || atomic.LoadInt64(&entry.inflight) < atomic.LoadInt64(&best.inflight){ best = entry } } return best }
Jak se liší sync.Mutex od sync.RWMutex?
Popište svůj proces vývoje a nasazení nové služby: od sběru požadavků po nasazení na vývojové a testovací prostředí.
Jak probíhal nasazení služeb?
Implementujte metodu Queue
Jak přesně byl proces načítání nebo sestavení těchto dat strukturován?
Co dělá defer?
Jaký je účel bufferu kanálu?
Co je problém N+1 v databázích?