Sobes.tech

Golang

Comment avez-vous abordé la gestion des versions des contrats gRPC?

Senior
РамблерРамблер
76

Implémentez la récupération des 5 meilleurs services en O(N) en utilisant une structure auxiliaire

Middle+
X5 groupX5 group
76

Les mises à jour des documents arrivent au service message Document { string Url = 1; // URL du document, son identifiant unique uint64 PubDate = 2; // heure de publication déclarée du document uint64 FetchTime = 3; // heure de réception de cette mise à jour du document, peut être considérée comme un identifiant de version. La paire (Url, FetchTime) est unique. string Text = 4; // texte du document uint64 FirstFetchTime = 5; // initialement absent, doit être rempli } Les documents peuvent arriver dans n'importe quel ordre (pas dans l'ordre de leur mise à jour), et il peut également y avoir des messages en double. Il est nécessaire de former en sortie des messages identiques, mais avec des champs corrigés selon les règles suivantes (tout ce qui est indiqué ci-dessous concerne un groupe de documents avec le même champ Url): Le champ Text et FetchTime doivent être ceux du document avec le plus grand FetchTime reçu jusqu'à présent. Le champ PubDate doit être celui du message avec le plus petit FetchTime. Le champ FirstFetchTime doit être égal à la valeur minimale de FetchTime. Autrement dit, à chaque instant, nous prenons PubDate et FirstFetchTime du premier version reçu jusqu'à présent (si on les trie par FetchTime), et Text de la dernière. L'interface dans le code peut être implémentée ainsi: type Processor interface { Process(doc *Document) (*Document, error) } Ce code fonctionnera dans un service qui lit des messages d'une file (Kafka ou similaire), et écrit également le résultat dans la file. Si Process retourne Null, rien n'est écrit dans la file.

Senior
VKVK
76

As-tu de l'expérience avec gRPC et GraphQL ? Parle-moi d'eux.

Senior
X5 techX5 tech
76

Sur quelles attentes salariales vous basez-vous?

Senior
X5
76

Connais-tu le produit Loop?

Middle
wilix
76

Que penses-tu des gardes? As-tu déjà eu cette expérience?

Senior
ozon_tech
76

À quoi ressemblait exactement le chemin de verrouillage optimiste depuis la réception du message de Kafka jusqu'à la mise à jour dans la base de données?

Senior
КасперскийКасперский
76

Comment reçois-tu les tâches, de qui viennent-elles?

Middle+
SelectelSelectel
76

Avez-vous de l'expérience dans l'optimisation des requêtes dans des bases de données relationnelles?

Middle
VKVK
76

Comment avez-vous utilisé Kafka et RabbitMQ comme brokers ? Pourquoi deux ?

Senior
Ozon ФинтехOzon Финтех
76

Comment paralléliser le traitement des logs en utilisant un pool de workers ? Comment obtenir les résultats des goroutines ?

Middle+
X5 groupX5 group
76

Qu'est-ce que les tableaux et les slices en Go, en quoi diffèrent-ils ? Comment fonctionne append et l'extension de capacity ?

Senior
ClearWay
76

Quels sont les avantages de la réplication ? Quels sont ses coûts ?

Senior
ВайлдберрисВайлдберрис
76

// 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 }

Middle+
Lenta Tech
76

Est-ce que la taille du tampon du canal influence quelque chose dans le pool de workers?

Senior
WildberriesWildberries
76

Quand sont calculés les arguments des fonctions différées : au moment de la définition ou au moment de l'appel de la fonction?

Senior
КасперскийКасперский
76

Comment interagir avec les commerçants situés dans le contour extérieur?

Senior
Финтехробот
76

Quels sont les moyens de synchronisation en concurrence dans Go?

Senior
I-teco
76

Quelles données stockaient dans Redis et comment comprenaient-ils que les annonces étaient chaudes?

Senior
Cloud.ru
76
/412