Go

Go Avanzato

Interni del compilatore, runtime, scheduler, cgo, package unsafe, assembly, build tag

20 domande da colloquio·
Senior
1

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.

2

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.

3

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.

4

Cos'è cgo e in quale contesto dovrebbe essere usato?

5

Quale direttiva permette di compilare condizionalmente il codice in base all'OS o all'architettura di destinazione?

+17 domande da colloquio

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