
Go Avanzado
Internos del compilador, runtime, scheduler, cgo, paquete unsafe, assembly, build tags
1¿Qué herramienta de la toolchain de Go permite inspeccionar el código assembly generado por el compilador?
¿Qué herramienta de la toolchain de Go permite inspeccionar el código assembly generado por el compilador?
Respuesta
El comando go tool compile -S muestra el código assembly generado por el compilador de Go. Esta herramienta es esencial para comprender las optimizaciones del compilador y analizar código crítico para el rendimiento. También es posible usar go build -gcflags=-S para obtener el mismo resultado durante una compilación estándar.
2¿Cuál es la función principal del paquete unsafe en Go?
¿Cuál es la función principal del paquete unsafe en Go?
Respuesta
El paquete unsafe permite eludir el sistema de tipos de Go para realizar operaciones de memoria de bajo nivel. Expone funciones como Pointer, Sizeof, Alignof y Offsetof que permiten manipular directamente las direcciones de memoria. Su uso se desaconseja excepto en casos específicos como la interoperabilidad con código C o las optimizaciones críticas.
3¿Cómo organiza el scheduler de Go (GPM) la ejecución de las goroutines?
¿Cómo organiza el scheduler de Go (GPM) la ejecución de las goroutines?
Respuesta
El scheduler de Go usa el modelo GPM: G representa las goroutines, P los procesadores lógicos (GOMAXPROCS) y M los threads del sistema. Cada P tiene una run queue local de goroutines. Cuando un M se bloquea en un syscall, el P puede desvincularse y asociarse a otro M para continuar la ejecución de las goroutines. Este diseño permite una planificación eficiente con un mínimo de context switches.
¿Qué es cgo y en qué contexto debe usarse?
¿Qué directiva permite compilar condicionalmente código según el OS o la arquitectura de destino?
+17 preguntas de entrevista
Otros temas de entrevista Go
Fundamentos de Go
Estructuras de datos en Go
Interfaces en Go
Manejo de errores
Goroutines básicas
Channels
Go Modules
Servidor HTTP
Cliente HTTP
Codificación JSON
Database/SQL
Paquete context
Testing
Patrones de concurrencia
Primitivas de sincronización
Frameworks web de Go
Diseño de API REST
gRPC
Reflection
Gestión de memoria
Optimización del rendimiento
Generics
Go Design Patterns
Microservices
Seguridad y autenticación
Docker & Containerization
Kubernetes Basics
Desarrollo de CLI
Domina Go para tu próxima entrevista
Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.
Empieza gratis