Golang
Kuidas tagati arvutuste korduvusus — et kogu töötajate rühmale kehtisid samad tingimused?
Mida tuleb teha, et PostgreSQL andmed pärast konteineri taaskäivitamist ei kaoks?
Räägi Kafka omadustest — kuidas see on üles ehitatud?
Millal arvutatakse edasi lükatud funktsioonide argumendid — määramise ajal või väljakutse ajal?
Kas me saame kirjutada koodi ilma kasutajaliidesteta?
Miks kasutatakse peamiselt Legacy-süsteemide jaoks triggereid?
Milles täpselt sa tegelesite oma praegusel töökohal? Mis on teie vastutusalad?
Mis juhtub, kui lugeja sulgeb kanali, ja kirjanik veel kirjutab? Kuidas vältida paanikat?
Kas saab kirjutada suletud kanalisse Go-s?
Kuidas vältida lõplikku blokeerimist tühja kanali lugemisel? Mis on select ja millised on selle mustrid?
Miks otsustasid tähelepanu pöörata turule? Mida praegu endale otsid? Millele pöörad tähelepanu, valides uut ettevõtet?
Kas on mehhanisme, mis aitavad vältida kokkupõrkeid programmeerimisel?
Otseülekande kodeerimine: semafor — kuidas see töötab ja selle rakendamine pufferkanali põhjal.
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("Backends in slice count 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 contain all the addresses of the balanced instances func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }
Miks meil on selle ülesande jaoks vaja WaitGroup?
Mis juhtub, kui käivitada goroutine ja kutsuda seal panic?
Kui palju ridu oli andmebaasis?
Miks sul üldse tööjuures juht vaja on? Milleks?
Milliseid lukustusi loob PostgreSQL, kustutades konkreetseid ridu?
Mis on init-konteinerid ja sidecar-konteinerid?