Вопрос с собеседования · Go

Чем Go отличается от других языков и почему его выбирают для бэкенда?

JuniorОсновы языка
Ещё спрашивают так:
  • Какие сильные и слабые стороны у Go?
Коротко

Go — компилируемый статически типизированный язык с простым синтаксисом, сборщиком мусора и встроенной конкурентностью (горутины и каналы). Компилируется в один статический бинарник, быстро собирается — удобно для сервисов, CLI и инфраструктуры (Docker, Kubernetes, Terraform написаны на Go).

  • Нет классов и наследования — структуры, методы, встраивание и неявные интерфейсы
  • Ошибки — значения, а не исключения
  • Минимализм намеренный: один способ форматирования (gofmt), мало возможностей языка

А ещё Слабые стороны: многословная обработка ошибок, дженерики появились поздно (1.18), паузы GC короче, чем у JVM, но управлять памятью тоньше нельзя

Подробно

Почему для бэкенда:

  • конкурентность — горутины стоят килобайты, их можно запустить сотни тысяч; сетевой код пишется блокирующим и прямолинейным;
  • развёртывание — один бинарник без рантайма и зависимостей, образ контейнера в десятки мегабайт;
  • скорость сборки и запуска — секунды на сборку, миллисекунды на старт;
  • читаемость — мало конструкций, код в разных командах выглядит одинаково, легко входить новичкам;
  • стандартная библиотека — HTTP-сервер, JSON, криптография, тесты и профилировщик из коробки.

Чем расплачиваются:

  • if err != nil после каждого вызова;
  • нет исключений, перегрузки, наследования, тернарного оператора;
  • выразительности меньше, чем в Kotlin или Rust;
  • GC есть, поэтому для систем с жёсткими требованиями к задержкам иногда выбирают Rust или C++.

Типичные ниши: микросервисы, API-шлюзы, инфраструктурные инструменты, сетевые прокси, CLI.

Что хотят услышать

  • Основные свойства языка.
  • Почему удобен для сервисов.
  • Честные недостатки.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Компилируемый, статически типизированный, с горутинами и GC
  • ✗Go — интерпретируемый язык с динамической типизацией и встроенной виртуальной машиной
  • ✗Go требует виртуальной машины для запуска
  • ✗В Go есть классы и наследование

Что спросят дальше

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

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

Разбор собеседования