
Go Avancé
Compiler internals, runtime, scheduler, cgo, unsafe package, assembly, build tags
1Quel outil de la toolchain Go permet d'inspecter le code assembleur généré par le compilateur ?
Quel outil de la toolchain Go permet d'inspecter le code assembleur généré par le compilateur ?
Réponse
La commande go tool compile -S permet d'afficher le code assembleur généré par le compilateur Go. Cet outil est essentiel pour comprendre les optimisations effectuées par le compilateur et pour analyser les performances critiques. Il est également possible d'utiliser go build -gcflags=-S pour obtenir le même résultat lors d'une compilation standard.
2Quelle est la fonction principale du package unsafe en Go ?
Quelle est la fonction principale du package unsafe en Go ?
Réponse
Le package unsafe permet de contourner le système de types de Go pour effectuer des opérations de bas niveau sur la mémoire. Il expose des fonctions comme Pointer, Sizeof, Alignof et Offsetof qui permettent de manipuler directement les adresses mémoire. Son utilisation est déconseillée sauf pour des cas spécifiques comme l'interopérabilité avec du code C ou des optimisations critiques.
3Comment le scheduler Go (GPM) organise-t-il l'exécution des goroutines ?
Comment le scheduler Go (GPM) organise-t-il l'exécution des goroutines ?
Réponse
Le scheduler Go utilise le modèle GPM : G représente les goroutines, P les processeurs logiques (GOMAXPROCS), et M les threads système. Chaque P possède une run queue locale de goroutines. Quand un M est bloqué sur un syscall, le P peut être détaché et associé à un autre M pour continuer l'exécution des goroutines. Ce design permet un scheduling efficace avec un minimum de context switches.
Qu'est-ce que cgo et dans quel contexte l'utiliser ?
Quelle directive permet de compiler conditionnellement du code selon l'OS ou l'architecture cible ?
+17 questions d'entretien
Autres sujets d'entretien Go
Les bases de Go
Structures de données Go
Interfaces Go
Gestion des erreurs
Goroutines basiques
Channels
Go Modules
Serveur HTTP
Client HTTP
Encodage JSON
database/sql
Package context
Testing
Patterns de concurrence
Primitives de synchronisation
Frameworks web Go
Design d'API REST
gRPC
Reflection
Gestion mémoire
Optimisation des performances
Generics
Design Patterns Go
Microservices
Sécurité & Authentication
Docker & Containerization
Kubernetes Basics
Développement CLI
Maîtrise Go pour ton prochain entretien
Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.
Commencer gratuitement