Go

Fortgeschrittenes Go

Compiler-Interna, Runtime, Scheduler, cgo, unsafe-Package, Assembly, Build-Tags

20 Interview-Fragen·
Senior
1

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.

2

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.

3

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.

4

Was ist cgo und in welchem Kontext sollte es verwendet werden?

5

Welche Direktive ermöglicht das bedingte Kompilieren von Code basierend auf dem Ziel-OS oder der Zielarchitektur?

+17 Interview-Fragen

Meistere Go für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten