Go

Go Avancé

Compiler internals, runtime, scheduler, cgo, unsafe package, assembly, build tags

20 questions d'entretien·
Senior
1

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.

2

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.

3

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.

4

Qu'est-ce que cgo et dans quel contexte l'utiliser ?

5

Quelle directive permet de compiler conditionnellement du code selon l'OS ou l'architecture cible ?

+17 questions d'entretien

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