40 вопросов
Практика
Что такое struct в Go и как ты можешь его определить и использовать в коде?
Что такое nil value interface и почему это может привести к неожиданному поведению?
Ты можешь описать интерфейсы io.Reader и io.Writer в Go, включая их основные методы и то, какую роль они играют в модели абстракции ввода-вывода в Go?
Как в Go реализовать dependency injection, и какой пример использования интерфейсов и функций-конструкторов для этого?
Что такое type alias в Go и как его использовать, чтобы дать новое имя существующему типу, например `int`?
Какая цель и определение типа time.Duration в Go?
Какая цель и определение руны в языке программирования Go?
Что такое map в Go и для чего он нужен в основном?
Что такое struct tag, и зачем он нужен в Go, особенно когда дело касается JSON сериализации?
Что такое пустая структура в Go и в каких ситуациях её обычно используют?
Какие проблемы с производительностью возникают, когда ты передаёшь большие struct'ы как параметры функции в Go, и какие способы есть, чтобы это оптимизировать?
Как ты используешь type assertion, чтобы вытащить базовое значение из интерфейса в Go?
Можешь объяснить, для чего нужен пустой интерфейс в Go и как он работает? И расскажи, как использовать type assertions и type switches, чтобы работать со значениями неизвестного типа?
Что такое интерфейс в Go и как тип может реализовать интерфейс?
Можешь объяснить, как в Go работает сборка мусора? Конкретно про concurrent mark-and-sweep алгоритм и как он управляет памятью, при этом позволяя горутинам продолжать работать?
Чем отличается map от struct и чем они разные по своим характеристикам, типа организации данных и гибкости?
В чём разница между функциями `append` и `copy` когда работаешь со срезами в Go?
В чём разница между оператором == и функцией reflect.DeepEqual() в Go, и в каких ситуациях каждый из них подходит использовать?
Что такое анонимная функция в Go и как её обычно определяют и используют?
Что такое вариадическая функция, и ты можешь показать пример, как она работает в коде?
В чём разница между value и pointer receivers в Go и как это влияет на возможность менять исходные данные?
Что такое method receivers в Go и как они определяют, связан ли метод со значением или указателем?
Какая цель команды `go generate`, и как она использует специальные комментарии в исходном коде, чтобы выполнять команды?
Что такое сборка мусора в Go и как она автоматически управляет памятью, освобождая неиспользуемые ресурсы?
Какая связь между срезами и массивами, и как срезы дают динамический вид на массив?
Зачем нужна iota в Go и как она работает?
Как ты объявишь константную переменную, и можешь ли ты дать пример с использованием значения Пи?
Что такое константа в Go и как её определить?
Чем отличается `var` от `:=` в Go и как они влияют на объявление переменных и вывод типов?
Можешь объяснить, как в Go работает модель видимости и как она определяет, экспортированы ли идентификаторы или нет?
Можно ли иметь несколько функций инициализации, и если да, в каком порядке они выполняются?
Как ты можешь создать map в Go, и как ты бы присвоил значение ключу и проверил, существует ли ключ в map'е?
Какие есть разные способы инициализировать и создавать слайсы в Go, и чем они отличаются по длине, объему памяти и начальным значениям?
Что такое slice в Go и чем он отличается от массива фиксированного размера?
В чём разница между функциями `new` и `make` в Go, и как они по-разному работают с выделением памяти и инициализацией для разных типов?
Что такое указатель в Go и как его объявить и использовать?
Что такое ключевое слово `defer` в Go и как оно влияет на порядок выполнения функций?
Какие есть эффективные стратегии, чтобы снизить оверхед сборки мусора в приложениях?
Какие основные фишки у языка Go и как они влияют на его производительность и удобство использования?
Можешь объяснить, что такое Golang и какие у него главные фишки?