Sobes.tech

Golang

4 - accepter rapidement les tâches entrantes, 5 - renvoyer le résultat de la tâche sur demande 6 - s'il n'y a pas de résultat, renvoyer le statut approprié /* Processeur - un service qui effectue une opération longue et gourmande en ressources. Il est déjà implémenté Les erreurs qu'il renvoie sont exclusivement liées à des données d'entrée incorrectes, sont stables et les re-demander est inutile */ type Processor interface { Process([]byte) ([]byte, error) } /* Nous supposons que nous avons un générateur d'identifiants uniques (par exemple, UUID). Le générateur garantit qu'il n'y aura pas de collisions */ type ID string // func NewID() ID /* Le planificateur accepte des tâches des clients, les met en file d'attente et les lance en traitement. Assure qu'au plus 'threads' méthodes de traitement sont en cours d'exécution simultanément Permet de vérifier le statut de la tâche et d'obtenir le résultat ne bloque pas ses méthodes publiques pour le traitement */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // logique d'initialisation à faire return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // à implémenter return "" }

141

Parlons de l'architecture microservices. Qu'est-ce qui a été plus récent : le support ou le développement?

140

Comment sont traités les messages envoyés aux utilisateurs hors ligne?

139

Comment vérifier que la fenêtre contient tous les caractères nécessaires?

139

/* Nous devons transférer des données d'une source à un consommateur. La source fournit les données en petits lots (~dix enregistrements), tandis que le consommateur fonctionne plus efficacement avec de gros lots (~mille enregistrements). Un exemple réel est le transfert de données depuis des files d'attente de type Kafka vers une base de données Clickhouse. Source : - Pratiquement infinie. - La source ne renvoie jamais plus de MaxItems enregistrements en un seul appel à Next. - Dans le cadre d'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 recommence à partir de la position "confirmée" précédente, définie 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 traiter plus de MaxItems à la fois. Il faut 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, après quoi elle confirme la progression dans la source. */ const MaxItems = 9999 type Producer interface { // Next retourne : // - un lot d'éléments à traiter // - cookie à confirmer une fois le traitement terminé // - 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 { // TODO }

139

Avez-vous utilisé des clouds publics ? Si oui, quels fournisseurs et services ?

139

Parlez-nous de vos projets récents et de la pile technologique utilisée.

138

Décrivez l'algorithme pour résoudre le problème maxSegment

136

Raconte-moi ce qui se passe finalement — comment accumulons-nous le tampon?

135

Est-il correct que vous résidez actuellement à [ville] et qu'il vous serait pratique de travailler en format hybride avec des visites au bureau?

135

Quelles sont vos attentes salariales ?

131

Comment limiter le nombre de goroutines pour que pas plus de 'threads' méthodes de Process s'exécutent simultanément ? Qui extraira les tâches du canal ?

130

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

129

Avez-vous de l'expérience dans l'écriture de programmes avec multithreading ou opérations asynchrones?

128

Considérons un exemple : first=[1,1,2], second=[1,2]. Que doit renvoyer votre algorithme et fonctionne-t-il correctement avec les doublons?

127

Quels anti-modèles dans l'architecture microservices connaissez-vous ?

127

[nom] a demandé : en conservant la position d'un élément inférieure à X, quelle sera la position ?

126

Avez-vous occupé des postes de leadership pendant toute votre carrière?

126

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

125

Si on vous propose une offre et que vous l'acceptez, combien de temps vous faudrait-il pour commencer à travailler?

125
/11