Golang
Parlez-moi de la conception du système de modération/orchestrateur — comment l'avez-vous conçu, quelles décisions avez-vous prises?
Quelle stratégie de mise en cache choisir : cache-aside ou write-through, en tenant compte du comportement des utilisateurs lors de la vérification du statut de la commande?
Quelles règles de travail avec les canaux doivent être connues lors du développement (fermé, ouvert, quand quoi peut être fait) ?
Écrire un problème en langage Go — section pratique (problèmes de la vie réelle du développeur, sans algorithmes) : améliorer ou corriger un service. Durée — 1,5 heures.
Que faire si les utilisateurs se plaignent du changement de modèle de monétisation, mais que l'entreprise a un plan clair?
Codage en direct : sémaphore — comment il fonctionne et sa mise en œuvre basée sur un canal tamponné.
Quelle méthodologie utilisez-vous : Scrum, Kanban ou un mélange ?
Quelle est la limitation d'un sémaphore et d'un canal tamponné comme solutions pour limiter les requêtes parallèles?
Avez-vous déjà entendu parler de [entreprise] ou de nos produits?
Qu'est-ce que les estimations?
Avec quoi ne voudrais-tu plus être confronté au travail?
Quel est votre niveau : middle, middle+, senior?
Analyse du code en Go : que fait le code, quels problèmes y a-t-il?
À quel groupe (mutable/immuable) appartient l'interface en Go?
Qu'est-ce que les jetons d'autorisation et quels sont-ils?
Quelle est la différence entre les bases de données relationnelles et NoSQL?
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 :**
Énumérez la pile principale en Go
Avez-vous déjà dû enregistrer des heures, suivre le temps dans un système quelconque?
""" Les places dans le cinéma sont disposées en une seule rangée. Un spectateur qui vient d'arriver choisit une place, pour s'asseoir aussi loin que possible des autres spectateurs dans la rangée. Autrement dit, la distance entre la place, où le spectateur s'assiéra, et le spectateur le plus proche doit être maximale. Il est garanti qu'il y a toujours des places libres dans la rangée et qu'au moins un spectateur est déjà assis. Écrivez une fonction qui, étant donné une rangée de places (un tableau de zéros et de uns), renvoie la distance (nombre d'espaces entre les sièges) entre la place choisie et le spectateur le plus proche. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }