Il y a 3 entités : utilisateur, chat, message • L'utilisateur a un nom et une date d'inscription • Le chat a un nom et une date de création • Le message a du texte, un auteur et une date de création • Un utilisateur peut appartenir à plusieurs chats en même temps • Un message appartient obligatoirement à un chat, et ne peut appartenir qu'à un seul chat à la fois • Il faut décrire le domaine sous forme de tables
Golang
Comment fonctionne un slice en Go de l'intérieur ? Comment fonctionne la fonction append ?
Qu'est-ce qu'une condition de course en Go ? Donnez un exemple.
Qu'est-ce que EXPLAIN et EXPLAIN ANALYZE dans PostgreSQL, quelle est la différence?
Parle-moi d'un défi technique intéressant ou complexe que tu as résolu
Combien d'années d'expérience commerciale en développement avec Go?
Nous avons une base de données avec des mots de passe utilisateur, les mots de passe sont hachés (fonction hashPassword), et nous connaissons également l'ensemble des caractères pouvant être utilisés dans les mots de passe (variable alphabet). Notre tâche est d'implémenter la fonction RecoverPassword pour qu'elle restaure le mot de passe à partir du hash connu et que TestRecoverPassword réussisse. Exigences de base: Tout moyen est acceptable package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func RecoverPassword(h []byte) string { return "" } func hashPassword(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() {
Avec quelles bases de données avez-vous travaillé le plus étroitement?
Quels sont les méthodes HTTP existantes ? Lesquelles sont idempotentes ?
package principal importer ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func RecupererMotDePasse(h []byte) string { return "" } func hashMotDePasse(entree string) []byte { h := md5.Sum([]byte(entree)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashMotDePasse(exp) act := RecupererMotDePasse(h) if act != exp { fmt.Printf("Erreur : on attendait %q, obtenu %q\n", exp, act) ok = false } } if ok { fmt.Println("Tous les tests ont réussi") } }
Comment se déroulera le processus d'envoi et de réception de messages entre deux clients ? Décrivez le flux complet.
Revue de code : cache en Go avec mutex. Trouvez des problèmes et proposez des améliorations. Condition : charge de lecture/écriture 80/20.
package principal import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func RécupérerMotDePasse(h []byte) string { return "" } func hashMotDePasse(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashMotDePasse(exp) act := RécupérerMotDePasse(h) if act != exp { fmt.Printf("Erreur : attendu %q, obtenu %q\n", exp, act) ok = false } } if ok { fmt.Println("Tous les tests ont réussi") } } Pour une exécution correcte du code : point d'entrée -- fonction main dans le package main Tâche : Implémenter la fonction RécupérerMotDePasse, qui restaure le mot de passe d'origine à partir du hash MD5, composé de caractères de l'alphabet donné.
Comment réaliser un arrêt gracieux d'un service Go dans Kubernetes lors du déploiement d'une nouvelle version?
Décrivez la structure d'une requête et d'une réponse HTTP. Comment sont classés les codes de réponse?
Pourquoi envisages-tu de nouvelles propositions ? Recherche active ou passive ?
Que veux-tu maintenant — quelles sont tes attentes pour le nouveau travail?
Quelles tables et champs sont nécessaires dans la base de données PostgreSQL pour ce messager?
Qu'est-ce qui a été le plus difficile et le plus intéressant lors de la migration d'un monolithe vers des microservices?
Que signifie un processus affichant 150 % CPU dans le top ? Est-ce normal ?