
Go Avanzato
Interni del compilatore, runtime, scheduler, cgo, package unsafe, assembly, build tag
1Quale strumento della toolchain di Go permette di ispezionare il codice assembly generato dal compilatore?
Quale strumento della toolchain di Go permette di ispezionare il codice assembly generato dal compilatore?
Risposta
Il comando go tool compile -S mostra il codice assembly generato dal compilatore Go. Questo strumento è essenziale per comprendere le ottimizzazioni del compilatore e analizzare codice critico per le prestazioni. È anche possibile usare go build -gcflags=-S per ottenere lo stesso risultato durante una compilazione standard.
2Qual è lo scopo principale del package unsafe in Go?
Qual è lo scopo principale del package unsafe in Go?
Risposta
Il package unsafe permette di aggirare il sistema dei tipi di Go per eseguire operazioni di memoria a basso livello. Espone funzioni come Pointer, Sizeof, Alignof e Offsetof che consentono di manipolare direttamente gli indirizzi di memoria. Il suo utilizzo è sconsigliato tranne in casi specifici come l'interoperabilità con codice C o ottimizzazioni critiche.
3Come organizza lo scheduler di Go (GPM) l'esecuzione delle goroutine?
Come organizza lo scheduler di Go (GPM) l'esecuzione delle goroutine?
Risposta
Lo scheduler di Go usa il modello GPM: G rappresenta le goroutine, P i processori logici (GOMAXPROCS) e M i thread di sistema. Ogni P ha una run queue locale di goroutine. Quando un M è bloccato su una syscall, il P può essere scollegato e associato a un altro M per continuare l'esecuzione delle goroutine. Questo design consente uno scheduling efficiente con un minimo di context switch.
Cos'è cgo e in quale contesto dovrebbe essere usato?
Quale direttiva permette di compilare condizionalmente il codice in base all'OS o all'architettura di destinazione?
+17 domande da colloquio
Altri argomenti di colloquio Go
Fondamenti di Go
Strutture dati in Go
Interfacce in Go
Gestione degli errori
Goroutine di base
Channels
Go Modules
Server HTTP
Client HTTP
Codifica JSON
Database/SQL
Pacchetto context
Testing
Pattern di concorrenza
Primitive di sincronizzazione
Framework web Go
Progettazione di API REST
gRPC
Reflection
Gestione della memoria
Ottimizzazione delle prestazioni
Generics
Go Design Patterns
Microservices
Sicurezza e autenticazione
Docker & Containerization
Kubernetes Basics
Sviluppo CLI
Padroneggia Go per il tuo prossimo colloquio
Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.
Inizia gratis