Sobes.tech

Golang

Avec quelles bibliothèques écrit-on des métriques en Go?

207

À quoi sert ce code ? Quel problème métier et technique résout-il ?

205

Quelles sont les métriques ? Avec quels outils allons-nous enregistrer ces métriques ?

182

// Tâche 4 // Dans un service CRUD "typique", à un moment donné, certaines méthodes ont commencé à fonctionner lentement et le service a commencé à expirer. // Le service se compose de : // * Load Balancer d'Application (L7) - réception des requêtes entrantes et terminaison TLS // * Backend (rest, java/kotlin ou golang) - traitement des requêtes et logique métier // * Base de données (postgres) - stockage et traitement des requêtes SQL // Comment agir correctement pour comprendre la cause des problèmes et élaborer des solutions pour améliorer la situation ?

177

// Question 3 // Décrire quelle tâche ce code résout // Quels problèmes y a-t-il dans cette solution? // Comment réécririez-vous ce code?

163

// Tâche 3 // Décrire quelle tâche ce code résout // Quels problèmes y a-t-il dans cette solution? // Comment réécririez-vous ce code? var c int type Trace struct { // Certains champs ici } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { c++ if c == 100 { sender.Send(tr) c = 0 } }

140

Quels indices avez-vous utilisés au travail ? Qu'avez-vous appliqué en pratique ? Sur Wildberries ?

137

Que faites-vous lorsque les priorités changent chaque jour dans votre équipe et que de nouvelles tâches urgentes apparaissent?

136

Comment fonctionne la partition dans PostgreSQL en interne?

134

Que faire avec la base de données et le load balancer en cas de problèmes de performance?

132

Quels index utilisez-vous dans PostgreSQL?

130

Quels problèmes y a-t-il dans le code avec le compteur global ? Comment le corriger ?

128

Comment accéder au profileur pprof sur le serveur de production?

127

Sur quel graphique avez-vous vu le problème lors de l'utilisation de pprof?

126

Comment rendre Increaser universel — pas lié au nombre 100?

121

// Question 3 // Décrire quelle tâche ce code résout // Quels problèmes y a-t-il dans cette solution? // Comment réécririez-vous ce code? var c int var mu sync.RWMutex type Trace struct { // Certains champs ici } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { mu.Lock() defer mu.Unlock() c++ if c == 100 { go func() { sender.Send(tr) }() c = 0 } }

119

func normalize2(str []rune) []rune { result := str[:0] for val := range str { if val != ' ' { result = append(re) } } l, r := 0, 0 isSpace := false for i := 0, i < len(str); i++ { val := string(str[i]) if val == " " { if isSpace { continue } else { str[r] = val r++ isSpace = true } } else { str[r] = val r++ isSpace = false } } return str[:r] }

110

Increaser peut-il devenir une implémentation de Sender ? En quoi Increaser diffère-t-il logiquement de Sender ?

106

Pouvez-vous expliquer comment vous avez conçu et implémenté l'API REST et gRPC pour les services internes et externes de la plateforme?

101
/2