Sobes.tech

Golang

Pourquoi avez-vous décidé de communiquer avec 2GIS ? Qu'est-ce qui vous a attiré dans l'entreprise ou une offre spécifique?

Middle
2gis2gis
3

Avez-vous déjà travaillé avec un accès concurrent aux données dans une base de données? Quels mécanismes comme les transactions et les verrouillages avez-vous utilisés? Existe-t-il des moyens de résoudre ce problème sans impliquer la base de données?

Senior
ClearWay
3

// code pour la fonction best() // avec gestion d'erreurs si aucun backend n'est disponible

Middle
Яндекс
3

Comment avez-vous communiqué les exigences pour déployer un service dans Kubernetes à l'équipe DevOps : sous quel format avez-vous documenté le fonctionnement du service et comment l'interaction a-t-elle été construite?

Senior
ClearWay
3

Quelle est la différence entre les méthodes avec un récepteur par valeur et un récepteur par pointeur en Go, et quand choisir l'un ou l'autre?

Senior
ClearWay
3

// code pour la fonction best() // avec gestion d'erreurs si aucun backend n'est disponible

Middle
Яндекс
3

// code pour la fonction best() // avec gestion d'erreurs si aucun backend n'est disponible

Middle
Яндекс
2

Y a-t-il de la programmation orientée objet en Go ? Si oui, comment est-elle implémentée ; si non, pourquoi ?

Senior
ClearWay
2

Qu'est-ce qui est le plus important pour vous dans le travail?

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

Que renvoie la lecture d'un canal fermé?

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

Comment avez-vous organisé la mise à l'échelle et avec quelles architectures de microservices avez-vous travaillé?

Senior
ClearWay
2

Quand une fuite de goroutines se produit-elle?

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

Comment implémenter la méthode Status pour obtenir l'état de la tâche par ID ?

Middle+
Яндекс
2

Que se passe-t-il si une panic survient dans une goroutine séparée?

Senior
ClearWay
2

Comment cela est-il géré dans le code?

Senior
ClearWay
2

type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr contient ip:port d'une instance spécifique func NewBackend(addr string) *BackendImpl type backentry struct { backend Backend inflight int64 } type Balancer struct { backends []*backentry mu *sync.Mutex } var _ Backend = &Balancer{} // addrs contiennent les adresses de toutes les instances équilibrables 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

Quelle est la différence entre sync.Mutex et sync.RWMutex?

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

Décrivez votre processus de développement et de déploiement d'un nouveau service : de la collecte des exigences à la mise en production sur les environnements de développement et de test.

Senior
ClearWay
1

Comment s'est déroulé le déploiement des services?

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

Implémentez la méthode Queue

Middle+
Яндекс
1
/419