Быстрая подготовка к собеседованию по Golang [Владимир Балун]

Bot

Администратор
Команда форума
23 Янв 2020
172,510
2,989
113
269049.jpg

15 уроков
100 задач
Все темы спрашивают на реальных интервью. В уроках быстро разбираем теорию, чтобы закрыть вопросы, которые спрашивают на собеседованиях + разбираем задачи на эти темы
Типы данных

Задачи урока:

  • переполнение целочисленных переменных
  • особенности битовых операций со знаковыми числами
  • особенности работы с разными системами счисления
  • нюансы uintptr
  • endianness
  • указатели на указатель
Массивы и срезы

Теория урока:
  • устройство массивов и срезов
Задачи урока:
  • бесконечная итерация по срезу
  • глубокое копирование срезов
  • создание среза без инициализации
  • возврат среза из функции
  • пустые и нулевые срезы
  • утечки памяти при работе со срезами
  • опасные операции со срезами и массивам
Строки
Теория урока:

  • устройство строки
Задачи урока:
  • длина строки
  • различные способы итерации по строке
  • разница итерации по строке и по срезу байт
  • особенности получения подстроки из строки
  • различные способы конкатенации строк
  • использование strings. Builder
  • копирование strings. Builder
  • конвертация строки в срез байт и обратно
  • изменение строки
  • утечки памяти при работе со строками
Словари
Теория урока:

  • устройство словаря
Задачи урока:
  • сравниваемые ключи
  • последовательность итерации
  • изменение словаря во время итерации
  • утечки памяти со словарями
  • словари с вещественными числами
  • опасные операции со словарями
Структуры

Задачи урока:
  • разные ресиверы
  • ambigious selectors
  • выравнивание структур
  • встраивание типов
  • сравнение структур
  • пустые структуры
Интерфейсы
Теория урока:

  • устройство интерфейсов
Задачи урока:
  • сравнение интерфейсов
  • приведение интерфейсов
  • копирование интерфейсов
  • срез пустых интерфейсов
  • nil интерфейсы
  • особенности type assertion
  • особенности type switch
Defer
Теория урока:

  • устройство defer
Задачи урока:
  • defer с циклами
  • вычисление defer
  • модификация возвращаемого значения с использованием defer
  • производительность defer
  • последовательность defer-ов
  • defer с receiver-ом
Ошибки
Теория урока:

  • устройство ошибок
Задачи урока:
  • константные ошибки
  • перехват деления на ноль
  • перехват переполнения стека и OOM
  • перехват размывания nil pointer
  • оборачивание ошибок
  • пропуск паники
  • тонкости паники
  • подмена паники
Аллокатор
Теория урока:

  • устройство аллокатора
Задачи урока:
  • аллокация объектов на стеке и в куче
  • аллокация интерфейсов
  • аллокация массивов и срезов
Сборщик мусора
Теория урока:

  • устройство сборщика мусора
Задачи урока:
  • большие аллокации
  • баласты памяти
Горутины и планировщик Go
Теория урока:

  • устройство горутин и планировщика
Задачи урока:
  • количество горутин
  • запуск горутин
  • GOMAXPROCS
  • async preemption
  • паники с горутинами
  • перехват паники из горутины
Concurrency: примитивы синхронизации
Задачи урока:

  • date race и race condition
  • deadlock
  • livelock
  • некорректная синхронизация структур данных
  • локальные мьютексы
  • гранулярность блокировок
  • опасные операции с мьтексами
  • копирование примитивов синхронизации
  • CAS
  • опасные операции с sync. Cond
  • false sharing
Concurrency: каналы

Теория урока:
  • устройство каналов в языке программирования Go
Задачи урока:
  • select
  • data race с каналами
  • опасные операции с каналами
  • утечки горутин с каналами
  • проверка закрытия канала
  • nil каналы
  • неблокирующая запись и чтение
  • приоритизация select
  • последовательное выполнение
  • особенности записи в канал
Concurrency: контексты
Теория урока:

  • устройство контекстов
Задачи урока:
  • nil context
  • родительские и дочерние контексты
  • особенности context. WithValue
  • использование контекста
Concurrency: паттерны
Задачи урока:

  • паттерн Fan-In
  • паттерн Fan-Out
  • паттерн worker pool
  • паттерн pipeline
  • синхронизация кэша
  • распределенный запрос в несколько реплик
  • распределенный запрос в несколько шардов