Golang
Cos'è una tabella hash?
Come evitare di bloccarsi indefinitamente leggendo da un canale vuoto? Cos'è select e quali sono i suoi pattern?
Esistono meccanismi che aiutano a evitare collisioni nella programmazione?
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("Numero di backends nel 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 contengono gli indirizzi di tutte le istanze bilanciate func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImplF, len(addrs)) for _, addr := range addrs { implF := BackendImplF{ Backend: NewBackend(addr), } backends = append(backends, &implF) } }
Perché abbiamo bisogno di WaitGroup in questo compito?
Cos'è un'interfaccia in Go? Come funziona il duck typing? È possibile verificare l'implementazione di un'interfaccia durante la compilazione?
Scrivi un codice con un pool di worker per elaborare un slice di URL con richieste HTTP parallele.
Quali pattern di programmazione parallela conosci? Fornisci un esempio di semaforo dalla libreria standard/pratica di Go e spiega come un canale può essere usato come semaforo (acquisizione e rilascio).
Come hai gestito i resi e i pagamenti?
Cosa sono i container init e i container sidecar?
Perché in sync.Map non c'è un metodo per ottenere il numero di elementi (len)?
Dai curriculum, attualmente lavori in [organizzazione], è corretto?
Parla più dettagliatamente dei semafori.
Tipi di invalidazione della cache. Quali conosci e quali hai usato?
Cos'è un indice e quali tipi di indici esistono in PostgreSQL?
Quali database e broker di messaggi utilizzi nel tuo stack?
Per quale motivo ha deciso di entrare nel mercato?
Quali chiavi possono avere le mappe in Go?
Numero di utenti unici, numero di clic, costo per clic — parlami di queste metriche
Come si presenta la distribuzione del tuo lavoro — cosa consegni ai colleghi dopo aver scritto il codice?