Peut-on allouer explicitement une variable sur la pile ou sur le tas ? Comment savoir où la variable a été allouée ?
Golang
Comment le pattern Outbox a-t-il été implémenté ? Quel outil envoyait depuis la table outbox vers Kafka ?
Quelle est la différence entre VACUUM et VACUUM FULL?
Pourquoi Kafka et pas d'autres systèmes?
Comment évaluer à l'avance l'efficacité et l'utilité d'un index avant de le déployer en production?
Quel protocole de transport gRPC utilise-t-il ? Quelle est la différence entre HTTP/2 et HTTP/1.1 ?
Que se passe-t-il dans PostgreSQL lorsqu'une requête DELETE FROM table sans conditions est exécutée?
Quelle information montre EXPLAIN ANALYZE ?
Quelle est la différence entre SSL et TLS?
Quelle est la différence entre les types de données int32, int64 et simplement int?
Que se passe-t-il si on ferme un canal déjà fermé ? Que se passe-t-il si on écrit dans un canal nil ?
Qu'est-ce qu'une map en Go ? Comment fonctionne-t-elle en interne ? Que se passe-t-il en cas de collision ?
Qu'est-ce que la limitation de débit ? Quels algorithmes existent ?
Raconte une tâche intéressante dont tu es fier, une expérience ou des difficultés.
Qu'est-ce que le verrouillage pessimiste?
// Lors de la mise à jour d'une commande, nous devons envoyer les données de la commande à plusieurs services (API tierces) // le nombre de services augmente (peut-être des milliers+) // nous avons écrit le code, au début tout allait bien, mais avec le temps notre service a commencé à consommer beaucoup de mémoire func (s *orderService) SendOrder(ctx context.Context, hosts []string, order Order) { for i := 0; i < len(hosts); i++ { go func() { // Imaginons que c'est un appel réseau long response, err := s.httpClient.Send(ctx, hosts[i], order) if err != nil { s.logger.Error(ctx, "échec de l'envoi", err) return } s.logger.Info(ctx, "succès", response) }() } }
Quelles sont les méthodes de concaténation de chaînes en Go ? Quelle est la différence entre + et strings.Builder ?
// Nous avons une méthode pour obtenir des informations sur les produits, cette méthode est appelée très fréquemment // y a-t-il des problèmes dans ce code et comment les corriger ? base de données postgress func (r *ProductRepository) GetProductDetails(ctx context.Context, productIDs []int) []Product { products := make([]Product, 0, len(productIDs)) for _, id := range productIDs { go func(id int) { var p Product query := "SELECT name, price, description FROM products WHERE id = $1" err := r.db.QueryRowContext(ctx, query, id).Scan(&p.Name, &p.Price, &p.Desc) if err != nil { r.logger.Error("error get product", "err", err) return } products = append(products, p) }(id) } return products }
Qu'est-ce que les canaux en Go ? Quels types existent ? Comment sont-ils structurés en interne ?
Qu'est-ce que le principe de Durabilité dans ACID ? Comment est-il réalisé dans PostgreSQL ?