
15 уроков
100 задач
Все темы спрашивают на реальных интервью. В уроках быстро разбираем теорию, чтобы закрыть вопросы, которые спрашивают на собеседованиях + разбираем задачи на эти темы
Типы данных
Задачи урока:
- переполнение целочисленных переменных
- особенности битовых операций со знаковыми числами
- особенности работы с разными системами счисления
- нюансы uintptr
- endianness
- указатели на указатель
Теория урока:
- устройство массивов и срезов
- бесконечная итерация по срезу
- глубокое копирование срезов
- создание среза без инициализации
- возврат среза из функции
- пустые и нулевые срезы
- утечки памяти при работе со срезами
- опасные операции со срезами и массивам
Теория урока:
- устройство строки
- длина строки
- различные способы итерации по строке
- разница итерации по строке и по срезу байт
- особенности получения подстроки из строки
- различные способы конкатенации строк
- использование strings. Builder
- копирование strings. Builder
- конвертация строки в срез байт и обратно
- изменение строки
- утечки памяти при работе со строками
Теория урока:
- устройство словаря
- сравниваемые ключи
- последовательность итерации
- изменение словаря во время итерации
- утечки памяти со словарями
- словари с вещественными числами
- опасные операции со словарями
Задачи урока:
- разные ресиверы
- ambigious selectors
- выравнивание структур
- встраивание типов
- сравнение структур
- пустые структуры
Теория урока:
- устройство интерфейсов
- сравнение интерфейсов
- приведение интерфейсов
- копирование интерфейсов
- срез пустых интерфейсов
- nil интерфейсы
- особенности type assertion
- особенности type switch
Теория урока:
- устройство defer
- defer с циклами
- вычисление defer
- модификация возвращаемого значения с использованием defer
- производительность defer
- последовательность defer-ов
- defer с receiver-ом
Теория урока:
- устройство ошибок
- константные ошибки
- перехват деления на ноль
- перехват переполнения стека и OOM
- перехват размывания nil pointer
- оборачивание ошибок
- пропуск паники
- тонкости паники
- подмена паники
Теория урока:
- устройство аллокатора
- аллокация объектов на стеке и в куче
- аллокация интерфейсов
- аллокация массивов и срезов
Теория урока:
- устройство сборщика мусора
- большие аллокации
- баласты памяти
Теория урока:
- устройство горутин и планировщика
- количество горутин
- запуск горутин
- GOMAXPROCS
- async preemption
- паники с горутинами
- перехват паники из горутины
Задачи урока:
- date race и race condition
- deadlock
- livelock
- некорректная синхронизация структур данных
- локальные мьютексы
- гранулярность блокировок
- опасные операции с мьтексами
- копирование примитивов синхронизации
- CAS
- опасные операции с sync. Cond
- false sharing
Теория урока:
- устройство каналов в языке программирования Go
- select
- data race с каналами
- опасные операции с каналами
- утечки горутин с каналами
- проверка закрытия канала
- nil каналы
- неблокирующая запись и чтение
- приоритизация select
- последовательное выполнение
- особенности записи в канал
Теория урока:
- устройство контекстов
- nil context
- родительские и дочерние контексты
- особенности context. WithValue
- использование контекста
Задачи урока:
- паттерн Fan-In
- паттерн Fan-Out
- паттерн worker pool
- паттерн pipeline
- синхронизация кэша
- распределенный запрос в несколько реплик
- распределенный запрос в несколько шардов