xxxzsx / Software Engineer Roadmap
Labels
Projects that are alternatives of or similar to Software Engineer Roadmap
Карта развития профессионального разработчика
- Проектирование
- Алгоритмы и структуры данных
- Математика
- Криптографические алгоритмы
- Сетевые технологии
- Peer-to-peer сети
- Блокчейн
Ресурсы
Map of Computer Science - YouTube
RoadMap для начинающего разработчика - YouTube
Карта развития веб-разработчика
Инструменты разработчика
Среда разработки (IDE)
Лучший текстовый редактор — Sublime Text 3.
Лучшие IDE для работы — от JetBrains:
PhpStorm, WebStorm (JS), PyCharm (Python), RubyMine, IntelliJ IDEA (Java), Android Studio, AppCode (Swift), ReSharper (C#), CLion (C/C++).
- Твоя IntelliJ IDEA или Как кодить со скоростью мысли - YouTube
- Эффективная работа с кодом в IntelliJ IDEA, или Знаете ли вы свою IDE как знаем её мы? - YouTube
Полезные онлайн-сервисы
Файлообменники
Тайм-менеджмент и заметки
Вёрстка
HTML
CSS
Инструменты для вёрстки
Figma • Zeplin • Avocode
Онлайн-сервисы анализа страниц
Расширения для удобной работы
Полный курс по JavaScript
Взрыв жопы
- Приведение типов данных
- Области видимости, замыкания, хойстинг
- Ивент луп
React
Vue.js
Webpack
Node
Express
Koa
Python
asyncio
aiohttp
Flask
Django
Книги
Книга "Легкий способ выучить Python 3 еще глубже" — купить в интернет-магазине OZON с быстрой доставкой
Книга "Вероятностное программирование на Python. Байесовский вывод и алгоритмы" — купить в интернет-магазине OZON с быстрой доставкой
Книга "Python for Finance Cookbook" — купить в интернет-магазине OZON с быстрой доставкой
Книга "Разработка веб-приложений с использованием Flask на языке Python" — купить в интернет-магазине OZON с быстрой доставкой
C/C++
C
C++
Многопоточность
Производительность
Базы данных
Изменение данных (Data Modification / DML)
- INSERT, AUTO INCREMENT, DELETE, UPDATE. Вставка записей в таблицы, их обновление и удаление. Методы разрешения дубликатов первичного ключа.
- Заполнение таблиц данными с помощью графического интерфейса.
- Фильтрация данных с помощью WHERE IN.
SELECT-запросы и WHERE
- Получение и фильтрация данных с помощью SQL-команд SELECT и WHERE; проверка на NULL; фильтрация данных по нескольким условиям. Как использовать простые и агрегирующие функции, сложные типы данных, как сортировать и ограничивать результат запроса, объединять результаты нескольких запросов, использовать модификатор DISTINCT.
- Агрегатные функции: Как суммировать данные, высчитывать среднее и определять количество строк с помощью функций COUNT, SUM, MIN, MAX и других.
- Агрегатные функции по аналитическим разрезам: Как высчитывать минимальное и максимальное значения, группировать и фильтровать данные с помощью функций MAX, MIN, DISTINCT, HAVING и других.
- Аналитические функции: Аналитические функции, такие как row_number(), lead/lag. Как применять аналитические функции по группам и выбирать данные из «окна».
- Типы данных: Какие типы данных существуют, в каких случаях их применять и как преобразовывать.
Подзапросы и представления
- Использование подзапросов и понимание их производительности. Виды представлений и как их создавать.
- UNION. Объединение результатов нескольких SQL-запросов с помощью оператора UNION.
- GROUP BY. Группировка выбранного набора строк с использованием оператора GROUP BY.
- Фильтрация в GROUP BY с использованием HAVING; увеличение скорости выполнения запросов с использованием индексов.
- Секционирование и план запроса: как разбить большую таблицу на удобные секции и работать с данными внутри них. Оптимизатор Oracle и способы проверять и изменять план запроса.
Группировка
- Способы группировать результаты запросов, использовать агрегацию и фильтрацию в результатах группировки. Порядок выполнения этапов запроса, особенности работы группировки с модификатором DISTINCT, ORDER BY, LIMIT и строгий режим SQL.
Отношения (реляции/relations)
- Виды отношений между сущностями: один к одному, один ко многим, многие ко многим. Как использовать первичные и внешние ключи.
Соединения (JOIN)
- INNER JOIN, LEFT JOIN, RIGHT JOIN. Разберётесь в различных видах соединений. Научитесь применять соединения для отношений один ко многим и многие ко многим. Поймёте, что такое нормализация и денормализация и их влияние на производительность.
- Объединение данных: как объединять и вычитать наборы данных, соединять таблицы, обогащать данные.
- Присоединение таблиц: как соединить несколько таблиц и работать с нормализованными представлениями данных.
Оконные функции (Window Functions)
- Оконные функции и как их применять. Особенности работы оконных функций с группировкой и выражениями ORDER BY и PARTITION BY.
Объекты базы данных
- Работа с объектами базы данных, как распределять данные по ролям, создавать схемы и представлять данные в удобном для пользователя виде.
PL/SQL
- Простейшие блоки: Процедурное расширение PL/SQL, как писать анонимные блоки и выводить информацию на экран. Операторы if/else.
- Циклы: Как записывать и хранить информацию в переменных, как автоматизировать рутинную работу, циклы for и while.
- Типы PL/SQL-объектов: Как создавать и вызывать процедуры и функции, передавать и получать параметры, создавать пакеты.
- Использование PL/SQL: Системные и пользовательские исключения и как их обрабатывать. Как работать с курсорами и обходить ошибку запуска DDL.
- PL/SQL-таблицы: Как складывать и преобразовывать данные в коллекции и работа с конвейерными функциями. Как обрабатывать большие объекты данных (CLOB).
Транзакции и ACID
- TRANSACTION. Что такое транзакции и зачем они нужны. Атомарность, откат и изоляция транзакций, блокировка записей. Принципы ACID и требования ACID к транзакционной системе.
Программные средства работы с БД
- Оптимальная работа с БД из кода. Как работает соединение с БД, как использовать фреймворки Query Builder, Active Record, Object Relation Mapping, принципы работы JDBC и программного контроля транзакций.
Производительность и системное устройство БД
- Лучшие практики по проектированию схем БД и использованию индексов. Как работает оптимизация запросов и какие есть типичные ошибки, замедляющие запросы. Внутреннее устройство БД.
- Проектирование базы данных, нормальные формы
- Проектирование данных; нормальные формы; первичный ключ. Создание таблиц в графическом интерфейсе MySql Workbench; команда CREATE; типы данных; работа в консоли.
- Объявление структуры данных (Data Definition / DDL), триггеры и хранимые процедуры. Научитесь создавать и удалять схемы баз данных, объявлять и изменять структуру таблиц. Использование триггеров и хранимых процедур и их применимости.
- Понятие согласованности или консистентности данных.
- Индексы
- Индексы и ключи, зачем они нужны, как влияют на производительность. Какие есть виды ключей, когда их применять, как работают индексы и каковы их ограничения.
- Внешний ключ FOREIGN KEY CONSTRAINTS.
- Составной первичный ключ.
Особенности MySQL
- Чем MySQL отличается от других БД, особенности движков MyISAM, InnoDB и MyRocks, форка MariaDB.
Особенности PostgreSQL
- Особенности PostgreSQL: оптимизатор, работа с JSON и XML, план запроса, язык PL/pgSQL.
Введение в NoSQL
- Различия и применимость SQL и NoSQL решений, принципы хранения и структуры данных, производительность. Особенности Redis, MongoDB и других NoSQL решений.
Введение в MongoDB
- Где применяется MongoDB и каковы её особенности. Как устроена схема и типы данных, простые запросы, использование индексов, работа с API из CLI и библиотек в языках программирования.
MongoDB: группировки, транзакции и JavaScript
- Как работают группировки, агрегации и транзакции, как работать с MapReduce, как применяются JavaScript и хранимые процедуры в MongoDB.
MongoDB: работа в кластере, быстродействие и консистентность
- В чём преимущества и особенности при работе в кластере, как осуществляется шардинг. Быстродействие различных операций и как MongoDB обеспечивает сохранность и консистентность.
Введение в Redis
- Где применяется Redis, как работать с коллекциями и типами данных. Принципы хранения данных.
Redis: транзакции, хранимые процедуры и шардинг
- Как работает Pub/Sub в Redis, как работать с языком Lua и хранимыми процедурами, кластерами и шардингом.
Ресурсы
Системное администрирование Linux
- Основы устройства Linux, её файловая система, процессы и память. Что такое точка монтирования, ядро Linux, сокеты и пакетный менеджер.
- Работа с файловой системой, дисками и разделами. Как настроить файл подкачки и смонтировать диск с файловой системой.
- Основные операции в Bash-терминале. Работа с файлами и каталогами
- Привилегии в Linux, управление доступом, учётные записи и групповые политики
- Управление вводом/выводом. Конвейерная обработка
- Управление процессами
- Загрузка и конфигурация ядра в Linux
- Запуск user space, Systemd
- Управление системой, расписание
- Логирование и мониторинг
- Механизмы управления безопасностью. Основные понятия контроля доступа в DAC. Утилиты для управления безопасностью. Создание нового пользователя и ограничение его в правах доступа с помощью SELinux.
- Повышение привилегий в Linux. Методы повышения привилегии пользователя в Linux. Рутинг, SUID, SUDO, cron jobs и контрмеры. Утилиты для повышения привилегий.
Сетевое администрирование Linux
- Интернет
- Как работать с маской подсети и определять адрес сети с помощью IP-адреса. Познакомитесь с методом бесклассовой адресации CIDR.
- Маршрутизация. Таблицы маршрутизации. Default gateway.
- ICMP и DNS
- Физический уровень. Ethernet и сетевые интерфейсы
- Network Configuration Manager vs ifconfig
- DNS
- Localhost
- Транспортный уровень. TCP и UDP, порты и сервисы транспортного уровня.
- DHCP
- Настройка маршрутизации. Приватные сети и трансляция адресов (NAT).
- Linux Firewall
- ARP
- Беспроводные соединения
- Модель клиент-сервер
- Сетевые сервисы
- HTTP/HTTPS
- SSH
- Inetd and xinetd daemons. TCP Wrappers.
- Сбор и анализ трафика с помощью pcap и netflow
Bash
- Работа с файлами и папками. Относительные и абсолютные пути. Операции с файлами и папками. Размер папок и свободное место. Ввод, вывод и перенаправление данных. Команда grep.
- Авторизация и права доступа. Пользователи и права доступа. Авторизация, FTP, SSH и SSH-ключи. Скачивание файлов.
- Процессы, сервисы и задачи. Менеджмент джобов, jobs, bg, fg. Управление процессами, top, ps, kill. Планирование задач, crontab. Сервисы и управление ими.
- Параметры и настройки bash. Популярные сочетания клавиш.
Ресурсы
Книги
Git
Проектирование
Функциональное программирование
Объектно-ориентированное программирование
Ресурсы
Книги
Thinking Recursively: Eric S. Roberts: 9780471816522: Amazon.com: Books
Книга "Рефакторинг. Улучшение существующего кода" — купить в интернет-магазине OZON с быстрой доставкой
Книга "Шаблоны корпоративных приложений " — купить в интернет-магазине OZON с быстрой доставкой
Книга "Приемы объектно-ориентированного проектирования. Паттерны проектирования" — купить в интернет-магазине OZON с быстрой доставкой
Алгоритмы и структуры данных
Сложность алгоритма и простые алгоритмы
- Асимптотическая сложность алгоритма: Сложность алгоритма; Анализ сложности алгоритма.
- Оценка времени выполнения алгоритмов: O Большое (O) — худшее время выполнения алгоритмов; Тета Большое (Θ) — среднее время выполнения; Омега Большое (Ω) — лучшее время выполнения алгоритмов.
- Линейный, ветвящийся, циклический алгоритмы: Линейный алгоритм; Ветвящийся алгоритм; Циклический алгоритм.
- Алгоритм Эвклида, расширенный алгоритм Эвклида, решето Эратосфена: Алгоритм Эвклида; Расширенный алгоритм Эвклида; Решето Эратосфена.
Рекурсия, рекурсивные алгоритмы
- Понятие рекурсии, простые примеры: Понятие рекурсии; Примеры рекурсии; Рекуррентное соотношение.
- Числа Фибоначчи, факториал, стек вызовов: Числа Фибоначчи; Факториал числа; Стек вызовов.
- Треугольные числа, анаграммы: Треугольные числа; Анаграммы.
- Ханойская башня: История и правила задачи; Решение задачи.
- Динамическое программирование: поиск с возвратом: Понятие “Динамическое программирование”; Метод поиска с возвратом; Задача о восьми ферзях; Обход конём шахматной доски.
- Динамическое программирование: поиск всех возможных вариантов: Поиск наибольшей общей подпоследовательности; Поиск маршрутов шахматного короля.
- «Жадные» алгоритмы: Определение “жадных” алгоритмов; Решение задачи о расписании; Примеры использования «жадных» алгоритмов.
Массив
- Понятие и виды массивов: Понятие массива; Виды массивов; Одномерные массивы; Многомерные массивы; Матрицы; Треугольные массивы.
- Базовые сортировки: Цель сортировки; Пузырьковая сортировка; Шейкерная сортировка.
- Сортировки методом вставки и выбора: Сортировка методом вставки; Сортировка методом выбора.
- Алгоритмы поиска: Алгоритмы поиска; Линейный поиск; Поиск с барьером.
- Бинарный и интерполяционный поиск: Бинарный поиск; Интерполяционный поиск.
Сложные сортировки массивов
- Быстрая сортировка Хоара: Сортировка Хоара; Сортировка (разбиение) Ломуто.
- Быстрая сортировка. Улучшения: “Толстое” разбиение; Улучшенная быстрая сортировка; Плюсы и минусы быстрой сортировки.
- Сортировка слиянием: Алгоритм нисходящего слияния; Алгоритм восходящего слияния; Алгоритм двухпутевого слияния; Плюсы и минусы сортировки слиянием.
- Сортировка подсчётом, алгоритм со списком: Сортировка подсчётом (Counting); Сортировка алгоритмом со списком (Pigeonhole sort).
- Блочная сортировка: Блочная сортировка; Плюсы и минусы; Пример кода.
- Улучшенная сортировка вставками (Сортировка Шелла): Улучшенная сортировка вставками.
Стеки, очереди и списки
- Динамические структуры данных: Стеки; Очереди; Дек; Приоритетные очереди.
- Создание стека с использованием массива: Стек на основе массива; Базовые функции для работы со стеком.
- Реализация очереди через массив: Очередь на основе массива.
- Приоритетная и двусторонняя очереди: Очередь с приоритетом; Двусторонняя очередь.
Динамические структуры данных
- Односвязные списки: Односвязные списки; Преимущества и недостатки использования.
- Двусвязные списки: Двусвязные списки; Отличие от односвязных списков; Достоинства и недостатки.
- Циклический список: Циклические списки; Причины использования.
- Стек на основе односвязного списка: Стек; Типовые операции над стеком.
- Очередь на основе двусвязного списка: Очередь; Типовые операции над очередью.
Деревья
- Понятие и виды деревьев: Понятие дерева; Виды деревьев.
- Бинарные деревья
- Очередь с приоритетом и пирамидальная сортировка
- Сбалансированные (АВЛ) деревья
- B-дерево, R-дерево, K-d дерево
- Суффиксные деревья
- Построение бинарного дерева поиска: Структура дерева; Вставка узла; Скобочная запись; Удаление узла.
- Рекурсивный обход бинарного дерева: Рекурсивный обход дерева; Примеры рекурсивного обхода дерева.
- Построение сбалансированного дерева: Сбалансированное дерево; Описание на языке С.
- Бинарный поиск в дереве: Деревья поиска; Бинарный поиск.
- Пирамидальная сортировка (Heap sort): Пирамидальная сортировка.
Графы
- Понятие и виды графов: Графы; Виды графов; Матрица смежности.
- Обход графа в глубину: Обход графа в глубину; Пример описания обхода графа в глубину.
- Обход графа в ширину: Обход графа в ширину; Пример обхода графа в ширину.
- Волновой алгоритм: Волновой алгоритм Ли; Применение волнового алгоритма.
- Реализация волнового алгоритма для дискретного рабочего поля.
Алгоритмы хеширования
- Хеширование, хеш-функции: Хеширование; Хеш-функции; Хеш-таблицы; Коллизии; Метод цепочек.
- MD5
- CRC
- SHA
- Построение таблиц: Хеш-таблицы; Способы создания; Создание хеш-таблицы на основе метода цепочек.
- Открытая адресация: Понятие открытой адресации; Подготовка хеш-таблицы.
- Открытая адресация: Линейное пробирование; Квадратичное пробирование; Двойное хеширование.
- Префиксное дерево
- Алгоритмы поиска подстроки в строке
- Алгоритм Хаффмана
Вероятностные и итеративные алгоритмы
- Динамическое программирование
- Одномерная динамика
- Двумерная динамика
- Численные методы и вычисления с заданной точностью
- Метод Монте-Карло
- Понятие вероятностных алгоритмов и фильтр Блума
- HyperLogLog
Алгоритмы сжатия информации
- Сжатие информации без потерь
Криптографические алгоритмы
Ресурсы
Книги
Книга "Алгоритмы. Вводный курс" — купить в интернет-магазине OZON с быстрой доставкой
Книга "Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих" — купить в интернет-магазине OZON с быстрой доставк
Книга "Структура и Интерпретация Компьютерных Программ" — купить в интернет-магазине OZON с быстрой доставкой
Книга "Искусство программирования. Том 1. Основные алгоритмы" — купить в интернет-магазине OZON с быстрой доставкой
Книга "Искусство программирования. Том 2. Получисленные алгоритмы" — купить в интернет-магазине OZON с быстрой доставкой
Цифровая книга "Искусство программирования. Том 3. Сортировка и поиск" — купить в интернет-магазине OZON с быстрой доставкой
Книга "Искусство программирования, том 4А. Комбинаторные алгоритмы. Часть 1" — купить в интернет-магазине OZON с быстрой доставкой
Математика
Криптографические алгоритмы
- Понятие и история шифра, принцип Кирхгофа. Симметричное шифрование, шифр Вернама, поточные и блочные шифры. Симметричные и асимметричные криптосистемы.
- Критерии качества шифров, рассеивание и перемешивание информации, концепция абсолютно стойкого шифра, одноразовый блокнот, внутреннее устройство алгоритмов шифрования, сеть Фейстеля, SP-сеть, примеры алгоритмов: ГОСТ-28147-89 и AES
- Режимы симметричного блочного шифрования, организация детерминированных цепочек блоков, генераторы псевдо-случайных чисел, гаммирование, поточные шифры
- Криптографическое хеширование, современные стандарты: SHA-256, Keccak, Blake2, требования к безопасности и атаки на алгоритмы, принципы построения, примеры. Случайный оракул, подпись Лэмпорта, MAC, аутентифицированное шифрование.
- Односторонние функции, алгоритм выработки общего секретного ключа Диффи-Хеллмана
- Шифрование с открытым ключом. Понятия группы, кольца, поля. Протокол шифрования RSA, протокол Диффи–Хеллмана, система Эль-Гамаля
- Цифровые подписи, назначение и требования. Подпись ECDSA и Шнорра, протокол подписи RSA, подписи на основании хеш-функций. Представление о PKI — инфраструктуре открытых ключей
- PKI, секретная передача информации, схема электронной подписи основные ассиметричные криптосистемы: RSA, ECC, длины ключей
- Практические аспекты криптографии, реализации протоколов, криптографическая безопасность, атаки man-in-the-middle, системы сертификатов, клептографические атаки
- Threshold-протоколы, BLS-подписи, протокол разделения секрета Фиата-Шамира, протокол подбрасывания монеты и другие важные для децентрализованных систем протоколы
- Zero-knowledge протоколы, свойства: soundness, completeness, zero-knowledge. Протоколы знания секретной экспоненты, pairings на эллиптических кривых, кольцевые подписи, multi-party computations.
Сетевые технологии
Общие сведения о компьютерных сетях
- Классификация сетей
- Топологии компьютерных сетей
- Стандарты компьютерных сетей
- Основы организации компьютерных сетей
- Модель OSI
- Модель и стек протоколов TCP/IP
- Анализатор сети Wireshark
Физический уровень
Канальный уровень
- Канальный уровень
- Технология Ethernet
- MAC адреса
- Ethernet. Метод доступа к разделяемой среде CSMA/CD
- Коммутаторы Ethernet
- Канальный уровень в Wireshark
- VLAN
- Протокол STP
- Wi-Fi
- Исследуем Wi-Fi
- Wi-Fi. Метод доступа к разделяемой среде CSMA/CA
- Wi-Fi. Формат кадра
- Сервисы Wi-Fi
Сетевой уровень
- Сетевой уровень
- IP-адреса, часть 1
- IP-адреса, часть 2
- Протокол IP
- Протокол IP: практика
- Протокол IP: маршрутизация
- Протокол IP: фрагментация
- Управляющие протоколы сетевого уровня
- Протокол DHCP
- Протокол DHCP в Wireshark
- Протокол ARP
- Протокол ARP
- Протокол ICMP
- Протокол ICMP в Wireshark
- Протокол ICMP, утилита traceroute
- Передача пакетов на сетевом и канальном уровнях
Транспортный уровень
- Транспортный уровень
- Протокол UDP
- Протокол TCP
- Порты на транспортном уровне: практика
- Протокол TCP: скользящее окно
- Протокол TCP: соединение
- Протокол TCP: формат заголовка
- Установка соединения в TCP: практика
- Протокол TCP: управление потоком
- Протокол TCP: управление перегрузкой
- Протокол TCP: управление перегрузкой, часть 2
- Интерфейс сокетов
- Протоколы, интерфейсы и сервисы. Примеры
- Инкапсуляция: практика.
- Трансляция сетевых адресов (NAT)
- Межсетевые экраны
Прикладной уровень
- Прикладной уровень
- Система доменных имен DNS
- Протокол DNS
- Протокол DNS в Wireshark: практика
- Типы записей DNS
- Типы записей DNS в Wireshark: практика
- DNS: итеративный и рекурсивный режим: практика
- Протокол HTTP
- Постоянное соединение в HTTP
- Кэширование в HTTP
- HTTP в текстовом режиме: практика
- Электронная почта
- Протокол SMTP
- SMTP в текстовом режиме: практика
- Протокол POP3
- POP3 в текстовом режиме: практика
- Протокол IMAP
- IMAP в текстовом режиме: практика
- Протокол FTP
- FTP в Wireshark: практика
Защищенные сетевые протоколы
- Введение в TLS/SSL
- Шифрование в TLS/SSL
- Целостность данных в TLS/SSL
- Инфраструктура открытых ключей в TLS/SSL
- Протокол TLS
- Установка соединения в TLS
- Анализируем протокол TLS в Wireshark
- Расшифровка TLS в WireShark
- Протокол TLS 1.3
- Протокол TLS 1.3 в WireShark
- Протокол HTTPS
- Протокол HTTPS в WireShark
Продвинутые темы
- Web сокеты
- Web сокеты: практика
- Протокол IPv6
- Адреса IPv6
- Протокол IPv6: практика
- Автоматическое назначение адресов IPv6
- Протокол NDP
- Протокол NDP: практика
- Протоколы маршрутизации
- Протокол маршрутизации RIP
- Протокол маршрутизации OSPF
- Иерархическая маршрутизация
- Протокол BGP
Peer-to-peer сети
- P2P-сети: отличия от архитектуры «клиент — сервер». Маршрутизация, bootstrapping P2P-клиента, announce vs request. Балансировка. Неструктурированные и структурированные оверлеи. eDonkey, KaZaaa, BitTorrent, mixed networks (TOR, i2p), блокчейны.
- Общая схема работы децентрализованной сети, сообщения, маршруты, DHT (Distributed Hash Table)
- Протокол Kademlia, метрики расстояния
- IPFS и проблемы distributed storage
- Хранение файлов в P2P и атаки на P2P. BitTorrent. IPFS
- P2P сеть как транспорт для работы в децентрализованных сетях.
Ресурсы
Блокчейн
Введение в блокчейн
- Обязательно знание #P2P и #криптографии
- Основные продукты. Основы блокчейна: свойства, состояния, транзакции, блоки. Доверие к участникам сети
- Работа с GPG: создание пары ключей, подпись, шифрование. Подключение к тестнету BTC, создание кошелька, работа с эксплорером. Работа с тестнетом Ethereum
- Представление о вычислениях на несколько сторон. Схема разделения секрета Шамира. Схема commit-reveal. Криптографические протоколы garbled circuits и oblivious transfer. ORAM
Архитектура блокчейн-протоколов
- Bitcoin и блокчейны, построенные на базе консенсусов типа proof-of-work (PoW)
- Bitcoin, схема работы сети, алгоритм работы ноды, целостность блоков и работа с цепочкой
- Bitcoin, организация транзакций в блоке, структура заголовка блока, полноценные и лёгкие ноды, мемпул. Требования к хешам блоков, сложность сети, nonce, майнинг. Адреса в Bitcoin, Ethereum, Merkle Tree, SegWit.
- Bitcoin, структура транзакции, модель UTXO based consensus networks модель передачи value, комиссия сети, Bitcoin Script, передача владения
- Обзор существующих сетей и особенности инфраструктуры: Ethereum, EOS, POA Network, DAOBet
Протоколы консенсуса
- Протокол BFT — задача о византийских генералах. Обзор протоколов Paxos и Raft, масштабирование протоколов
- Протоколы Proof-of-Work, майнинг
- Bitcoin, Litecoin, Ethereum, Monero, требования к алгоритмам хеширования и их развитие, рассмотрение популярных PoW алгоритмов: SHA-256, Scrypt, Ethash, X11
- Атаки на консенсус PoW сети: double spend, атака 51%, проблемы холодного старта
- Препятствия децентрализации в PoW-системах: ASIC, пулы. Меры противодействия централизации. Масштабирование и пересчёт сложности майнинга, coin hopping
- Стратегии майнинга: форки, эгоистичный майнинг, выборочное включение транзакций, объединённый майнинг
- Консенсус типа proof-of-stake (PoS), наивный PoS, атаки nothing-at-stake, long-distance. Пулы в PoS-системах. Консенсусы типа Delegated Proof Of Stake (DPoS)
- Экономическая безопасность консенсусов типа proof-of-stake (PoS), slashing, sybil атаки, атаки большим стейком, механизмы защиты
- Примеры реальных алгоритмов типа proof-of-stake (PoS): рассмотрение вариантов DPoS в POA Ethereum, EOS, TON, Cosmos, Tezos
- Валидаторы, орагнизация governance сетей, тестовые и приватные блокчейны
- Консенсусы типа proof-of-authority (PoA), безопасность и производительность PoA алгоритмов, требования к safety и liveness, алгоритм Practical BFT
- Другие варианты консенсуса: Proof-of-Space, Hashgraph. Блокчейны PrimeCoin, Storj, Filecoin
Смарт-контракты
- Блокчейн как абстрактный автомат. Стековая машина bitcoin, скрипты bitcoin и их ограничения
- Исполнение кода в консенсусе: детерминизм, безопасность, особенности виртуальной машины, модели аккаунтов, балансов
- Смарт-контракты: понятие, принципы работы, основные свойства, организация среды исполнения. Bitcoin Script
- Смарт-контракты Ethereum: cхема работы, виртуальная машина EVM, уязвимости, концепция газа, проблема останова, Solidity, окружение контракта, storage, вызовы других контрактов и библиотек
- Смарт-контракты EOS: cхема работы, WebAssembly для контрактов, концепция ресурсов, storage
- Runtime код Parity Substrate и Application Cosmos: принципы построения блокчейн-фреймворков
- Безопасность систем смарт-контрактов: front-running, арифметические переполнения, типовые уязвимости кода контрактов и инфраструктуры, примеры атак, методики аудита кода
- Средства автоматизированного аудита кода: Mythril, Slither, примеры аудитов и реальных ошибок
- Типовые паттерны разработки смарт-контрактов: оракулы, голосования, commit-reveal
- Publicly verifiable Random Beacon и проблемы генерации случайных чисел в блокейнах. Использование random-based паттернов в консенсусах, арбитраже сделок, экономических протоколах на основе теории игр
Протоколы анонимизации
- Протоколы миксинга и конфиденциального вычисления
- Кольцевые подписи, stealth-адреса. Концепция обязательств Педерсена, доказательства принадлежности интервалу. Анонимизация в Monero
- Криптовалюты Mimblewimble и Grin. Анонимизация в Zcash и понятие zk-SNARK
Масштабирование сетей блокчейн
- Ограничения блокчейн-сетей: число валидаторов, время процессинга транзакций, tradeoffs speed/security
- Масштабирование блокчейнов: шардинг, многоуровневые архитектуры, архитектуры проектов Polkadot, Cosmos, Telegram Open Network, Ethereum 2.0
- Succinct proofs и zkSNARKS/STARKS для масштабирования блокчейнов, rollups
- Офчейн-протоколы. Lightning. Сайдчейны
Пользовательские аспекты работы с блокчейном
- Типовое ПО сопровождающее блокчейны. Обозреватели блоков, рассмотрение Etherscan, BlockScout, основные компоненты обозревателя блоков, обзор кода.
- Криптовалютные кошельки, обзор решений: Electrum (Bitcoin), Metamask (Ethereum), TrustWallet (Ethereum), Scatter (EOS), клиентский код для Hyperledger Sawtooth
- Запуск и эксплуатация блокчейнов, проблемы тестирования производительности и устойчивости блокчейн-сетей, метрики мониторинга.
- Инструменты для развертывания блокчейн-сетей, обзор инструментов для тестирования блокчейнов: Hyperledger Caliper, Hyperledger Fabric, MixBytes Tank
- Permissioned-модели открытых блокчейнов и обзор решений
- Кошельки и хранение ключей. Получение ключей из сид-фразы и иерархические детерминистские кошельки. Функционирование криптобирж. Устройство и проблемы смарт-контрактов, DAO, ICO, DeFi
- Примеры DeFi и практика написания.
- Правовые аспекты работы с блокчейном
Телеграм-чаты и каналы на ютубе
Тусовки
Конференции / Хабр
Хакатоны / Хабр
it-events
it-events/hackathons
Английский
Как найти работу
Как написать резюме
Где искать работу
Хабр Карьера • HeadHunter • Indeed
Работа заграницей
100% КАК УЕХАТЬ В США ПРОГРАММИСТУ/АЙТИШНИКУ - YouTube
Jobs | Glassdoor • RMTWRK • Remoteok • Weloveremote • We Work Remotely • Stack Overflow Jobs
Фриланс
Ищите сами.