Go

Zaawansowany Go

Wewnętrzne mechanizmy kompilatora, runtime, scheduler, cgo, pakiet unsafe, assembly, build tagi

20 pytań z rozmów·
Senior
1

Które narzędzie z toolchaina Go pozwala badać kod assembly generowany przez kompilator?

Odpowiedź

Polecenie go tool compile -S wyświetla kod assembly generowany przez kompilator Go. To narzędzie jest niezbędne do zrozumienia optymalizacji kompilatora i analizy kodu krytycznego dla wydajności. Można również użyć go build -gcflags=-S, aby uzyskać ten sam wynik podczas standardowej kompilacji.

2

Jaki jest główny cel pakietu unsafe w Go?

Odpowiedź

Pakiet unsafe pozwala obejść system typów Go w celu wykonywania niskopoziomowych operacji na pamięci. Udostępnia funkcje takie jak Pointer, Sizeof, Alignof i Offsetof, które umożliwiają bezpośrednią manipulację adresami pamięci. Jego użycie jest odradzane z wyjątkiem określonych przypadków, takich jak interoperacyjność z kodem C lub krytyczne optymalizacje.

3

Jak scheduler Go (GPM) organizuje wykonywanie goroutine?

Odpowiedź

Scheduler Go używa modelu GPM: G reprezentuje goroutine, P procesory logiczne (GOMAXPROCS), a M wątki systemowe. Każdy P ma lokalną run queue goroutine. Gdy M jest zablokowany na syscallu, P może zostać odłączony i powiązany z innym M, aby kontynuować wykonywanie goroutine. Ten projekt umożliwia wydajne planowanie przy minimalnej liczbie context switchy.

4

Czym jest cgo i w jakim kontekście należy go używać?

5

Która dyrektywa pozwala warunkowo kompilować kod w zależności od docelowego OS lub architektury?

+17 pytań z rozmów

Opanuj Go na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo