SobesLab логотип SobesLab

Junior

  1. Какие базовые типы данных есть в Go? Junior
  2. Как объявлять переменные в Go? Junior
  3. В чем разница между = и := при объявлении переменных? Junior
  4. Можно ли объявить переменную и не использовать её? Junior
  5. Что такое указатель в Go? Junior
  6. Что такое структура (struct) в Go? Junior
  7. Что такое массив в Go? Junior
  8. Чем срез (slice) отличается от массива? Junior
  9. Как добавить новый элемент в срез? Junior
  10. Как скопировать содержимое одного среза в другой? Junior
  11. Как удалить элемент из среза? Junior
  12. Что такое map в Go? Junior
  13. Как создать (инициализировать) новый map? Junior
  14. Как проверить наличие ключа в map? Junior
  15. Что вернёт обращение к map по отсутствующему ключу? Junior
  16. Что произойдёт при добавлении элемента в nil map? Junior
  17. Можно ли изменить строку (string) после создания? Junior
  18. Чем отличаются типы rune и byte? Junior
  19. Что такое нулевое значение (zero value) в Go? Junior
  20. Какие типы могут содержать значение nil? Junior
  21. Что означает имя, начинающееся с заглавной буквы, в Go-коде? Junior
  22. Для чего нужен пакет main в Go? Junior
  23. Может ли функция в Go возвращать несколько значений? Junior
  24. Что такое blank-идентификатор `_` и где он используется? Junior
  25. Есть ли в Go перегрузка функций или методов? Junior
  26. Есть ли в Go механизм исключений (try/catch)? Junior
  27. Как объединить две строки в одну? Junior
  28. Как получить подстроку из строки в Go? Junior
  29. Как сравнить две строки на равенство в Go? Junior
  30. Является ли Go статически типизированным языком или динамически типизированным? Junior
  31. В Go параметры функций передаются по значению или по ссылке? Junior

Middle

  1. Что делает оператор `defer` в Go? Middle
  2. В каком порядке выполняются несколько объявленных defer-вызовов? Middle
  3. Что такое метод в Go и чем он отличается от функции? Middle
  4. Когда стоит определять метод с указателем-получателем (pointer receiver)? Middle
  5. Есть ли в Go классы и наследование? Middle
  6. Что такое встраивание (embedded struct) и зачем его используют? Middle
  7. Что такое интерфейс (interface) в Go? Middle
  8. Может ли один тип реализовать несколько интерфейсов в Go? Middle
  9. Как проверить, что тип T удовлетворяет интерфейсу I? Middle
  10. Что такое пустой интерфейс (interface{})? Middle
  11. Как из значения типа interface{} получить конкретное значение определенного типа? Middle
  12. Что такое type switch в Go? Middle
  13. Как организовать написание и запуск тестов в Go? Middle
  14. Для чего используется инструмент `go fmt`? Middle
  15. Что такое затенение (shadowing) переменных? Middle
  16. Поддерживает ли Go дженерики (обобщённые типы)? Middle
  17. Что такое Go Modules и зачем они нужны? Middle
  18. Для чего предназначены переменные окружения GOROOT и GOPATH? Middle
  19. Как скомпилировать и запустить Go-приложение? Middle
  20. Гарантирован ли порядок обхода элементов в map при итерации? Middle
  21. Как устроен срез (slice) внутри себя? Middle
  22. Что показывают len и cap у среза? Middle
  23. Можно ли сравнить два среза на равенство через `==`? Middle
  24. Как конвертировать срез байт []byte в строку и наоборот? Middle
  25. Что такое panic и как с ней работать? Middle
  26. Что такое замыкание (closure) в Go? Middle
  27. Что произойдёт при делении целого числа и числа с плавающей точкой на ноль? Middle
  28. Что будет, если в функции объявить переменную с тем же именем, что и глобальная (внешняя)? Middle
  29. Можно ли внутри функции создать блок кода в фигурных скобках без условия или цикла? Зачем это нужно? Middle
  30. Что такое идентификатор `iota` в Go? Middle
  31. Как определить собственный тип ошибки (custom error) в Go? Middle
  32. Позволяет ли Go объявлять перечисления (enum)? Middle
  33. Для чего используется утилита `go vet`? Middle
  34. Можно ли напрямую проверить, равны ли два словаря (map) между собой? Middle
  35. Какие типы нельзя сравнивать оператором `==` напрямую? Middle
  36. Какие типы могут использоваться в качестве ключей в map? Middle
  37. Как правильно сравнить содержимое двух срезов на равенство? Middle
  38. Что означает `...` (троеточие) при объявлении параметров функции и при вызове функции? Middle

Senior

  1. Как работает сборщик мусора (Garbage Collector) в Go? Senior
  2. Как снизить задержки от работы сборщика мусора в производительных приложениях? Senior
  3. Что такое escape analysis в Go? Senior
  4. Почему считается, что "встраивание не равно наследование" в Go? Senior
  5. Каковы основные преимущества языка Go? Senior
  6. Какие недостатки и ограничения есть у Go? Senior
  7. Как реализованы ограничения (constraints) в дженериках Go? Senior
  8. Как реализованы map в Go под капотом? Senior
  9. Как изменяется емкость динамического массива при росте среза? Senior
  10. Каков размер пустой структуры struct{} и зачем она может использоваться? Senior
  11. В чем недостатки использования рефлексии (reflect) в Go? Senior
  12. Для чего предназначен пакет unsafe? Senior
  13. Почему interface{} со значением nil внутри не равен nil? Senior
  14. Когда вычисляются аргументы функций, переданных в defer? Senior
  15. Что произойдет при вызове recover вне отложенной функции? Senior
  16. Как завершить выполнение программы без выполнения отложенных функций? Senior
  17. Чем отличается panic от os.Exit()? Senior
  18. Как очистить все содержимое словаря (map)? Senior
  19. Как представлено значение интерфейсного типа (interface) в памяти? Senior
  20. Можно ли в Go работать с очень большими числами (выходящими за пределы int64)? Senior
  21. Гарантируется ли порядок вычисления аргументов функции в Go? Senior
  22. Оптимизирует ли компилятор Go хвостовую рекурсию (tail call optimization)? Senior
  23. Как ограничить компиляцию Go-файла для определённой операционной системы или архитектуры? Senior
  24. Что произойдёт, если структура одновременно встраивает (embed) два разных типа, у которых есть методы с одинаковыми именами? Senior
  25. Для чего используется blank import (импорт с "_")? Senior
  26. Можно ли вызывать метод с pointer-приемником на значении структуры и наоборот? Senior
  27. Что позволяет сделать пакет embed (директива `//go:embed`)? Senior
  28. Что означают символы `~` и `|` при описании ограничений обобщённого типа в Go? Senior