YouIT
  Trainee Junior Middle Senior
Язык программирования C#        
.NET Framework / .NET Core        
Контроль качества кода / Рефакторинг        
Многопоточность и Асинхронное программирование        
Модульное и интеграционное тестирование        
Алгоритмы и Структуры Данных        
Принципы объектно-ориентированного программирования (ООП)        
Шаблоны и принципы проектирования, SOLID        
Предметно-ориентированное проектирование (Domain-driven design, DDD)        
Шаблоны уровня доступа к данным        
Фреймворки доступа к данным: Entity Framework, NHibernate, Dapper        
Архитектурные шаблоны и Атрибуты качества (Quality Attributes)        
HTTP, REST, Веб-фреймворки: ASP.NET MVC / Web API / Core        
Фронтенд разработка: JavaScript / TypeScript / SPA фреймворки        
Веб-безопасность, Шифрование данных, OWASP        
Распределенные системы и Микросервисная архитектура        
Базы данных: T-SQL, MS SQL, NoSQL        
Системы контроля версий: Git, Mercurial, TFS        
Методологии разработки: Scrum, Kanban и Scrumban        
 

Язык программирования C#

Уровень Темы Материалы
  Примитивные конструкции языка C#: Типы данных, Переменные, Методы, Операторы, Символы, Строки, Массивы, Циклы, Условия, Комментарии, Пространства имен, Перегрузка операторов Книга C# 7.0 in a Nutshell, Глава 2  Introduction to C#  Типы и переменные  Методы  Строки  Операторы C#  Массивы  for  namespace  if-else
  Ссылочные и значимые типы данных | Stack vs Heap, Классы и структуры | Класс Object | Модификаторы доступа: public/private/protected/internal/protected internal | Интерфейсы и Абстрактные классы | Перечисления | Операторы const и readonly | Упаковка и Распаковка Книга C# 7.0 in a Nutshell, Глава 2-3  Ссылочные и значимые типы данных в CLR via C#  Stack vs Heap  Object Класс  Интерфейсы или абстрактные классы  Перечисления  Модификаторы доступа  Обобщения
  Обобщения для классов, методов, интерфейсов, структур и делегатов | Ограничения Книга C# 7.0 in a Nutshell, Глава 2-3  Обобщения
  Статические классы/свойства/конструкторы | Правила вызовов статических конструкторов Книга C# 7.0 in a Nutshell, Глава 3  Статические конструкторы  Статические члены и модификатор static
  Наследование в С# | Правила вызова конструкторов в иерархиях наследования | Операторы is и as | constructor chaining | Использование ключевых слов virtual, override, new Наследование в C# и .NET  C# 7.0 in a Nutshell  Операторы приведения и тестирования типов  Constructor chaining in C#
  Делегаты и События, Func vs Action | Лямбда Выражения/Анонимные методы | Обработка исключений try/catch/finally/throw, Фильтры исключений | Nullable типы | Методы расширения | Tuples Книга C# 7.0 in a Nutshell, Глава 4  Делегаты и Лямбда выражения в C# .Net — Шпаргалка или коротко о главном  Лучшие методики обработки исключений  Фильтры исключений в C# 6.0  Методы расширения  Func vs. Action vs. Predicate
  Классы string и StringBuilder, Неизменяемость строк, Интернирование строк, ASCII и Unicode Книга C# 7.0 in a Nutshell, Глава 6  String vs StringBuilder  Особенности строк в .NET
  Структуры DateTime/TimeSpan/DateTimeOffset | Класс Random | Структура Guid | Интерфейсы IComparable, IEquatable, IComparer Книга C# 7.0 in a Nutshell, Глава 6  String vs StringBuilder  Выбор между типами DateTime, DateTimeOffset, TimeSpan и TimeZoneInfo  Делегаты и события в .NET  Лямбда-выражения
  Коллекции ArrayList, List, Dictionary, Hashtable, HashSet, LinkedList, Stack, Queue, Класс Array | Интерфейсы IEnumerable и IEnumerator, Утиная типизация (duck typing), Цикл foreach | Интерфейсы ICollection, IList, IReadOnlyList Книга C# 7.0 in a Nutshell, Глава 7  Коллекции и структуры данных  Итераторы
  Механизм работы Сборщика Мусора, Финализаторы, Интерфейс IDisposablе, using Книга C# 7.0 in a Nutshell, Глава 12
  Работа с потоками ввода/вывода, Пространство имен System.IO, Классы File, Directory, FileInfo, DirectoryInfo, Path, FileStream, MemoryStream, StreamReader, StreamWriter, BinaryReader, BinaryWriter... Книга C# 7.0 in a Nutshell, Глава 15
  Механизм сериализации, Бинарная сериализация, XML сериализация, Атрибуты [DataContract], [DataMember], [OnSerializing], [Serializable], [OnSerialized], [OnDeserializing], [OnDeserialized] Книга C# 7.0 in a Nutshell, Глава 17
  Pattern Matching Pattern matching в C# 7
  Шаблон Dispose, Слабые Материалы (Weak References), Утечки памяти в управляемом коде и способы их предотвращения Книга C# 7.0 in a Nutshell, Главы 8-9  Learning .NET memory management
  Работа с классом Regex, Написание регулярных выражений C# 7.0 in a Nutshell  C# Regex в примерах
  Диагностика: Stopwatch, Классы Debug и Trace, Классы StackTrace и StackFrame, Использование CPU и Memory профайлеров Книга C# 7.0 in a Nutshell, Глава 13
  Работа со структурами Memory<T> и Span<T> Рекомендации по использованию структур Memory<T> и Span<T>
  Работа со структурой Деревьями выражений (Expression Trees) Книга C# 7.0 in a Nutshell, Глава 8
  Рефлексия, Метаданные, Атрибуты, Позднее связывание, Класс Activator, Класс Type
Ключевое слово dynamic, Классы ExpandoObject и DynamicObject
Книга C# 7.0 in a Nutshell, Главы 19-20

Контрольные вопросы:

.NET Framework / .NET Core

Уровень Темы Материалы
  Основы .NET Framework: CLR, CTS, JIT C# 7.0 in a Nutshell  Общие сведения о платформе .NET Framework  Книга СLR via C# by Jeffrey Richter, Глава 1
  Модель выполнения кода в среде CLR Книга СLR via C# by Jeffrey Richter, Глава 1
  .NET Framework vs .NET Core .NET Core vs .NET Framework: How to Pick a .NET Runtime for an Application
  Понимание .NET Standard What is .NET Standard?
  Архитектура .NET Framework и .NET Core Книга СLR via C# by Jeffrey Richter, Глава 1  Книга C# 7.0 in a Nutshell, Глава 1  .Net Core Architecture
  Сборки: Содержимое сборок, Манифест, Управление версиями, GAC, Загрузка сборок... Сборки в .NET  Книга СLR via C# by Jeffrey Richter, Главы 2, 3, 23
  Домены приложения, Процесс vs Домен vs Поток, Класс AppDomain Книга СLR via C# by Jeffrey Richter, Глава 22  Книга C# 7.0 in a Nutshell, Глава 24
  Куча больших объектов (Large Object Heap), Конфигурация cборщика мусора, GC триггеры Книга C# 7.0 in a Nutshell, Глава 12  Книга СLR via C# by Jeffrey Richter, Глава 21
  Работа со счетчиками производительности (Performance Counters), Performance Monitor Книга C# 7.0 in a Nutshell, Глава 13  Unsafe Code in C#  Книга Pro .NET Performance: Optimize Your C# Applications by Sasha Goldshtein, Главы 1-2
  Работа с небезопасным кодом (Unsafe code) | Маршалинг Книга C# 7.0 in a Nutshell, Глава 25  Unsafe Code in C#
  Roslyn компилятор Книга C# 7.0 in a Nutshell, Глава 27

Контрольные вопросы:

Контроль качества кода / Рефакторинг

Уровень Темы Материалы
  Понимание целей Рефакторинга Рефакторинг: основные принципы и правила  Цена рефакторинга
  Понимание распространенных Code Smells: Длинный метод, Длинный список параметров, Большой класс, Временное поле, Дублирование кода, Мёртвый код, Цепочка вызовов Martin Fowler, CodeSmell  Запахи кода  CodeSmell
  Владение стандартами кодирования и правилами именования Соглашения о написании кода на C#  Рекомендации по написанию кода на C# от Aviva Solutions  Правила именования  Книга Code Complete by Steve McConnell
  Владение распространненными техниками рефакторинга: Извлечение метода, Встраивание метода, Замена алгоритма, Расщепление переменной, Переименование метода, Разбиение условного оператора, Замена магического числа символьной константой и других. Книга Refactoring Improving the Design of Existing Code by Martin Fowler  Приёмы рефакторинга
  Владение продвинутыми техниками рефакторинга: Замена делегирования наследованием, Создание шаблонного метода, Свёртывание иерархии, Замена конструктора фабричным методом, Введение Null-объекта, Замена наследования делегированием и других. Книга Refactoring Improving the Design of Existing Code by Martin Fowler  Приёмы рефакторинга
  Работа со статическими анализаторами кода: StyleCop, Resharper, SonarCube Статический анализ кода  StyleCop: A Detailed Guide to Starting and Using It
  Код-ревью: понимание процесса, как проводить, лучшие практики, инструменты Code review: вы делаете это неправильно  Лучшие и проверенные практики ревью: советы для авторов кода
  Документирование кода с помощью комментариев Документирование кода с помощью XML-комментариев  Книга Code Complete by Steve McConnell
  Сбор и анализ метрик качества кода: Цикломатическая сложность, Количество строк кода, Глубина наследования, Количество входящих/исходящих зависимостей класса Значения метрик кода  Метрики программного обеспечения в Visual Studio
  Работа с унаследованным кодом: рефакторинг, сопровождение, повторное использование Книга Working Effectively with Legacy Code by Michael Feathers
  Работа с техническим долгом Технический долг на проекте или выбраться из черной дыры  Как научиться не накапливать технический долг — отвечают эксперты
  Выполнение large-scale рефакторинга How To Do Large Scale Refactoring

Контрольные вопросы:

 

Многопоточность и Асинхронное программирование

Уровень Темы Материалы
  Понимание терминов Процесс, Поток, Пулл потоков, Мертвая блокировка В чем разница между потоком и процессом?  Взаимная блокировка  Книга СLR via C# by Jeffrey Richter, Глава 26  Основы многопоточности в .NET Framework
  Понимание концепций Многопоточного программирования, Асинхронного программирования и Параллелизма Книга СLR via C# by Jeffrey Richter, Глава 26  Многопоточное vs асинхронное программирование  Книга C# 7.0 in a Nutshell, Глава 14
  Класс Thread: Start, Join, Abort, Sleep | Фоновые и активные потоки Книга C# 7.0 in a Nutshell, Глава 14 
  Ключевые слова async и await, Syncronization Context Книга C# 7.0 in a Nutshell, Глава 14  Асинхронное программирование с использованием ключевых слов async и await  C# Async / Await - Make your app more responsive and faster with asynchronous programming
  Класс Task, Использование методов Run, Delay, WhenAny, WhenAll, ContinueWith, Обработка исключений, AggregateException Книга C# 7.0 in a Nutshell, Глава 17  Книга Concurrency in C# Cookbook 1st Edition by Stephen Cleary
  Необходимость использования синхронизации потоков | Простая синхронизация потоков: ключевое слово lock, Monitor.Enter, Monitor.Exit, Interlocked Книга C# 7.0 in a Nutshell, Глава 17  Книга СLR via C# by Jeffrey Richter, Глава 29  Инструкция lock
  PLINQ: Parallel.For, Parallel.ForEach, AsParallel, AsOrdered, WithCancellation Книга C# 7.0 in a Nutshell, Глава 24  Введение в PLINQ
  Сихнронизация потоков: Mutex, Semaphor, AutoResetEvent, ManualResetEvent, Reader/Writer Locks, volatile Книга C# 7.0 in a Nutshell, Глава 22  Книга СLR via C# by Jeffrey Richter, Главы 29,30
  Использование потокобезопасных коллекций: ConcurrentBag<T>, IProducerConsumerCollection<T>, ConcurrentDictionary<T> Книга C# 7.0 in a Nutshell, Глава 23  Книга Concurrency in C# Cookbook 1st Edition by Stephen Cleary
  Тестирование асинхронных методов Книга Concurrency in C# Cookbook 1st Edition by Stephen Cleary
  Task Scheduling Книга Concurrency in C# Cookbook 1st Edition, Глава 12
  Неизменяемые коллекции: ImmutableList<T>, ImmutableDictionary<T>, ImmutableHashSet<T> Книга Concurrency in C# Cookbook 1st Edition, Глава 8

Контрольные вопросы:

Модульное и интеграционное тестирование

Уровень Темы Материалы
  Цели юнит-тестирования Юнит-тестирование для чайников  Зачем нужны юнит-тесты  Книга The Art of Unit Testing by Roy Osherove, Глава 1-2
  Методика тестирования черного, белого, серого ящиков Общая картина модульного тестирования  White/Black/Grey Box-тестирование
  Понятия Test Plan, Test Suite, Test case Test Case, Test Suite, Test Run, what’s the difference?  Test cases and test suites
  Шаблон Arrange-Act-Assert (AAA) Unit Testing and the Arrange, Act and Assert (AAA) Pattern
  Фреймворки модульного тестирования: NUnit или xUnit NUnit Tutorial  xUnit Tutorial
  Изоляционные фреймворки: Moq, NSubstitute, FakeItEasy Moq Tutorial  NSubstitute Tutorial  FakeItEasy Tutorial
  Тестовые заглушки: Dummy, Stub, Mock.. Книга The Art of Unit Testing by Roy Osherove, Глава 4
  Параметризованные тесты Книга The Art of Unit Testing by Roy Osherove, Глава 2
  Метрики покрытия кода тестами, NCover Проблемы тестирования: почему 100% покрытие кода это плохо  An introduction to code coverage
  Причины недетерминированного поведения юнит-тестов Non-determinism in tests  Eradicating Non-Determinism in Tests
  Принципы модульного тестирования F.I.R.S.T. Пять принципов чистых тестов (F.I.R.S.T. Principles)
  Тестовая пирамида: модульные, интеграционные, E2E тесты Пирамида тестов на практике
  Test smells: Conditional test logic, Hard-to-test code, Test code duplication, Assertion roulete, Fragile test, Test logic in production, Frequent Debugging, Slow Tests...  Книга xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros, Главы 2, 15-17
  Стили юнит-тестирования: верификация результата (value-based), верификация состояния (state-based), верификация взаимодействия (interaction testing) Книга The Art of Unit Testing by Roy Osherove, Глава 4  Styles of unit testing
  Data-driven Tests Книга xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros, Глава 18
  AutoFixture AutoFixture
  Интеграционные тесты Integration testing in .NET  Integration tests in ASP.NET Core  Entity Framework Core - Isolation of Integration Tests  Testing with InMemory
  Шаблоны модульного тестирования Книга xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros
  Модульные тесты для унаследованного кода Книга The Art of Unit Testing by Roy Osherove, Глава 10  Книга Working Effectively with Legacy Code by Michael Feathers
  Разработка через тестирование (Test-driven development, TDD) Книга Test Driven Development by Kent Beck

Контрольные вопросы:

Алгоритмы и Структуры Данных

Уровень Темы Материалы
  Понимание Big O нотации, Big O(1), Big O(n), Big O(log n)... Big O Нотация
  Простые алгоритмы поиска: линейный поиск и бинарный поиск Обзор алгоритмов линейного и бинарного поиска  Алгоритм бинарного/двоичного поиска
  Понимание основных алгоритмов сортировки: пузырьковая сортировка (Bubble Sort), сортировка вставками (Insertion Sort), быстрая сортировка (Quick Sort), сортировка слиянием (Merge Sort) Описание алгоритмов сортировки и сравнение их производительности  Книга Алгоритмы. Руководство по разработке, Стивен С. Скиена
  Работа с основными структурами данных и понимание их внутреннего устройства: массив, стек, очереди, списки односвязные/двусвязные, хеш-таблица | Принципы LIFO и FIFO Важнейшие структуры данных, которые вам следует знать к своему собеседованию по программированию  Основные структуры данных. Матчасть. Азы  Книга Алгоритмы. Руководство по разработке, Стивен С. Скиена  FIFO и LIFO
  Значения Big O для операций со структурами данных и алгоритмов сортировок Know Thy Complexities!
  Внутреннее устройство хеш-таблиц, Хеш-функции, Коллизии Хеш-таблица  Коллизия хеш-функции  Что такое хеш-таблицы и как они работают
  Деревья и Бинарные деревья: Структура, Построение, Обход (Pre-Order, In-Order, Post-Order), Поиск (DFS, BFS), Вставка элементов Все что нужно знать о древовидных структурах данных  Визуализация алгоритмов  Книга Алгоритмы. Руководство по разработке, Стивен С. Скиена
  Оценка сложности алгоритмов Оценка сложности алгоритмов
  Виды графов: Однонаправленные и Двунаправленные, Алгоритмы поиска на графах: DFS, BFS, Дейкстра Алгоритмы на графах — Часть 0: Базовые понятия  Алгоритмы на графах — Часть 1: Поиск в глубину и проблема взаимоблокировок  Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе

Контрольные вопросы:

Принципы объектно-ориентированного программирования (ООП)

Уровень Темы Материалы
  Классы и Объекты Классы и объекты
  Понимание принципов ООП: Абстракция, Инкапсуляция, Наследование, Полиморфизм Книга Объектно-ориентированный анализ и проектирование, Гради Буч  ООП с примерами
  Понимание принципов Сильного сцеплений (High Cohesion) и Слабой связанности (Low Coupling) Книга Объектно-ориентированный анализ и проектирование, Гради Буч  Cohesion and Coupling: the difference
  Понимание связей Композиции, Агрегации, Наследования. Плюсы и минусы. Книга Объектно-ориентированный анализ и проектирование, Гради Буч  Наследование vs Композиция vs Агрегация

Контрольные вопросы:

 

Шаблоны и принципы проектирования, SOLID

Уровень Темы Материалы
  Принципы SOLID Книга Паттерны проектирования на платформе .NET, Главы 17-22  Принципы SOLID, о которых должен знать каждый разработчик
  Принципы DRY, KISS, YAGNI 10 принципов объектно-ориентированного программирования, о которых должен знать каждый разработчик  Принципы DRY, KISS, YAGNI
  Принцип Inversion of Control (IoC) Inversion Of Control  IoC, DI, IoC-контейнер — Просто о простом
  Ключевые GoF шаблоны: Синглтон, Фабрики, Фасад, Стратегия, Декоратор, Адаптер, Наблюдатель, Состояние Книга Паттерны проектирования на платформе .NET, Главы 1-16  Шаблоны проектирования с человеческим лицом
  Другие GoF шаблоны: Строитель, Прототип, Приспособленец, Компоновщик, Прокси, Цепочка обязанностей, Медиатор, Интерпретатор, Посетитель, Шаблонный метод Книга Паттерны проектирования на платформе .NET, Главы 1-16  Шаблоны проектирования с человеческим лицом
  Не GoF шаблоны: Null-Object, Rules, Event Aggregator, Lazy Load pattern, Шаблоны внедрения зависимостей: внедрений через конструктор/свойство/метод, Паттерны внедрения зависимостей. Часть 1  Паттерны внедрения зависимостей. Часть 2  Введение Null-объекта  Event Aggregator  Шаблоны проектирования: Rules
  Закон Деметры Закон Деметры

Контрольные вопросы:

Предметно-ориентированное проектирование (Domain-driven design, DDD)

Уровень Темы Материалы
  Необходимость применения DDD Книга Предметно-ориентированное проектирование, Эрик Эванс, Глава 1  Domain-driven design: рецепт для прагматика
  Понимание терминов Поддомен (Subdomain) и Ограниченные контекст (Bounded Context), Карта контекстов (Context Map) Книга Предметно-ориентированное проектирование, Эрик Эванс, Глава 14  Ubiquitous Language и Bounded Context в DDD  Domain-driven design: рецепт для прагматика
  Разработка Единого языка (Ubiquitous Language) Книга Предметно-ориентированное проектирование, Эрик Эванс, Глава 2  Ubiquitous Language и Bounded Context в DDD
  Шаблоны DDD: Сущности, Объекты-значения, Доменные сервисы, Агрегаты, Корни Агрегатов, Репозитории, Доменные события Книга Предметно-ориентированное проектирование, Эрик Эванс, Главы 5-7
  Anemic Model vs Rich Model Anemic Domain Model vs Rich Domain Model with Examples
  Построение Anti-Corruption Layer Книга Предметно-ориентированное проектирование, Эрик Эванс, Глава 14  Wrapping your business logic with anti-corruption layers – NET Core
  Имплементация DDD в .NET ddd-guestbook  Full ASP.NET Core 2.2 application with DDD, CQRS and Event Sourcing

Контрольные вопросы:

Шаблоны уровня доступа к данным

Уровень Темы Материалы
  Объектно-реляционное отображение (ORM) ORM (Object-Relational Mapping)  Введение в ORM
  Шаблон Репозиторий (Repository) Паттерн «Репозиторий». Основы и разъяснения  EntityFramework: (анти)паттерн Repository  Domain-Driven Design: Repository  Книга Patterns of Enterprise Application Architecture by Martin Fowler, Глава 13
  Шаблон Спецификация (Specification)  
  Шаблон Единица работы (Unit Of Work) Описание Unit of Work  CRUD Operations Using the Generic Repository Pattern and Unit of Work in MVC  Книга Patterns of Enterprise Application Architecture, Глава 11
  Шаблон Объект запроса (Query Object) Query Object (Объект-запрос)  Работа с Dapper + Query Object  Dapper + QueryObject, как замена ORM  Книга Patterns of Enterprise Application Architecture by Martin Fowler, Глава 13
  Шаблон Активная запись (Active Record) Active Record (Активная запись)  Active Record Pattern  Книга Patterns of Enterprise Application Architecture by Martin Fowler, Глава 10
  Шаблон Репозиторий в DDD Domain-Driven Design: Repository  Проектирование уровня сохраняемости инфраструктуры
  Оптимистическая блокировка, Пессимистическая блокировка Книга Patterns of Enterprise Application Architecture, Главы 5, 16

Контрольные вопросы:

Фреймворки доступа к данным: Entity Framework, Dapper

Уровень Темы Материалы
  ADO.NET, Подключенный и автономный режимы, Классы SqlCommand, SqlDataReader, SqlDataAdapter, DataSet, DataTable Руководство по ADO.NET и работе с базами данных
  Entity Framework 6 vs Entity Framework Core Сравнение EF Core и EF6
  Подходы Code First и Database First Code-First vs Model-First vs Database-First: Pros and Cons
  Создание моделей, Работа с классами DbContext, DbSet The Entity Framework Core DbContext  The Entity Framework Core DbSet  Creating and configuring a model
  Чтение данных при помощи LINQ, Интерфейс IQueyrable vs IEnumerable, Tracking vs No-Tracking Querying Data  IEnumerable и IQueryable  Отслеживание объектов и AsNoTracking
  Ленивая загрузка зависимых данных, Проблема N+1 Lazy Loading Related Data In Entity Framework Core  Common Entity Framework Problems: N + 1
  Сохрание данных Saving Data
  Архитектура Entity Framework Entity Framework Architecture
  Моделирование отношений один ко многим и многие ко многим в Entity Framework Core Configuring Many To Many Relationships in Entity Framework Core
  Работа с состояниями сущностей: Added, Unchanged, Modified, Deleted, Detached Working with entity states
  Работа с Fluent API Fluent API Configuration
  Работа с Dapper Dapper
  Работа с миграциями Entity Framework Core Migrations
  Транзакции в Entity Framework Core Использование транзакций
  Наследование в EF Core: Table Per Hierarchy, Table Per Type, Table Per Concrete Type Inheritance in Entity Framework Core

Контрольные вопросы:

 

Архитектурные шаблоны и Атрибуты качества (Quality Attributes)

Уровень Темы Материалы
  Трёхуровневая архитектура, Монолитная архитектура Трёхуровневая архитектура  Монолитная vs Микросервисная архитектура
  Шаблон Model-View-Controller (MVC) Design Patterns - MVC Pattern
  Клиент-серверная архитектура Клиент — сервер
  Микросервисная архитектура Микросервисы — за и против  Переход от монолита к микросервисам
  Шаблон Command Query Responsibility Segregation (CQRS) Command and Query Responsibility Segregation (CQRS) на практике  CQRS  Types of CQRS  CQRS. Факты и заблуждения
  Событийно-ориентированная архитектура (Event-driven architecture) What is an Event-Driven Architecture?
  Шаблон Event Sourcing Введение в CQRS + Event Sourcing: Часть 1. Основы  Pattern: Event sourcing
  Луковая архитектура (Onion architecture) Луковая архитектура. Часть 1  Onion Architecture
  Совмещение CQRS и DDD Simplified CQRS and DDD
  Архитектурные анти-шаблоны Software Architecture AntiPatterns
  Serverless архитектура Serverless Architectures
  Шаблоны корпоративных программных приложений Catalog of Patterns of Enterprise Application Architecture
  Неизменяемая архитектура (Immutable architecture) Immutable architecture
  Шаблоны интеграции корпоративных приложений Шаблоны интеграции корпоративных приложений
  Атрибуты качества ПО (Software Quality Attributes) Quality attributes in Software Architecture  Software Architecture for Developers

Контрольные вопросы:

HTTP, REST, Веб-фреймворки: ASP.NET MVC / Web API / Core

Уровень Темы Материалы
  Клиент-серверная архитектура, REST Синхронизируем понимание REST
  HTTP протокол, Структура HTTP запросов и ответов, HTTP методы: GET, POST, PUT, DELETE Общая структура HTTP-запросов и ответов.  Общая структура HTTP-запросов и ответов.  Типы HTTP-запросов и философия REST
  Жизненный цикл запроса в ASP.NET MVC Жизненный цикл приложения ASP.NET MVC 5
  ASP.NET MVC vs ASP.NET Web API Difference Between MVC and Web API
  Спецификация OWIN, Katana OWIN и Katana: первый взгляд  Начало работы с OWIN и Katana
  Веб-сервер Kestrel Kestrel web server implementation in ASP.NET Core
  Концепции ASP.NET Core: Startup, Middleware, Routing, Controller, Action, Action Filters, Model Binding, Dependency Injection, View, Partial View, Layout, Razor, Exception filters, Bundling & Minification... Get started with ASP.NET Core MVC  ASP.NET Core Tutorial
  Внедрение зависимостей в ASP.NET Core
Использование DI-фрейворков: Autofac, Simple Injector, Ninject
ASP.NET Core Dependency Injection Deep Dive
  Способы хранения состояния приложения: сессии веб-сервера, базы данных, куки, local/session хранилище, hidden поля ASP.NET Core Blazor state management  Session and app state in ASP.NET Core
  Библиотека SignalR ASP.NET Core SignalR Chat with Angular 5
  ASP.NET Identity Introduction to Identity on ASP.NET Core
  Кеширование в ASP.NET, Использование E-Tag Кэширование в памяти в ASP.NET Core  HTTP ETag
  Версионирование API API Versioning in Asp.Net Core 2.0  Four REST API Versioning Strategies
  gRPC в ASP.NET Core Введение в gRPC  Why gRPC?
  Identity Server IdentityServer

Контрольные вопросы:

Фронтенд разработка: JavaScript / TypeScript / SPA фреймворки

Уровень Темы Материалы
  HTML: Структура HTML-документа, DOM
Основные теги: html, body, title, head, p, br, img и другие.
Аттрибуты Id и Сlass.
HTML Tags  Структура HTML-кода
  CSS: классы, идентификаторы, селекторы, применение стилей, позиционирование элементов Основы CSS  CSS для JavaScript-разработчика
  Понимание основных принципов работы браузеров Как работают браузеры: принципы работы современных веб-браузеров  Важные аспекты работы браузера для разработчиков. Часть 1  Современный учебник JavaScript, Часть 2
  Введение в JavaScript Введение в JavaScript
  Основы JavaScript: Переменные, Строки, Функции, Типы данных, Операторы, Преобразования типов, Циклы, Массивы, Объекты Современный учебник JavaScript
  Классы в JavaScript: Синтаксис, Наследование, Приватные члены, Статические члены, Оператор instanceof Современный учебник JavaScript
  Коллекции Map и Set Современный учебник JavaScript
  Использование setTimeout и setInterval Планирование: setTimeout и setInterval
  Разница между JavaScript и TypeScript Разница между Javascript и TypeScript
  Понятие Single Page Application (SPA) Одностраничное приложение  Single Page Applications — что это?
  Работа с jQuery jQuery
  Промисы (Promises), Ключевые слова async/await Промисы  Цепочка промисов  Async/await
  Работа с SPA фреймворками: React.js, Angular.js, Vue.js React Tutorial  Vue.js Tutorial  Angular7 Tutorial
  Работа с Node Package Manager (NPM) NPM для простых смертных  NPM для простых смертных
  Работа с Cookies, Local Storage, Session Storage Cookie  LocalStorage, sessionStorage  Local Storage vs Cookies
  Работа с Developer Tools: Отладка, Анализ исходящих запросов, Использование профайлеров Chrome DevTools  Chrome DevTools - 20+ Tips and Tricks
  Работа с объектами window, document, screen The Window Object  Document  The Screen Object
  Модули: Экспорт и импорт, Динамические импорты Модули, введение  Экспорт и импорт  Динамические импорты
  Работа с замыканиями (clojures) Замыкание
  Прототипное наследование, Свойство prototype Прототипное наследование  Прототипное наследование
  Работа с IndexedDB API HTML5 - IndexedDB
  Работа с WebWorkers HTML5 Web Workers
  Понимание Event Loop в JavaScript The JavaScript Event Loop

Контрольные вопросы:

Веб-безопасность, Шифрование данных, OWASP

Уровень Темы Материалы
  Концепции Аутентификации и Авторизации В чем состоит разница между аутентификацией и авторизацией
  Шифрование vs Хеширование Что такое хеширование, шифрование и кодировка
  Симметричное и Асимметричное шифрование Описание симметричного и асимметричного шифрования  Асимметричное шифрование. Как это работает?
  Лучшие практики для веб-разработчиков по работе с паролями 6 ways developers can build in better password security
  Простые веб-атаки: DoS/DDoS, XSS, CSRF, SQL-injection и механизмы защиты DoS и DDoS-атаки: значение и различия  XSS уязвимость  Атака CSRF  SQL injection для начинающих. Часть 1
  OAuth 2.0 протокол Введение в OAuth 2  OAuth 2.0 простым и понятным языком
  Аутентификация на основе токенов, JWT токены Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication
  Алгоритмы симметричного шифрования в .NET: AES, DES 3DES Cryptography in .NET
  Алгоритмы асимметричного шифрования в .NET: RSA, DSA, ECDiffieHellman Cryptography in .NET
  Алгоритмы хеширования в .NET: MD5, SHA256 Hashing algorithms and their practical usage in .NET Part 1
  Механизм работы HTTPS протокола, HSTS Чем отличается HTTP от HTTPS  HSTS  Принудительное применение HTTPS в ASP.NET Core
  Cross-Origin Resource Sharing (CORS) Cross-Origin Resource Sharing (CORS)
  OWASP TOP 10 OWASP Top Ten Project  OWASP TOP-10: практический взгляд на безопасность веб-приложений
  Microsoft Security Development Lifecycle Microsoft Security Development Lifecycle

Контрольные вопросы:

Распределенные системы и Микросервисная архитектура

Уровень Темы Материалы
  Что такое распределенная система? Введение в распределенные системы  Lecture 9 Scalability Harvard Web Development David Malan
  Вертикальное и горизонтальное масштабирование Горизонтальное и вертикальное масштабирование веб приложений  Lecture 9 Scalability Harvard Web Development David Malan
  Теорема CAP CAP Theorem: Revisited  The System Design Primer
  Концепция балансировки нагрузки Lecture 9 Scalability Harvard Web Development David Malan  Load balancer
  Кеширование в распределенных системах The System Design Primer, Cache  Scalability for Dummies - Part 3: Cache
  Репликации баз данных The System Design Primer, Replications
  Выбор между Performance vs scalability, Latency vs throughput, Availability vs consistency в распределенных системах The System Design Primer, Trade offs
  Consistency patterns: Weak consistency, Eventual consistency, Strong consistency The System Design Primer, Consistency Patterns
  Availability patterns: Active-passive Failover, Active-active Failover, Master-slave replication, Master-master replication The System Design Primer, Availability Patterns
  SQL or NoSQL, NoSQL: Key-value store, Document store, Wide column store, Graph Database The System Design Primer, NoSQL
  Построение микросервисной архитектуры Статьи Мартина Фаулера по Микросервисам  Книга Building Microservices: Designing Fine-Grained Systems 1st Edition by Sam Newman
  Распределенные транзакции, 2PC, Saga Pattern Patterns for distributed transactions within a microservices architecture  Pattern: Saga
  Миграция с монолита на микросервисы, Шаблон Strangler Шаблон Strangler  Monolith to Microservices Using the Strangler Pattern

Контрольные вопросы:

 

Базы данных: T-SQL, MS SQL, NoSQL

Уровень Темы Материалы
  Концепция нормализации данных, Нормальные формы Нормализация отношений. Шесть нормальных форм  Описание основных приемов нормализации базы данных
  Создание таблиц, Выбор типов данных Создание таблиц  Типы данных
  Создание ограничений: NOT NULL, UNIQUE, CHECK, DEFAULT, PRIMARY KEY, FOREIGN KEY Ограничения уникальности и проверочные ограничения
  Моделирование отношений: один к одному, один ко многим, многие ко многим, Primary Key & Foreign Key Типы связей в реляционных базах данных
  Работа с оператором SELECT, Использование операторов WHERE, INNER/LEFT/RIGHT/CROSS JOIN, GROUP BY, HAVING, DISTINCT Примеры использования инструкции SELECT  Предложение HAVING  Предложение GROUP BY
  Работа агрегатными функциями: SUM, MIN, MAX, AVG, COUNT Обобщение данных с помощью агрегатных функций
  Модификация данных с использованием INSERT, UPDATE, DELETE операторов Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть вторая  SQL команды DELETE и TRUNCATE
  Работа с операторами UNION, UNION ALL, INTERSECT, EXCEPT UNION / EXCEPT / INTERSECT
  Работа с хранимыми процедурами, функциями и триггерами Основы T-SQL и примеры — функции (UDF), триггеры, процедуры, курсоры, циклы
  Использование SQL профайлера РАБОТА С SQL SERVER PROFILER. ПРИМЕРЫ НАСТРОЙКИ ТРАССИРОВОК
  Кластерные и некластерные индексы Описания кластеризованных и некластеризованных индексов  14 вопросов об индексах в SQL Server, которые вы стеснялись задать
  SQL vs NoSQL SQL или NoSQL — вот в чём вопрос
  Необходимость денормализации, Техники денормализации данных Денормализация БД. Зачем? Когда? Как?
  Работа с оконными функциями: OVER, ROW_NUMBER, RANK, NTILE... Оконные функции  Оконные функции – то, что должен знать каждый T-SQL программист
  Работа с СTE, Рекурсивные CTE Общие табличные выражения
  Анализ плана выполнения запроса: Nested Loops, Index Seek, Index Scan, Key, Lookup... Отображение действительного плана выполнения  Изучение плана запроса в SQL
  Работа с транзакциями, ACID, Уровни изоляций транзакций, Snapshot, Мертвые блокировки T-SQL - Transactions  A Primer on ACID Transactions: The Basics Every Cloud App Developer Must Know  Snapshot Isolation in SQL Server  SQL Server Transactions and Isolation Levels

Контрольные вопросы:

Системы контроля версий: Git, Mercurial, TFS

Уровень Темы Материалы
  Понимание необходимости систем контроля версий Система управления версиями  Введение в системы контроля версий
  Понимание разницы между централизованными и распределенными системами контроля версий Сравнение централизованных и распределенных систем управления версиями
  Жизненный цикл в Git Руководство по Git. Жизненный цикл Git.
  Работа с Git, Понимание ключевых терминов: repositoty, branch, commit, push, tag, pull request, merge, revert, stage, blame... Git tutorial. Become a git guru.
  Понимание Git Flow GitHub Flow  Introducing GitFlow
  Работа с ветками, стратегии "бранчевания" Branching стратегии в Git
  Понимание merge-стратегий: merge commit, merge squash, fast-forward merge, rebase Pull request merge strategies
  Миграция на Git с других систем контроля версий SVN to Git - prepping for the migration

Контрольные вопросы:

Методологии разработки: Scrum, Kanban и Scrumban

Уровень Темы Материалы
  Понимание Scrum процесса Гибкая методология разработки "Scrum"  Что такое Scrum
  Роли в Scrum: Product Owner, Scrum Master, Team Роли в Scrum  Scrum: 12 терминов, которые нужно запомнить
  Эстимации в Scrum: Story points, Planning poker, Story Points vs Man-hours 12 советов по эстимации проектов по разработке от практикующих пресейл-специалистов  Как научиться оценивать задачи, если не умеешь: 4 фактора сложности  Стори поинты: как это работает
  Церемонии в Scrum: Sprint/release planning, Daily scrum, sprint demo, sprint retrospective Agile-церемонии
  Понимание Kanban методологии, Scrum vs Kanban Что такое Канбан  Разбираемся в Scrum и Kanban  Scrum vs Kanban: в чем разница и что выбрать?
  Понимание Scrumban методологии, Необходимость применения Scrum-ban
  Методология экстремального программирования Книга Экстремальное программирование, Кент Бек  Методики и принципы экстремального программирования

Контрольные вопросы:

Комментарии (0)

Авторизируйтесь для участия в дискуссии

Google Facebook ВКонтакте