Golang
Écrivez un code avec un pool de workers pour traiter une slice d'URL avec des requêtes HTTP parallèles.
Qu'est-ce que le protocole QUIC ? Pourquoi a-t-il été inventé ?
Quels modèles de programmation parallèle connaissez-vous ? Donnez un exemple de sémaphore de la bibliothèque standard/pratique de Go et expliquez comment un canal peut être utilisé comme un sémaphore (acquisition et libération).
Parlez-nous de la composition de l'équipe et des processus de développement (sprints, répartition des tâches, revue de code).
Comment optimiser la recherche dans une base de données ? Qu'est-ce que les index et quelle est leur complexité ?
Comment avez-vous géré les retours et les paiements?
Combien de threads le planificateur Go lancera-t-il ? Et spécifiquement sur AMD EPYC avec 64 cœurs et 128 threads ?
Quels sont les avantages et inconvénients des deux scénarios : ajouter des tâches avant de lancer le pool et après le lancement du pool ?
Avez-vous une idée de la différence entre flux et processus?
Types d'invalidation de cache. Quels connais-tu et lesquels as-tu utilisés?
Qu'est-ce qu'un index et quels types d'index existent dans PostgreSQL?
SELECT u.id, u.name, o.id as order_id, o.amount FROM users u ? JOIN orders o ON u.id = o.user_id;
Quelles clés peuvent avoir une map en Go?
Comment insérer 10 milliards de lignes dans ClickHouse rapidement?
À quoi sert HAVING ?
Quelle est la différence entre json.Unmarshal et json.Decoder, et quand utiliseriez-vous chacun d'eux?
Question générale : préparation à l'entretien et sources de questions
Conception d'un système de messagerie évolutif supportant 150 millions d'utilisateurs, 75 millions de DAU, 225 millions de MAU, 1,2M de lectures / 300k d'écritures en pic de QPS, 5 millions d'utilisateurs simultanés, 60 PB de nouvelles données par an, croissance de 30% par an, SLA de 99,95%, p99 <200 ms pour la lecture, <300 ms pour l'écriture. CONTEXTE Il faut concevoir un système de messagerie distribué, similaire à WhatsApp, supportant les chats 1:1 et de groupe, assurant la livraison des messages, l'affichage des statuts en ligne des utilisateurs et le transfert de fichiers multimédia (photos, vidéos, audios). Le système doit garantir une haute disponibilité et une faible latence, supporter un haut parallélisme et évoluer à l'échelle mondiale. EXIGENCES FONCTIONNELLES - Support des chats personnels (1:1) et de groupe avec possibilité d'ajouter/supprimer des participants - Envoi et réception de messages texte et de fichiers multimédia Aucun mécanisme clair de chiffrement end-to-end n'est visible au niveau des services ou des clients, à l'exception d'une annotation générale. - Absence de description explicite du sharding et de la réplication des bases de données par chat_id ou user_id pour la scalabilité et la tolérance aux pannes. - Aucun composant ou mécanisme clair pour gérer la synchronisation hors ligne des messages et des accusés de réception. - La répartition de la charge entre bases de données et services, notamment en période de pics, n'est pas claire. **Points critiques à considérer :**
Que se passera-t-il si il faut abandonner Kafka et le remplacer par un autre broker de messages? Comment isoler Kafka des services externes?
Pourquoi aucune erreur ne revient dans la méthode Process ? Il faut corriger cela et envoyer le code entièrement fonctionnel.