Deep Engineering

Подготовка к собеседованию

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

28 уроков в линии

Все вопросы и короткие ответы — одной страницей →

  1. 1Структуры и методы в Go: значение, которое копируется целиком50 МИН
  2. 2Указатели в Go: всё передаётся по значению, даже указательПонятнее после: Структуры и методы55 МИН
  3. 3Рефлексия в Go: reflect.Type, reflect.Value и правило изменяемостиПонятнее после: Структуры и методы · Указатели50 МИН
  4. 4io.Reader и io.WriterКонтракт из двух методовПонятнее после: Структуры и методы55 МИН
  5. 5Инструменты goBuild, vet, fmt и что они проверяют45 МИН
  6. 6Функции и замыкания в Go: что захватывается и когдаПонятнее после: Указатели55 МИН
  7. 7Пакеты и проектПакеты в Go: видимость, init и структура проектаПонятнее после: Структуры и методы · Инструменты go50 МИН
  8. 8Модули и зависимости в Go: go.mod, go.sum и минимальная версияПонятнее после: Пакеты и проект60 МИН
  9. 9JSON и тегиJSON в Go: теги, omitempty и что encoding/json делает молчаПонятнее после: Структуры и методы · Рефлексия65 МИН
  10. 10Паттерны конкурентности в Go: пул воркеров, конвейер, fan-inПонятнее после: Функции и замыкания65 МИН
  11. 11СрезыСрез в Go: окно над чужим массивом, два пути append и правило роста, которое все помнят неверно35 МИН
  12. 12КартыКарта в Go: группа из восьми, порог 7/8 и промах, который дороже попадания40 МИН
  13. 13Строки и руныСтроки, руны и байты: почему len не считает символы, а подстрока держит мегабайтыПонятнее после: Срезы30 МИН
  14. 14ИнтерфейсыИнтерфейс в Go: два слова, nil, который не nil, и вызов дороже в четыре раза35 МИН
  15. 15Получатель метода в Go: копия, которой не видно, и «указатель быстрее», которое неверноПонятнее после: Интерфейсы25 МИН
  16. 16Встраивание структур в Go: композиция, которую путают с наследованиемПонятнее после: Получатель метода30 МИН
  17. 17Ошибки в Go: одна буква, которая рвёт цепочку, и утверждение типа, которое перестанет работатьПонятнее после: Интерфейсы25 МИН
  18. 18defer, panic, recoverdefer, panic и recover в Go: три момента вместо одного и recover, который молча не работаетПонятнее после: Ошибки35 МИН
  19. 19Context в Go: отмена только вниз, cancel, который не про отмену, и Value, который дорожает с глубинойВернитесь после: Каналы · Планировщик30 МИН
  20. 20ПланировщикГорутины и планировщик Go: две тысячи байт, вытеснение и GOMAXPROCS, который ограничивает не то, что думают30 МИН
  21. 21КаналыКанал в Go: значение мимо буфера, select без приоритетов и цена, которую платят парковкойПонятнее после: Планировщик25 МИН
  22. 22sync и atomic в Go: два совета, которые разваливаются при замереПонятнее после: Каналы · Планировщик30 МИН
  23. 23Гонки данных в Go: что ломается, что видит -race и чего он не видитПонятнее после: sync и atomic35 МИН
  24. 24Стек и кучаСтек, куча и escape-анализ: почему указатель ещё ничего не значитПонятнее после: Срезы · Интерфейсы30 МИН
  25. 25Сборщик мусораПочему пауза не растёт вместе с кучей, а GOGC ничего не ускоряетПонятнее после: Стек и куча30 МИН
  26. 26Профилирование в Go: что показывает pprof и чего он не показывает по умолчаниюПонятнее после: Сборщик мусора30 МИН
  27. 27Тестирование в Go: что на самом деле делают t.Run, t.Parallel и бенчмаркПонятнее после: Гонки данных35 МИН
  28. 28HTTP-сервер в Go: что net/http делает сам и чего не делает, пока не попросятПонятнее после: Context30 МИН

Финальная проверка: линия Go

По одному вопросу на каждый урок линии. Здесь не пересказ уроков, а те места, где механизм даёт ответ, которого не ждут: общий массив после append, порядок обхода карты, select без приоритетов и nil, который не nil.

Финальная проверка1 / 28

type Team struct{ Name string; Members []string }. a := Team{Name: `core`, Members: []string{`ann`}}; b := a; b.Name = `infra`; b.Members[0] = `bob`. Что напечатает fmt.Println(a.Name, a.Members[0])?