
Zaawansowany Go
Wewnętrzne mechanizmy kompilatora, runtime, scheduler, cgo, pakiet unsafe, assembly, build tagi
1Które narzędzie z toolchaina Go pozwala badać kod assembly generowany przez kompilator?
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.
2Jaki jest główny cel pakietu unsafe w Go?
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.
3Jak scheduler Go (GPM) organizuje wykonywanie goroutine?
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.
Czym jest cgo i w jakim kontekście należy go używać?
Która dyrektywa pozwala warunkowo kompilować kod w zależności od docelowego OS lub architektury?
+17 pytań z rozmów
Inne tematy rekrutacyjne Go
Podstawy Go
Struktury danych w Go
Interfejsy w Go
Obsługa błędów
Podstawy goroutines
Channels
Go Modules
Serwer HTTP
Klient HTTP
Kodowanie JSON
Database/SQL
Pakiet context
Testing
Wzorce współbieżności
Prymitywy synchronizacji
Frameworki webowe Go
Projektowanie API REST
gRPC
Reflection
Zarządzanie pamięcią
Optymalizacja wydajności
Generics
Go Design Patterns
Microservices
Bezpieczeństwo i uwierzytelnianie
Docker & Containerization
Kubernetes Basics
Tworzenie CLI
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