Введение и вступительный тест
Входит в программу: Go-разработчик и Продвинутый Go-разработчик
Вы узнаете о том, как устроено обучение, и пройдёте тест по основам бэкенд-разработки и синтаксиса Go.
Пакеты стандартной библиотеки
Входит в программу: Go-разработчик и Продвинутый Go-разработчик
В этом модуле расскажем о популярных пакетах Go. Вы научитесь писать и тестировать HTTP-приложения с net/http, управлять передачей данных и временем жизни задач c context, делать запросы в базу данных, познакомитесь с особенностями сериализации и обработки ошибок в Go.
Конкурентность
Входит в программу: Go-разработчик и Продвинутый Go-разработчик
Расскажем, что такое многопоточность на уровне операционной системы. Вы узнаете, в чём разница между потоком и процессом, какие существуют виды многопоточности, что происходит при переключении потоков, как бороться с deadlock и datarace. Отвечая на эти и другие вопросы, плавно перейдём к устройству планировщика Go. Потом познакомим вас с легковесными потоками в языке — goroutines и другими средствами языка для написания многопоточных приложений.
Промежуточный проект
Выполните проект по техническому заданию: разработаете HTTP API для управления учётными записями пользователей и их накопительными счетами в рамках программы лояльности интернет-магазина. Работать можно индивидуально или в команде с другими студентами. А ещё, если захотите, сможете выбрать другую тему проекта, предварительно согласовав её с ментором.
Взаимодействие с системой
Осуществите его через HTTP‑хендлеры для регистрации и входа в систему, загрузки и просмотра номеров заказов, просмотра и вывода баллов
Хранение данных
Для этого используете PostgreSQL, а структуру таблиц и формат хранения подберёте самостоятельно
Интеграции
Обеспечите интеграцию с внешним сервисом, который работает по принципу «чёрного ящика»: он будет рассчитывать начисление баллов лояльности
Разработаете систему лояльности для интернет‑магазина Гофермарт или выполните проект на тему, которую выберете сами
Паттерны проектирования Go
Разберёте паттерны проектирования и антипаттерны программирования на Go. Узнаете, как реализовать наиболее распространённые паттерны проектирования приложений и как избежать неявных ошибок при программировании на Go.
Паттерны проектирования
Антипаттерны программирования
Паттерны проектирования
Порождающие паттерны, структурные паттерны, поведенческие паттерны
Антипаттерны программирования
Постулаты Go, лучшие практики и антипаттерны
Туллинг
Научитесь использовать тулинг для стилизации и статического анализа кода, создания документации, кодогенерации и профилирования.
Pprof
Gofmt
Goimports
Godoc
Swagger
Профилирование и стилизация
Бенчмарки, инструмент pprof, форматирование кода: gofmt и goimports
Документация
Генерирование документации командой godoc, спецификация Swagger, шаблон example_test.go
Статический анализ кода
Команда go vet, пакет go/ast, пакет x/analysis, пакет staticcheck
Дженерики и кодогенерация
Инструменты метапрограммирования: кодогенерация, шаблоны, рефлексия, абстрактное синтаксическое дерево и дженерики
Флаги сборки и компиляции
Флаги сборки и компиляции, build constraints
Расширенная стандартная библиотека
Завершите знакомство со встроенными пакетами Go и познакомитесь с расширенной стандартной библиотекой языка — она содержит большое количество полезных пакетов.
Stdlib
Math/rand
Crypto/rand
Bytes
Bufio
Os
Sync и x/sync
Net
TCP и UDP
gRPC
Protocol Buffers
Экспресс-обзор стандартной библиотеки
Пакеты стандартной библиотеки, расширенная стандартная библиотека
Генерация случайных чисел
Псевдослучайные числа и криптостойкие случайные числа, пакеты math/rand и crypto/rand
Чтение данных и буфер
Пакет bytes: работа со слайсами, пакет bufio: буферизованное чтение и запись данных
Работа с операционной системой
Пакет os, работа с директориями и процессами, вызов внешних приложений, сигналы
Примитивы синхронизации
Пакеты sync, x/sync, oбработка ошибок, возвращаемых из Goroutines, Semafore для контроля доступа к общему ресурсу, потокобезопасная мапа sync.Map, singleflight для предотвращения параллельного выполнения кода
Работа с сетью
Пакет net, работа с TCP и UDP, IP‑адреса, работа с удалённым вызовом процедур
Protocol Buffers и фреймворк gRPC
Protocol Buffers и gRPC, разработка gRPC‑сервера и клиента
Итоговый проект
Выполните проект по техническому заданию: разработаете менеджер паролей — клиент-серверную систему, которая позволяет надёжно хранить и синхронизировать логины, пароли и другую приватную информацию. Работать можно индивидуально или в команде с другими студентами. А ещё, если захотите, сможете выбрать другую тему проекта, предварительно согласовав её с ментором.
Клиент и сервер
Спроектируете клиентскую часть в виде CLI‑приложения — для аутентификации и доступа к приватным данным, и серверную часть — для хранения и синхронизации данных между устройствами пользователя
Дополнительные функции
Добавите поддержку одноразовых паролей (OTP) и терминального пользовательского интерфейса (TUI)
Разработаете менеджер паролей GophKeeper или выполните проект на тему, которую выберете сами
Дополнительно・3 темы・5 недель
Алгоритмы и структуры данных
Это опциональный модуль, который вы сможете пройти в свободном темпе, без дедлайнов и сопровождения ментора.
Структуры данных
Рекурсия
Сортировки
Хеш-функции
Хеш-таблицы
Основные структуры данных
Понятия алгоритма и сложности, временная и пространственная сложность, алгоритмические собеседования, массив, связный список, стек, очередь, сложность операций вставки, поиска и удаления, представление данных в памяти, пространственная сложность алгоритма
Рекурсия и сортировки
Понятие рекурсии, принцип «Разделяй и властвуй», бинарный поиск, квадратичные сортировки, сортировка слиянием, быстрая сортировка, линейная сортировка подсчётом
Хеш‑функции и хеш‑таблицы
Абстракция отображения, понятие и свойства хеш‑функции, примеры, структура данных, хеш‑таблица, коллизии и способы их разрешения
Карьерный центр・4 недели
Трудоустройство
Эта часть курса для тех, кто решил найти работу в сфере разработки. Вы изучите стратегии поиска работы и узнаете о тонкостях выбора компании-работодателя, подготовите портфолио, напишете резюме и сопроводительное письмо.
С наставником・Каждые 2 недели
Вебинары для разбора сложных тем, сессии Q&A