Golang
Qual recurso você desenvolveu do qual se orgulha? Conte-nos sobre a última tarefa interessante.
Fale sobre otimização de consultas ao banco de dados: como identificaram consultas problemáticas e o que fizeram?
Como funciona o GOMAXPROCS e para que serve o P (processador) no modelo GMP?
Sabes o que são Xmin e Xmax no PostgreSQL?
Para onde vão as goroutines ao serem criadas — para a fila local ou global do agendador Go?
Houve alguma situação em que a sua hipótese ou abordagem mostrou um resultado ruim?
Por que era responsável a sua equipa na [empresa]?
Como cancelar a reserva após o término do tempo limite (5 minutos)?
Como avalias a tua experiência com Kubernetes?
Quais são as principais construções usadas para gerenciar e executar goroutines na linguagem de programação?
O que pode ser feito para evitar a evacuação do mapa em um serviço de alta carga?
O que deve ser melhorado na implementação do mapa ordenado, se tivesse mais tempo? Quais são os possíveis problemas e direções de desenvolvimento da biblioteca?
/* É dada uma string de caracteres. Encontrar o número de pares de índices i e j (i <= j), entre os quais não há caracteres repetidos. Para a string "aba", a resposta é 5: podem não ser apenas ASCII [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") */
tipo Response interface{} tipo Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr contém ip:porta de uma instância específica 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("O número de backends no 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 contém os endereços de todas as instâncias balanceadas func NewBalancer(addrs []string) *Balancer { // TODO backends := make([]*BackendImpl, len(addrs))
O que é a troca de contexto das goroutines? Quem a realiza?
Qual é a complexidade das operações com map no pior caso em caso de colisões?
Como funciona o map em Go?
O que é um semáforo?
Índices compostos — o que colocar primeiro: igualdade ou intervalo?
Quais passos tomar para determinar a causa de um erro 500 num sistema de microsserviços?