
Fortgeschrittenes Go
Compiler-Interna, Runtime, Scheduler, cgo, unsafe-Package, Assembly, Build-Tags
1Welches Tool der Go-Toolchain ermöglicht das Inspizieren des vom Compiler generierten Assembly-Codes?
Welches Tool der Go-Toolchain ermöglicht das Inspizieren des vom Compiler generierten Assembly-Codes?
Antwort
Der Befehl go tool compile -S zeigt den vom Go-Compiler generierten Assembly-Code an. Dieses Tool ist unverzichtbar, um Compiler-Optimierungen zu verstehen und performancekritischen Code zu analysieren. Es ist auch möglich, go build -gcflags=-S zu verwenden, um dasselbe Ergebnis bei einem Standard-Build zu erzielen.
2Was ist der Hauptzweck des unsafe-Packages in Go?
Was ist der Hauptzweck des unsafe-Packages in Go?
Antwort
Das unsafe-Package ermöglicht es, das Typsystem von Go zu umgehen, um Low-Level-Speicheroperationen durchzuführen. Es stellt Funktionen wie Pointer, Sizeof, Alignof und Offsetof bereit, die eine direkte Manipulation von Speicheradressen ermöglichen. Von seiner Verwendung wird abgeraten, außer in bestimmten Fällen wie der Interoperabilität mit C-Code oder kritischen Optimierungen.
3Wie organisiert der Go-Scheduler (GPM) die Ausführung von Goroutines?
Wie organisiert der Go-Scheduler (GPM) die Ausführung von Goroutines?
Antwort
Der Go-Scheduler verwendet das GPM-Modell: G steht für Goroutines, P für logische Prozessoren (GOMAXPROCS) und M für Systemthreads. Jedes P hat eine lokale Run-Queue von Goroutines. Wenn ein M auf einem Syscall blockiert ist, kann das P abgekoppelt und einem anderen M zugeordnet werden, um die Ausführung von Goroutines fortzusetzen. Dieses Design ermöglicht ein effizientes Scheduling mit minimalen Context Switches.
Was ist cgo und in welchem Kontext sollte es verwendet werden?
Welche Direktive ermöglicht das bedingte Kompilieren von Code basierend auf dem Ziel-OS oder der Zielarchitektur?
+17 Interview-Fragen
Weitere Go-Interviewthemen
Go-Grundlagen
Go-Datenstrukturen
Go-Interfaces
Fehlerbehandlung
Goroutines-Grundlagen
Channels
Go Modules
HTTP-Server
HTTP-Client
JSON-Kodierung
Database/SQL
context-Paket
Testing
Concurrency-Patterns
Synchronisationsprimitive
Go-Web-Frameworks
REST-API-Design
gRPC
Reflection
Speicherverwaltung
Performance-Optimierung
Generics
Go Design Patterns
Microservices
Sicherheit und Authentifizierung
Docker & Containerization
Kubernetes Basics
CLI-Entwicklung
Meistere Go für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten