Sobes.tech

Golang

Qu'est-ce qui était mis en cache ? Des référentiels ?

Senior
МВидео/эльдорадо
166

/* Nous devons transférer des données d'une source à un consommateur. La source fournit les données en petits lots (~dizaines d'enregistrements), tandis que le consommateur fonctionne plus efficacement avec de gros lots. Un exemple réel est le transfert de données depuis des files d'attente de type Kafka vers la base de données Clickhouse. Source: - Pratiquement infinie. - La source ne renvoie jamais plus de MaxItems en un seul appel à Next. - Dans une "session" (un appel à la fonction Pipe), la source renvoie de nouvelles données à chaque appel à Next. - Cependant, après un redémarrage, la source recommencera à partir de la position "confirmée" précédente, indiquée par cookie. Par conséquent, *chaque* valeur de cookie renvoyée par Next, après avoir sauvegardé les données dans le récepteur, doit être confirmée avec un appel à Commit, dans le même ordre dans lequel elles ont été renvoyées par Next. Récepteur: - Ne peut pas traiter plus de MaxItems à la fois. Niveau de base: Il est nécessaire d'implémenter la fonction func Pipe(p Producer, c Consumer) error qui lit les données de la source, les regroupe dans un buffer de taille maximale MaxItems et les sauvegarde dans le récepteur, puis confirme la progression dans la source. */ const MaxItems = 9999 type Producer interface { // Next retourne: // - un lot d'éléments à traiter // - un cookie à confirmer lorsque le traitement est terminé // - une erreur Next() (items []any, cookie int, err error) // Commit est utilisé pour marquer le lot de données comme traité Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }

Middle
Яндекс
166

Pouvez-vous énumérer les entreprises ou fournisseurs avec lesquels vous avez traité?

Junior — Middle
166

Parlez-moi de votre dernier emploi : que faisiez-vous, quelles technologies utilisiez-vous, quels étaient les défis difficiles ?

Middle
OZONOZON
166

Qu'est-ce qu'un slice en Go?

Middle
Бюро 1440Бюро 1440
166

Pouvez-vous énumérer les principaux types d'appels utilisés dans gRPC?

Junior — Middle
СБЕР дейвайсыСБЕР дейвайсы
166

Est-il permis d'obtenir des informations d'un canal avec un mode fermé activé?

Junior — Middle
ГазпромГазпром
X5 groupX5 group
AvitoAvito
+1
166

Peut-on écrire directement dans une partition Kafka spécifique, en évitant la clé pour le hachage?

Junior — Middle
Самокат Тех
166

Pouvez-vous expliquer le mécanisme d'ajout d'un élément à la fin d'une structure de données, comme une liste ou un tableau ?

Junior — Middle
Lamoda Tech
Startribe
Самокат Тех
+2
166

Quelles données et de quelle manière sont placées dans la pile lors de l'exécution du programme?

Junior — Middle
166

Quels méthodes de mise en cache préférez-vous utiliser dans vos projets et pourquoi?

Junior — Middle
166

Quelle est la différence entre une vue matérialisée et une vue normale?

Middle
RWB
165

Quels composants entrent dans la structure d'une liste chaînée?

Junior — Middle
165

Comment est déterminé le temps d'exécution de l'opération d'ajout d'un élément par clé dans la structure de données Map?

Junior — Middle
ЯндексЯндекс
165

Pourquoi la taille initiale de la pile des threads est-elle généralement fixée à 2 Mo?

Junior — Middle
165

Avez-vous déjà utilisé la structure ErrGroup dans vos projets pour gérer des tâches parallèles?

Junior — Middle
165

Quels packages inhabituels ou non standard avez-vous utilisés dans votre pratique?

Junior — Middle
165

Pourquoi la croissance de la tranche ralentit-elle et pourquoi ne peut-on pas continuer à doubler constamment?

Middle
RWB
165

À quel endroit les commandes sont-elles exécutées lors du processus de travail de GitLab CI/CD?

Junior — Middle
165

Quelles conséquences peuvent survenir en cas de non-respect des principes SOLID dans la conception logicielle?

Junior — Middle
Zonatelecom
165
/413