
Просунутий Go
Внутрішня будова компілятора, runtime, scheduler, cgo, пакет unsafe, assembly, build tags
1Який інструмент Go toolchain дозволяє перевіряти код assembly, згенерований компілятором?
Який інструмент Go toolchain дозволяє перевіряти код assembly, згенерований компілятором?
Відповідь
Команда go tool compile -S відображає код assembly, згенерований компілятором Go. Цей інструмент необхідний для розуміння оптимізацій компілятора та аналізу критичного для продуктивності коду. Також можна використовувати go build -gcflags=-S, щоб отримати той самий результат під час стандартної збірки.
2Яка основна мета пакета unsafe у Go?
Яка основна мета пакета unsafe у Go?
Відповідь
Пакет unsafe дозволяє обходити систему типів Go для виконання низькорівневих операцій з пам'яттю. Він надає функції на кшталт Pointer, Sizeof, Alignof та Offsetof, які дозволяють напряму маніпулювати адресами пам'яті. Його використання не рекомендується, окрім специфічних випадків, як-от взаємодія з кодом C чи критичні оптимізації.
3Як scheduler Go (GPM) організовує виконання goroutine?
Як scheduler Go (GPM) організовує виконання goroutine?
Відповідь
Scheduler Go використовує модель GPM: G представляє goroutine, P — логічні процесори (GOMAXPROCS), а M — системні потоки. Кожен P має локальну run queue goroutine. Коли M заблокований на syscall, P може бути від'єднаний і пов'язаний з іншим M для продовження виконання goroutine. Така конструкція забезпечує ефективне планування з мінімальною кількістю context switch.
Що таке cgo і в якому контексті його слід використовувати?
Яка директива дозволяє умовно компілювати код залежно від цільової OS або архітектури?
+17 питань зі співбесід
Інші теми співбесід Go
Основи Go
Структури даних Go
Інтерфейси Go
Обробка помилок
Основи goroutines
Channels
Go Modules
HTTP-сервер
HTTP-клієнт
Кодування JSON
Database/SQL
Пакет context
Testing
Патерни конкурентності
Примітиви синхронізації
Веб-фреймворки Go
Проєктування REST API
gRPC
Reflection
Керування пам'яттю
Оптимізація продуктивності
Generics
Go Design Patterns
Microservices
Безпека та автентифікація
Docker & Containerization
Kubernetes Basics
Розробка CLI
Опануй Go для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно