Golang
Come garantire l'esecuzione esclusiva di uno dei tre processi di lavoro su un singolo host (elezione del leader)?
Parla del contesto in Go: tipi, gerarchia, caratteristiche dei contesti figli. Come creare un contesto figlio indipendente dal genitore?
/* Esiste un'applicazione con architettura a microservizi. Un microservizio può essere astratto tramite un'interfaccia Backend. Per accedere a un'istanza del microservizio, si può usare il tipo BackendImpl, che è già implementato. Ogni microservizio ha diverse decine di istanze in esecuzione, ciascuna accessibile tramite il proprio indirizzo addr. Tuttavia, le singole istanze del microservizio non sono affidabili: potrebbero fallire, essere inaccessibili o sovraccariche. Per questo, devi implementare il tipo Balancer, che implementa anche l'interfaccia Backend e effettua il bilanciamento del carico lato client tra le istanze del microservizio, scegliendo ogni volta l'istanza **meno caricata**. */ type Request interface{} type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr contiene ip:porta di una specifica istanza func NewBackend(addr string) *BackendImpl type Balancer struct { // TODO } var _ Backend = &Balancer{} // addrs contengono gli indirizzi di tutte le istanze bilanciate func NewBalancer(addrs []string) *Balancer { // TODO }
Con quali database hai lavorato e quanto in profondità?
Cos'è etcd e perché è stato scelto come storage per Kubernetes? Quali proprietà possiede?
Sei a Mosca?
Hai lavorato con l'architettura? Racconta un paio di soluzioni architettoniche
Hai un servizio che genera molte goroutine. Come limiteresti il numero di goroutine in esecuzione contemporaneamente?
Cos'è una stringa in Go? Cosa succede se si tenta di modificare il primo carattere della stringa tramite l'indice?
Cosa sai dello scheduler delle goroutine in Go?
Sei stato tu a creare e calcolare i percorsi logistici?
Come organizzare l'architettura per una richiesta che esegue la logica di business, chiama un servizio esterno (Google) e salva il risultato nel database? Descrivi a strati dall'alto verso il basso.
Come appare un array di stringhe nella sintassi di Protocol Buffers?
Come funzionano HTTPS e TLS? Cos'è un certificato e come lo verifica il browser?
Come sincronizzare i worker tramite PostgreSQL (lock distribuito nel database)?
Parla dei livelli di isolamento delle transazioni: Read Uncommitted, Read Committed, Repeatable Read, Serializable.
Cosa rappresenta il tipo di dato string in Go?
Cosa succede quando la capacità di uno slice viene esaurita e viene aggiunto un altro elemento?
La chiave primaria è un indice?
Parla del pattern Fan-In, a cosa serve?