Golang
Pourquoi avoir utilisé Kafka et gRPC en même temps ? Quels scénarios passaient par Kafka et lesquels par gRPC ?
Comment stocker correctement l'URL de l'hôte du service externe?
Qu'est-ce qu'une map en Go ? Comment est-elle structurée (nouvelle implémentation dans Go 1.24) ?
Parlez-moi du pipeline CI/CD : quels environnements, quelles étapes, comment le processus a-t-il été construit?
Pourquoi avez-vous décidé de sortir sur le marché ? Qu'est-ce qui ne vous satisfait pas dans votre poste actuel ?
Pourquoi utilise-t-on des interfaces en Go, quels sont leurs avantages et inconvénients?
Quelle est la différence entre une vue matérialisée et une vue normale?
Avez-vous déjà été confronté à Kubernetes dans vos projets précédents?
Que peut voir la couche du référentiel?
Lors du recalcul du hachage, le hachage reste-t-il le même ou en est-il un nouveau pour la clé?
Qu'est-ce que la concurrence et le parallélisme ? En quoi diffèrent-ils ? Peuvent-ils coexister ?
Quelle quantité de mémoire occupe le type bool?
Surveillez-vous vous-même la surveillance ou avez-vous une équipe séparée?
Comment fonctionne GOMAXPROCS et à quoi sert P (processeur) dans le modèle GMP?
Pourquoi faut-il deux vérifications if (à la ligne 79 et à la ligne avec len(buf)==MaxItems), au lieu d'une seule?
/* Il y a deux serveurs PostgreSQL : * PROD - serveur OLTP, * STATS - serveur pour des requêtes analytiques longues. Sur le serveur actuel, dans la base de données prod, il y a une grande table (10Tb) de la forme suivante : CREATE TABLE profiles( id SERIAL, data JSONB ) La table peut contenir des "trous", c'est-à-dire que certains `id` peuvent être manquants. Il faut écrire un programme pour copier la table profiles de PROD à STATS. On suppose que l'on utilisera les interfaces suivantes pour travailler avec les bases de données : type Row []interface{} type Database interface { // l'implémentation de l'interface Database peut rétablir les connexions // l'appel à SaveRows est idempotent io.Closer GetMaxID(ctx context.Context) (uint64, error) LoadRows(ctx context.Context, minID, maxID uint64) ([]Row, error) // [minID, maxID] SaveRows(ctx context.Context, rows []Row) error } func Connect(ctx context.Context, dbname string) (Database, error) // CopyTable // Si full=false, continuer le transfert de données depuis le point de l'erreur précédente // Si full=true, transférer toutes les données func CopyTable(fromName string, toName string, full bool) error { // ... votre code } Si l'option `full=false` est passée, le programme doit continuer le transfert de données depuis le point de l'erreur précédente. Si `full=true`, il doit transférer toutes les données. **Niveau de base** : - transfert séquentiel des données en un seul flux - récupération après erreur (option `full=false`) Informations supplémentaires : - si nécessaire, vous pouvez étendre l'interface en ajoutant vos propres méthodes - si nécessaire, vous pouvez utiliser directement le package **database/sql**
Que faisiez-vous avec le retard du consommateur lors de la reconfiguration ou de l'arrêt du service?
Veux-tu te développer dans l'architecture?
Peux-tu parler des goroutines ? Que sais-tu d'elles, quelles sont leurs caractéristiques ?
Quels tests ont été effectués sur le projet et comment ont-ils été lancés?