Вопросы с собеседований по Go

43 тем · 471 вопросов

471 вопросов, которые реально задают на собеседованиях по Go в российских и международных компаниях. Каждый вопрос проверен - он встречался на реальных интервью. Формат: 4 варианта ответа, подробное пояснение. Именно эти вопросы используются в quiz-игре и mock-собеседовании для обучения в игровой форме. 43 тем: от базового синтаксиса до горутин, каналов и generics.

1
Основы синтаксиса
Фундамент языка Go: типы данных, переменные, константы, операторы и zero values. Эти знания необходимы для написания любой программы на Go и часто встречаются на собеседованиях.
21
вопр.
2
Циклы и range
Циклы for и range - единственная конструкция итерации в Go. Range работает со слайсами, map, каналами, строками и целыми числами (Go 1.22+). Понимание тонкостей копирования элементов и вычисления длины критически важно.
5
вопр.
3
iota и перечисления
iota - встроенный счётчик для создания перечислений в блоках const. Начинается с 0, увеличивается на 1 для каждой строки. Сбрасывается в новом блоке const.
3
вопр.
4
Указатели
Указатели в Go позволяют передавать данные по ссылке. В отличие от C, арифметика указателей запрещена. Операторы & (взятие адреса) и * (разыменование) - базовые конструкции.
4
вопр.
5
Строки и руны
Строки в Go - это неизменяемые последовательности байт в UTF-8. Понимание разницы между byte и rune критически важно для корректной работы с Unicode и кириллицей.
12
вопр.
6
Массивы и слайсы
Слайсы - основная структура данных для работы с коллекциями в Go. Важно понимать их внутреннее устройство (указатель + длина + ёмкость) и отличие от массивов.
16
вопр.
7
Map
Map в Go - встроенная хеш-таблица для хранения пар ключ-значение. Ключевые особенности: отсутствие гарантированного порядка, panic при записи в nil map, ограничения на типы ключей.
12
вопр.
8
Структуры и методы
Структуры - основной способ организации данных в Go. Методы с value и pointer receiver, встраивание (embedding) вместо наследования, теги полей для JSON и других форматов.
15
вопр.
9
Интерфейсы
Интерфейсы в Go реализуются неявно (duck typing). Пустой интерфейс interface{} (any), type assertion, type switch и тонкости с nil-интерфейсами - частые темы собеседований.
16
вопр.
10
Пакеты и модули
Система модулей Go: go.mod, go.sum, go mod tidy, vendor. Функция init(), экспорт через заглавную букву, организация кода в пакеты.
8
вопр.
11
defer, panic, recover
Механизмы управления потоком выполнения: defer откладывает вызов до конца функции, panic вызывает аварийное завершение, recover перехватывает панику. Порядок выполнения defer - LIFO.
11
вопр.
12
Обработка ошибок
Go использует явную обработку ошибок через возвращаемые значения вместо исключений. errors.Is, errors.As, оборачивание через %w - ключевые инструменты работы с ошибками.
11
вопр.
13
Горутины и конкурентность
Горутины - легковесные потоки, управляемые рантаймом Go. Конкурентность - ключевая сила языка. Важно понимать data race, GOMAXPROCS и утечки горутин.
18
вопр.
14
Каналы
Каналы - основной механизм коммуникации между горутинами в Go. Буферизованные и небуферизованные, однонаправленные, select, закрытие каналов и типичные паттерны использования.
15
вопр.
15
Пакет sync
Пакет sync предоставляет примитивы синхронизации: Mutex, RWMutex, WaitGroup, Once, Pool. Необходимы для безопасной работы с общими данными из нескольких горутин.
14
вопр.
16
Context
context.Context - механизм для передачи дедлайнов, сигналов отмены и request-scoped данных. Всегда передаётся первым аргументом функции по конвенции Go.
8
вопр.
17
Тестирование
Встроенная система тестирования Go: пакет testing, файлы _test.go, бенчмарки, параллельные тесты. Всё работает из коробки без внешних фреймворков.
15
вопр.
18
Стандартная библиотека
Богатая стандартная библиотека Go: net/http для веб-серверов, encoding/json для JSON, fmt для форматирования, io для потоков, time для работы с временем.
22
вопр.
19
Generics
Generics (параметрический полиморфизм) добавлены в Go 1.18. Квадратные скобки для параметров типа, constraints (any, comparable), type sets для ограничения типов.
9
вопр.
20
Разное / продвинутое
Продвинутые темы Go: go vet, go fmt, go:embed, сборщик мусора, рефлексия, unsafe.Pointer, variadic функции, замыкания и другие особенности языка.
37
вопр.
21
Сети и протоколы
Основы сетевого взаимодействия: TCP vs UDP, HTTP/1.1 и HTTP/2, TLS, WebSocket, DNS, модель OSI. Знание протоколов необходимо для backend-разработки и часто проверяется на собеседованиях.
10
вопр.
22
ОС: процессы и потоки
Фундамент операционных систем: процессы, потоки, виртуальная память, переключение контекста, deadlock. Понимание различий между конкурентностью и параллелизмом критически важно для Go-разработчика.
7
вопр.
23
REST API
REST - архитектурный стиль для API: HTTP-методы, статусы ответов, stateless, идемпотентность, пагинация, версионирование. Основа большинства веб-сервисов и частая тема на собеседованиях.
6
вопр.
24
gRPC
gRPC - высокопроизводительный фреймворк для межсервисного взаимодействия поверх HTTP/2. Protocol Buffers, 4 типа взаимодействия (unary, streaming), deadline, interceptors.
6
вопр.
25
PostgreSQL
PostgreSQL - основная реляционная СУБД для Go-проектов. MVCC, WAL, уровни изоляции, VACUUM, типы индексов, EXPLAIN ANALYZE, connection pooling, JSONB, upsert - ключевые темы для backend-разработчика.
19
вопр.
26
SQL
SQL - язык запросов к реляционным БД. JOIN'ы, агрегации, CTE, оконные функции, транзакции (ACID), индексы, нормализация, N+1 проблема. Обязательные знания для любого backend-разработчика.
26
вопр.
27
ClickHouse
ClickHouse - колоночная OLAP СУБД для аналитики. MergeTree, колоночное хранение, сжатие, векторизация запросов. Используется для логов, метрик и аналитических отчётов по большим объёмам данных.
4
вопр.
28
Kafka
Apache Kafka - распределённая платформа для потоковой обработки событий. Топики, партиции, consumer groups, offset, гарантии доставки (at-least-once, exactly-once). Стандарт для микросервисных архитектур.
7
вопр.
29
Redis
Redis - in-memory хранилище с поддержкой структур данных (строки, списки, sorted sets, хеши). Используется как кеш, брокер сообщений, session store. TTL, persistence (RDB/AOF), distributed lock.
7
вопр.
30
Docker
Docker - контейнеризация приложений. Образы и контейнеры, Dockerfile (multi-stage build, CMD vs ENTRYPOINT), volumes, networking, Docker Compose. Стандартный инструмент для разработки и деплоя.
8
вопр.
31
Kubernetes
Kubernetes - оркестрация контейнеров. Pod, Deployment, StatefulSet, Service, Ingress, ConfigMap/Secret, liveness/readiness probes, HPA, Namespace, Helm. Стандарт для production-инфраструктуры.
10
вопр.
32
Мониторинг
Мониторинг приложений: Prometheus (pull-модель, типы метрик, PromQL, labels) и Grafana (datasources, дашборды). Alertmanager для уведомлений. Обязательные знания для production-систем.
6
вопр.
33
Go runtime
Внутреннее устройство Go: сборщик мусора (tri-color mark & sweep), escape analysis, модель GMP (Goroutine-Machine-Processor), стек горутин и GOMAXPROCS. Частые вопросы на senior-собеседованиях.
11
вопр.
34
Микросервисы
Микросервисная архитектура: Service Discovery, API Gateway, Event-driven, CQRS, Saga, идемпотентность, Distributed Tracing. Паттерны взаимодействия и координации сервисов.
10
вопр.
35
Рефлексия
Пакет reflect: TypeOf vs ValueOf, CanSet и адресуемость, чтение struct tags, проверка реализации интерфейсов. Производительность reflect vs generics и когда рефлексия оправдана.
6
вопр.
36
Безопасность
Безопасность веб-приложений на Go: криптография (crypto/rand, bcrypt), защита от SQL-инъекций, JWT-токены, TLS/HTTPS, CORS, CSRF, XSS, rate limiting и управление секретами.
10
вопр.
37
Паттерны проектирования
Паттерны проектирования в Go: Functional Options, Worker Pool, Fan-in/Fan-out, Pipeline, Circuit Breaker, Retry с backoff, Dependency Injection, Middleware, Singleflight.
12
вопр.
38
I/O и потоки данных
Интерфейсы io.Reader и io.Writer - центральные абстракции Go. io.Copy, bufio.Scanner, io.Pipe, TeeReader, MultiWriter, LimitReader - композиция потоков без загрузки в память.
10
вопр.
39
JSON и сериализация
Работа с JSON в Go: encoding/json, кастомный MarshalJSON/UnmarshalJSON, json.Decoder для потоков, RawMessage для отложенного парсинга, struct tags, encoding/gob для Go-to-Go.
6
вопр.
40
Профилирование и оптимизация
Инструменты профилирования Go: go tool pprof (CPU, heap, goroutine), go tool trace, бенчмарки (b.ResetTimer, b.ReportAllocs), flame graph. Поиск узких мест и оптимизация аллокаций.
6
вопр.
41
Кеширование
Паттерны кеширования: Cache-Aside, Write-Through/Behind, LRU. Проблема cache stampede и singleflight. TTL, инвалидация, in-process vs distributed cache.
6
вопр.
42
Модель памяти Go
Go Memory Model: happens-before, видимость записей между горутинами, переупорядочивание операций компилятором и процессором, синхронизация через каналы, мьютексы и atomic.
3
вопр.
43
Инструменты сборки
Кросс-компиляция (GOOS/GOARCH), линковка (-ldflags -X для вшивания версии, -s -w для уменьшения бинарника), CGO_ENABLED=0 для статической сборки, Docker scratch-образы.
3
вопр.
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.