Golang: популярные вопросы на собеседовании
Golang: вопросы и ответы для подготовки к собеседованию. Раздел охватывает: синтаксис и типы, горутины и каналы, синхронизацию (mutex/atomic/WaitGroup), контекст и отмену, обработку ошибок, память и сборщик мусора (GC), производительность и профилирование/бенчмарки, модули и сборку, HTTP/gRPC и сеть, тестирование, дженерики.
Всего вопросов: 97
Junior
-
Какие базовые типы данных есть в Go? Junior
-
Как объявлять переменные в Go? Junior
-
В чем разница между = и := при объявлении переменных? Junior
-
Можно ли объявить переменную и не использовать её? Junior
-
Как скопировать содержимое одного среза в другой? Junior
-
Как проверить наличие ключа в map? Junior
-
Что вернёт обращение к map по отсутствующему ключу? Junior
-
Что произойдёт при добавлении элемента в nil map? Junior
-
Можно ли изменить строку (string) после создания? Junior
-
Что такое нулевое значение (zero value) в Go? Junior
-
Какие типы могут содержать значение nil? Junior
-
Что означает имя, начинающееся с заглавной буквы, в Go-коде? Junior
-
Может ли функция в Go возвращать несколько значений? Junior
-
Что такое blank-идентификатор `_` и где он используется? Junior
-
Есть ли в Go механизм исключений (try/catch)? Junior
-
Как получить подстроку из строки в Go? Junior
-
Как сравнить две строки на равенство в Go? Junior
-
Является ли Go статически типизированным языком или динамически типизированным? Junior
-
В Go параметры функций передаются по значению или по ссылке? Junior
Middle
-
Что делает оператор `defer` в Go? Middle
-
В каком порядке выполняются несколько объявленных defer-вызовов? Middle
-
Что такое метод в Go и чем он отличается от функции? Middle
-
Когда стоит определять метод с указателем-получателем (pointer receiver)? Middle
-
Есть ли в Go классы и наследование? Middle
-
Что такое встраивание (embedded struct) и зачем его используют? Middle
-
Что такое интерфейс (interface) в Go? Middle
-
Может ли один тип реализовать несколько интерфейсов в Go? Middle
-
Как проверить, что тип T удовлетворяет интерфейсу I? Middle
-
Что такое пустой интерфейс (interface{})? Middle
-
Как из значения типа interface{} получить конкретное значение определенного типа? Middle
-
Как организовать написание и запуск тестов в Go? Middle
-
Что такое затенение (shadowing) переменных? Middle
-
Что такое Go Modules и зачем они нужны? Middle
-
Для чего предназначены переменные окружения GOROOT и GOPATH? Middle
-
Как скомпилировать и запустить Go-приложение? Middle
-
Гарантирован ли порядок обхода элементов в map при итерации? Middle
-
Можно ли сравнить два среза на равенство через `==`? Middle
-
Как конвертировать срез байт []byte в строку и наоборот? Middle
-
Что такое panic и как с ней работать? Middle
-
Что такое замыкание (closure) в Go? Middle
-
Что произойдёт при делении целого числа и числа с плавающей точкой на ноль? Middle
-
Что будет, если в функции объявить переменную с тем же именем, что и глобальная (внешняя)? Middle
-
Можно ли внутри функции создать блок кода в фигурных скобках без условия или цикла? Зачем это нужно? Middle
-
Что такое идентификатор `iota` в Go? Middle
-
Как определить собственный тип ошибки (custom error) в Go? Middle
-
Позволяет ли Go объявлять перечисления (enum)? Middle
-
Для чего используется утилита `go vet`? Middle
-
Можно ли напрямую проверить, равны ли два словаря (map) между собой? Middle
-
Какие типы нельзя сравнивать оператором `==` напрямую? Middle
-
Какие типы могут использоваться в качестве ключей в map? Middle
-
Как правильно сравнить содержимое двух срезов на равенство? Middle
-
Что означает `...` (троеточие) при объявлении параметров функции и при вызове функции? Middle
Senior
-
Как работает сборщик мусора (Garbage Collector) в Go? Senior
-
Как снизить задержки от работы сборщика мусора в производительных приложениях? Senior
-
Почему считается, что "встраивание не равно наследование" в Go? Senior
-
Каковы основные преимущества языка Go? Senior
-
Как реализованы ограничения (constraints) в дженериках Go? Senior
-
Как реализованы map в Go под капотом? Senior
-
Как изменяется емкость динамического массива при росте среза? Senior
-
Каков размер пустой структуры struct{} и зачем она может использоваться? Senior
-
В чем недостатки использования рефлексии (reflect) в Go? Senior
-
Почему interface{} со значением nil внутри не равен nil? Senior
-
Когда вычисляются аргументы функций, переданных в defer? Senior
-
Что произойдет при вызове recover вне отложенной функции? Senior
-
Как завершить выполнение программы без выполнения отложенных функций? Senior
-
Чем отличается panic от os.Exit()? Senior
-
Как очистить все содержимое словаря (map)? Senior
-
Как представлено значение интерфейсного типа (interface) в памяти? Senior
-
Можно ли в Go работать с очень большими числами (выходящими за пределы int64)? Senior
-
Гарантируется ли порядок вычисления аргументов функции в Go? Senior
-
Оптимизирует ли компилятор Go хвостовую рекурсию (tail call optimization)? Senior
-
Как ограничить компиляцию Go-файла для определённой операционной системы или архитектуры? Senior
-
Что произойдёт, если структура одновременно встраивает (embed) два разных типа, у которых есть методы с одинаковыми именами? Senior
-
Для чего используется blank import (импорт с "_")? Senior
-
Можно ли вызывать метод с pointer-приемником на значении структуры и наоборот? Senior
-
Что позволяет сделать пакет embed (директива `//go:embed`)? Senior
-
Что означают символы `~` и `|` при описании ограничений обобщённого типа в Go? Senior