P
prepair.app
Пройти интервью →
EnglishУкраїнськаРусскийDeutsch
🦫

Junior Go BackendВопросы на собеседовании Golang

Junior · без опыта / до 1 года

Собеседование Go фокусируется на горутинах, каналах, интерфейсах и обработке ошибок — язык маленький, поэтому вопросы идут вглубь, а не вширь. Ниже — самые частые с эталонными ответами. Junior: базовая теория, определения и простые практические кейсы.

Попробовать — без регистрации
Готовим вопрос…

Темы для подготовки

Горутины и планировщик
Каналы и select
Интерфейсы и композиция
Обработка ошибок
Слайсы и мапы
Контекст и отмена

7 вопросов уровня Junior с ответами

1

Чем массив отличается от слайса?

Ответ

У массива фиксированная длина, и она часть типа: [3]int и [4]int — разные типы. Слайс — это вид на массив: указатель, длина и ёмкость. На практике вы пишете слайсами, а массив остаётся тем хранилищем, которое вы не называете.

2

Что происходит при append за пределы ёмкости слайса?

Ответ

Go выделяет новый массив побольше, копирует туда элементы и возвращает слайс, указывающий на новый. Старый продолжает смотреть на старый массив — поэтому append возвращает значение, которое обязательно надо присвоить. Игнорирование результата — классическая ошибка новичка, и работает она ровно до превышения ёмкости.

3

Что такое нулевое значение и зачем оно в Go?

Ответ

У каждого типа есть пригодный к использованию ноль: 0 у чисел, пустая строка, nil у указателей, карт и слайсов. Объявленная переменная всегда инициализирована, случайно прочитать неопределённое состояние нельзя. Отсюда следствие: структуре с осмысленными нулями часто вообще не нужен конструктор.

4

Чем получатель-значение отличается от получателя-указателя?

Ответ

Получатель-значение работает с копией, поэтому изменения не переживут вызов; получатель-указатель работает с оригиналом. Указатель берут, когда метод меняет состояние или когда структура достаточно велика, чтобы копирование стоило. Путаница начинается при смешивании обоих на одном типе — тогда наборы методов T и *T расходятся.

5

Как устроена обработка ошибок и почему нет исключений?

Ответ

Ошибки — обычные значения, возвращаемые рядом с результатом и проверяемые на месте вызова. Многословность здесь намеренная: путь, на котором что-то ломается, виден в коде, а не спрятан в раскрутке стека. panic существует для действительно невосстановимых ситуаций, и использование его как управляющей конструкции отметит любой ревьюер.

6

Что такое горутина и чем она отличается от потока?

Ответ

Горутина — функция, которую планирует рантайм Go, а не операционная система. Стартует она с пары килобайт и растёт, поэтому сотни тысяч — обычное дело, тогда как столько же системных потоков не завести. Рантайм раскладывает их по небольшому пулу настоящих потоков.

7

Что делает `defer` и когда он выполняется?

Ответ

Откладывает вызов до возврата из функции — любым путём. Поэтому там закрывают файл и снимают мьютекс, рядом со строкой, которая его открыла или взяла. Аргументы вычисляются в момент defer, а не выполнения, и это удивляет тех, кто откладывает вызов с переменной цикла.

🦎

Прочитать ответы недостаточно

На собеседовании ты говоришь вслух под давлением. Кем задаст эти же вопросы, оценит каждый ответ и покажет, что именно подтянуть.

Пройти интервью Junior Go Backend →
Бесплатно · 3 интервью в месяц

Другие уровни — Go Backend

Middle Go BackendSenior Go BackendВсе вопросы Go Backend

Другие специализации

🔍Junior QA Manual🤖Junior QA AutomationJunior Java Backend🐍Junior Python Backend🐘Junior PHP Backend🟢Junior Node.js Backend💎Junior Ruby on Rails🟣Junior .NET Backend Developer🔷Junior C++🟨Junior JavaScript