Wat was de grootste hoeveelheid opgeslagen gegevens?
Golang
Met welke databases en andere gegevensopslagsystemen hebt u gewerkt?
// code voor de best() functie // met foutafhandeling voor geen backend beschikbaar
In welke richting zou je geïnteresseerd zijn in ontwikkeling op het gebied van taken en carrièrerichting?
// code voor de best() functie // met foutafhandeling voor geen backend beschikbaar
Waarom overweeg je nieuwe aanbiedingen en waarom heb je je vorige bedrijf verlaten?
Hoe beperk je het aantal goroutines zodat niet meer dan 'threads' methoden van Process gelijktijdig worden uitgevoerd? Wie zal taken uit het kanaal halen?
// code voor de best() functie // met foutafhandeling voor geen backend beschikbaar
// code voor de best() functie // met foutafhandeling voor geen backend beschikbaar
Wie leest het resulterende kanaal en waar schrijft het vervolgens het resultaat zodat de Status-methode er toegang toe heeft?
Op hoeveel hosts of instanties werkte de service? Hoeveel containers werden gestart?
// code voor de best() functie // met foutafhandeling voor geen backend beschikbaar
// code voor de best() functie // met foutafhandeling voor geen backend beschikbaar
Implementeer de Queue-methode
Hoe implementeer je de Status-methode om de taakstatus op te halen op basis van ID?
type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr bevat ip:port van een specifieke instantie func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs bevatten de adressen van alle balanceerbare instanties 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 }
// code voor de best() functie // met foutafhandeling voor geen backend beschikbaar
Implementeer de Queue-methode
// code voor de best() functie // met foutafhandeling voor geen backend beschikbaar
// op zoek naar de beste -- ??? // als niet gevonden, vergelijk inflight