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

Огромная база актуальных инфопродуктов
Самый большой склад обучающих материалов в СНГ. Более 40000 уникальных курсов, схем заработка, книг, вебинаров, мануалов, тренингов
Получить доступ

Bot

Администратор
Команда форума
23 Янв 2020
138,639
750
113
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
  • синхронизация кэша
  • распределенный запрос в несколько реплик
  • распределенный запрос в несколько шардов