
Geavanceerd Go
Compiler-internals, runtime, scheduler, cgo, unsafe-package, assembly, build tags
1Welke tool van de Go-toolchain maakt het mogelijk de door de compiler gegenereerde assembly-code te inspecteren?
Welke tool van de Go-toolchain maakt het mogelijk de door de compiler gegenereerde assembly-code te inspecteren?
Antwoord
Het commando go tool compile -S toont de door de Go-compiler gegenereerde assembly-code. Deze tool is essentieel om compiler-optimalisaties te begrijpen en performancekritische code te analyseren. Het is ook mogelijk om go build -gcflags=-S te gebruiken om hetzelfde resultaat te bereiken tijdens een standaardbuild.
2Wat is het hoofddoel van het unsafe-package in Go?
Wat is het hoofddoel van het unsafe-package in Go?
Antwoord
Het unsafe-package maakt het mogelijk om het typesysteem van Go te omzeilen om low-level geheugenoperaties uit te voeren. Het stelt functies beschikbaar zoals Pointer, Sizeof, Alignof en Offsetof die directe manipulatie van geheugenadressen mogelijk maken. Het gebruik ervan wordt afgeraden, behalve in specifieke gevallen zoals interoperabiliteit met C-code of kritische optimalisaties.
3Hoe organiseert de Go-scheduler (GPM) de uitvoering van goroutines?
Hoe organiseert de Go-scheduler (GPM) de uitvoering van goroutines?
Antwoord
De Go-scheduler gebruikt het GPM-model: G staat voor goroutines, P voor logische processoren (GOMAXPROCS) en M voor systeemthreads. Elke P heeft een lokale run-queue van goroutines. Wanneer een M geblokkeerd is op een syscall, kan de P worden losgekoppeld en aan een andere M worden gekoppeld om de uitvoering van goroutines voort te zetten. Dit ontwerp maakt efficiënte scheduling mogelijk met minimale context switches.
Wat is cgo en in welke context moet het worden gebruikt?
Welke directive maakt het mogelijk code voorwaardelijk te compileren op basis van het doel-OS of de doelarchitectuur?
+17 gespreksvragen
Andere Go-sollicitatieonderwerpen
Go-basis
Go-datastructuren
Go-interfaces
Foutafhandeling
Goroutines-basis
Channels
Go Modules
HTTP-server
HTTP-client
JSON-codering
Database/SQL
context-pakket
Testing
Concurrency-patronen
Synchronisatieprimitieven
Go-webframeworks
REST API-ontwerp
gRPC
Reflection
Geheugenbeheer
Prestatie-optimalisatie
Generics
Go Design Patterns
Microservices
Beveiliging en authenticatie
Docker & Containerization
Kubernetes Basics
CLI-ontwikkeling
Beheers Go voor je volgende gesprek
Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.
Begin gratis