Sobes.tech

Golang

Já trabalhou com acesso concorrente a dados em um banco de dados? Quais mecanismos como transações e bloqueios você usou? Existem maneiras de resolver esse problema sem envolver o banco de dados?

Senior
ClearWay
3

// código para a função best() // com tratamento de erro para quando não há backend disponível

Middle
Яндекс
3

Como comunicou os requisitos para implantar um serviço no Kubernetes à equipa de DevOps: em que formato documentou a operação do serviço e como foi construída a interação?

Senior
ClearWay
3

Qual é a diferença entre métodos com receptor por valor e receptor por ponteiro em Go, e quando escolher cada um?

Senior
ClearWay
3

// código para a função best() // com tratamento de erro para quando não há backend disponível

Middle
Яндекс
3

// código para a função best() // com tratamento de erro para quando não há backend disponível

Middle
Яндекс
2

Existe programação orientada a objetos em Go? Se sim, como é implementada; se não, por quê?

Senior
ClearWay
2

O que é mais importante para si no trabalho?

Senior
ООО Вес Медиа
2

O que devolve a leitura de um canal fechado?

Senior
ООО Вес Медиа
2

Como organizou a escalabilidade e com que arquiteturas de microserviços trabalhou?

Senior
ClearWay
2

Quando ocorre um vazamento de goroutines?

Senior
ООО Вес Медиа
2

Como implementar o método Status para obter o estado da tarefa por ID?

Middle+
Яндекс
2

O que acontece com o programa se ocorrer um pânico numa goroutine separada?

Senior
ClearWay
2

Como é tratado isso no código?

Senior
ClearWay
2

type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr contém ip:port de uma instância específica func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs contêm os endereços de todas as instâncias balanceáveis func NewBalancer(addrs []string) *Balancer { data := make([]*backentry,len(addrs)) for i,addr := range addrs{ data[i] = &backentry{ backend: NewBackend(addr), inflight: 0, } } return &Balancer{backends:data} } func(b *Balancer)Invoke(ctx context.Context, req Request) (Response, error){ b.mu.Lock() entry := b.best() atomic.AddInt64(&entry.inflight,1) b.mu.Unlock() defer atomic.AddInt64(&entry.inflight,-1) return entry.backend.Invoke(ctx,req) } func(b *Balancer) best() *backentry{ var best *backentry for _,entry := b.backends{ if best == nil || atomic.LoadInt64(&entry.inflight) < atomic.LoadInt64(&best.inflight){ best = entry } } return best }

Middle
Яндекс
1

Como o sync.Mutex difere do sync.RWMutex?

Senior
ООО Вес Медиа
1

Descreva o seu processo de desenvolvimento e implantação de um novo serviço: desde a recolha de requisitos até à implantação nos ambientes de desenvolvimento e teste.

Senior
ClearWay
1

Como foi realizado o deployment dos serviços?

Senior
ООО Вес Медиа
1

Implemente o método Queue

Middle+
Яндекс
1

Como foi exatamente estruturado o processo de carregamento ou construção desses dados?

Senior
ClearWay
1
/419