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