GoLang

Go (Golang) — компилируемый многопоточный язык программирования.

Язык Go разрабатывался как язык программирования для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах. Он может рассматриваться, как попытка создать замену языкам Си и C++.

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

Вопросы

  • Как хранятся переменные в Golang?

  • Что представляет собой тип данных string в Go?

  • Что вернет функция len(), примененная к строке?

  • Что собой представляет тип данных rune?

  • Как устроен слайс и чем он отличается от массива?

  • Как работает функция append? Что происходит с capacity и базовым массивом?

  • Как создать многомерный массив в Golang

  • Нужно ли передавать slice по ссылке в функцию?

  • Что представляет собой map?

  • Чем является функция в Go?

  • Что такое метод структуры? Что такое получатель (receiver) метода? В чем разница между получателем по значению и указателем?

  • Значения-методы и выражения-методы - в чем отличие?

  • Что такое интерфейсы? Как устроен пустой интерфейс?

  • ООП в Golang

  • Как в golang освобождает память и можно ли отключить это поведение и зачем это делать?

  • Что такое каналы и каких видов они бывают?

    • В чем отличие буферизированного канала от небуферизированного?
    • Какой дефолтный размер буфера у канала?
    • Что вернет получение значения из закрытого канала?
    • Что произойдет при записи значения в закрытый канал?
    • Что будет если писать в неинициализированный канал?
  • Как огранить число потоков на системы при запуске Golang программы и возможно ли огранить их до 1 потока?

  • Каким способом происходит отмена работы других горутин?

  • Почему важно завершать горутины по окончании / прерывании работы главной программы?

  • Что такое гонка данных (race condition, состояние гонки)? Какие существуют способы избежать состояния гонки в Go?

  • Что такое семафор? Бинарный семафор? Что такое mutex? Какие бывают виды mutex в Go?

  • В чем различия goroutine от потока системы?

Дополнительно: