Sobes.tech

Golang

¿Por qué quieres cambiar y estás considerando otras empresas?

Middle
4

// código para la función best() // con manejo de errores para cuando no hay backend disponible

3

¿Por qué decidiste comunicarte con 2GIS? ¿Qué te atrajo de la empresa o de una vacante específica?

Middle
3

¿Alguna vez has trabajado con acceso concurrente a datos en una base de datos? ¿Qué mecanismos como transacciones y bloqueos utilizaste? ¿Existen formas de resolver este problema sin involucrar la base de datos?

Senior
3

// código para la función best() // con manejo de errores para cuando no hay backend disponible

3

¿Cómo se maneja esto en el código?

Senior
3

type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr contiene ip:port di un'istanza specifica func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs contiene gli indirizzi di tutte le istanze bilanciate 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 }

2

// código para la función best() // con manejo de errores para cuando no hay backend disponible

2

¿Hay programación orientada a objetos en Go? Si es así, ¿cómo se implementa; si no, ¿por qué?

Senior
2

¿Cómo organizaste la escalabilidad y con qué arquitecturas de microservicios has trabajado?

Senior
2

¿Cómo implementar el método Status para obtener el estado de la tarea por ID?

2

¿Qué le sucede a la programa si ocurre un pánico en una goroutine separada?

Senior
2

Describe tu proceso de desarrollo y despliegue de un nuevo servicio: desde la recopilación de requisitos hasta el despliegue en entornos de desarrollo y prueba.

Senior
1
/419