Golang
Hai esperienza con gRPC e GraphQL? Raccontami.
tipo Response interfaccia {} tipo Backend interfaccia { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr contiene ip:port di una specifica istanza func NewBackend(addr string) *BackendImpl type Balancer struct { // TODO backends []*BackendImpl index int mu sync.Mutex } var _ Backend = &Balancer{} func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { se len(b.backends) == 0 { return nil, fmt.Errorf("Il numero di backends nel slice è 0") } b.mu.Lock() index := b.index se b.index + 1 == len(b.backends) { b.index = 0 index = 0 } b.mu.Unlock() resp, err := b.backends[index].Invoke(ctx, req) return resp, err } // addrs contiene gli indirizzi di tutte le istanze bilanciate func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs))
Come condividere la memoria tra le goroutine? In quali casi è meglio usare Atomic e in quali Mutex/RWMutex/SyncMap?
Quali compiti ti piacciono di più e quali di meno?
Puoi indicare le prime 3 cose a cui prestare attenzione durante una revisione del codice?
Come funziona una mappa in Go?
Come verificare l'utilizzo della CPU e della memoria in Linux?
Per quanto riguarda la specificità della startup: non sempre c'è una definizione chiara dei compiti, a volte sono sfocati, è richiesta iniziativa e autonomia, il carico di lavoro può essere irregolare. Come ti senti in questo?
Nominare quattro protocolli: HTTP, gRPC, WebDAV, ACSA — quale è in più?
Compito di scalabilità: il servizio B sta subendo un carico crescente dal servizio A. Cosa si può fare?
Cos'è l'allineamento dei dati in Go?
Quali sono le tue aspettative per un nuovo posto di lavoro?
Scrivere un problema in linguaggio Go — sezione pratica (problemi della vita reale dello sviluppatore, senza algoritmi): migliorare o correggere un servizio. Durata — 1,5 ore.
Cos'è TLS e a cosa serve un certificato?
Perché abbiamo bisogno di WaitGroup in questo compito?
Come validavi i messaggi di Kafka? Se un messaggio non superava la validazione, cosa succedeva?
Qual è la differenza tra un bilanciatore di carico L4 e uno L7?
Quali librerie e framework sono stati utilizzati nel servizio Go?
Qual è la differenza tra Kafka e RabbitMQ?
Hai scritto qualcosa con CTE (Common Table Expression, WITH)?