YouIT
Trainee Junior Middle Senior
Язык программирования C#
.NET Framework / .NET Core
Облачные технологии Microsoft Azure / Docker
Контроль качества кода / Рефакторинг
Многопоточность и Асинхронное программирование
Модульное и интеграционное тестирование
Алгоритмы и Структуры Данных
Принципы объектно-ориентированного программирования (ООП)
Шаблоны и принципы проектирования, 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
Гибкие методологии разработки / Эстимации / Требования

Вступайте в сообщества ВКонтакте, Фейсбук или Телеграм, чтобы:
- получать уведомления о любых улучшениях в Картах Знаний
- принимать активное участие в формировании новых Карт Знаний или улучшении существующих


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

Уровень Темы Материалы
Примитивные конструкции языка C#: Типы данных, Переменные, Методы, Операторы, Символы, Строки, Массивы, Циклы, Условия, Комментарии, Пространства имен, Перегрузка операторов Книга C# 7.0 in a Nutshell, Chapter 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, Chapter 2-3 Ссылочные и значимые типы данных в CLR via C# Stack vs Heap Object Класс Интерфейсы или абстрактные классы Перечисления Модификаторы доступа Обобщения
Обобщения для классов, методов, интерфейсов, структур и делегатов | Ограничения Книга C# 7.0 in a Nutshell, Chapter 2-3 Обобщения
Статические классы/свойства/конструкторы | Правила вызовов статических конструкторов Книга C# 7.0 in a Nutshell, Chapter 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, Chapter 4 Делегаты и Лямбда выражения в C# .Net — Шпаргалка или коротко о главном Лучшие методики обработки исключений Фильтры исключений в C# 6.0 Методы расширения Func vs. Action vs. Predicate
Классы string и StringBuilder, Неизменяемость строк, Интернирование строк, ASCII и Unicode Книга C# 7.0 in a Nutshell, Chapter 6 String vs StringBuilder Особенности строк в .NET
Структуры DateTime/TimeSpan/DateTimeOffset | Класс Random | Структура Guid | Интерфейсы IComparable, IEquatable, IComparer Книга C# 7.0 in a Nutshell, Chapter 6 String vs StringBuilder Выбор между типами DateTime, DateTimeOffset, TimeSpan и TimeZoneInfo
Коллекции ArrayList, List, Dictionary, Hashtable, HashSet, LinkedList, Stack, Queue, Класс Array | Интерфейсы IEnumerable и IEnumerator, Утиная типизация (duck typing), Цикл foreach | Интерфейсы ICollection, IList, IReadOnlyList Книга C# 7.0 in a Nutshell, Chapter 7 Коллекции и структуры данных Итераторы
Механизм работы Сборщика Мусора, Финализаторы, Интерфейс IDisposablе, using Книга C# 7.0 in a Nutshell, Chapter 12
Работа с потоками ввода/вывода, Пространство имен System.IO, Классы File, Directory, FileInfo, DirectoryInfo, Path, FileStream, MemoryStream, StreamReader, StreamWriter, BinaryReader, BinaryWriter... Книга C# 7.0 in a Nutshell, Chapter 15
Механизм сериализации, Бинарная сериализация, XML сериализация, Атрибуты [DataContract], [DataMember], [OnSerializing], [Serializable], [OnSerialized], [OnDeserializing], [OnDeserialized] Книга C# 7.0 in a Nutshell, Chapter 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, Chapter 13
Работа со структурами Memory<T> и Span<T> Рекомендации по использованию структур Memory<T> и Span<T>
Работа с Деревьями выражений (Expression Trees) Книга C# 7.0 in a Nutshell, Chapter 8
Рефлексия, Метаданные, Атрибуты, Позднее связывание, Класс Activator, Класс Type | Ключевое слово dynamic, Классы ExpandoObject и DynamicObject Книга C# 7.0 in a Nutshell, Главы 19-20

Читайте также: Насколько хорошо junior программист должен знать язык программирования

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

.NET Framework / .NET Core

Уровень Темы Материалы
Основы .NET Framework: CLR, CTS, JIT C# 7.0 in a Nutshell Общие сведения о платформе .NET Framework Книга СLR via C# by Jeffrey Richter, Chapter 1
Модель выполнения кода в среде CLR Книга СLR via C# by Jeffrey Richter, Chapter 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, Chapter 1 Книга C# 7.0 in a Nutshell, Chapter 1 .Net Core Architecture
Сборки: Содержимое сборок, Манифест, Управление версиями, GAC, Загрузка сборок... Сборки в .NET Книга СLR via C# by Jeffrey Richter, Главы 2, 3, 23
Домены приложения, Процесс vs Домен vs Поток, Класс AppDomain Книга СLR via C# by Jeffrey Richter, Chapter 22 Книга C# 7.0 in a Nutshell, Chapter 24
Куча больших объектов (Large Object Heap), Конфигурация cборщика мусора, GC триггеры Книга C# 7.0 in a Nutshell, Chapter 12 Книга СLR via C# by Jeffrey Richter, Chapter 21
Работа со счетчиками производительности (Performance Counters), Performance Monitor Книга C# 7.0 in a Nutshell, Chapter 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, Chapter 25 Unsafe Code in C#
Roslyn компилятор Книга C# 7.0 in a Nutshell, Chapter 27

Читайте также: Что такое Энтерпрайз разработка?

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

Облачные технологии Microsoft Azure / Docker

Уровень Темы Материалы
Понимание моделей SaaS (Software-as-a-Service), Paas (Platform-as-a-Service) , IaaS (Infrastructure-as-a-Service) | Serverless Microsoft Azure Tutorial for Beginners: Learn in 1 Day Serverless Serverless Architectures
Понимание концепций Scalability, High Availability, Fault Tolerance, Redundancy Azure Concepts, Linux Academy What Does Redundancy Mean In The Cloud?
Архитектура Azure: Subscriptions, Regions, Datacenters, Resources, Resource groups | Active Directory Azure Concepts, Linux Academy Microsoft Azure Tutorial for Beginners: Learn in 1 Day
Развертывание приложения, понимание сервисов: Virtual Machine, App Service, Azure Service Fabric, Azure Functions, Container Instances... The Developer’s Guide to Azure Tour of Azure services
Понимание ключевых Docker концепций: Docker Image, Docker Container, Container Registry | Docker Hub | Структура Dockerfile, Команды FROM, COPY, RUN, WORKDIR, ENTRYPOINT... | Docker vs Virtual Machine | Плюсы и минусы Docker | Работа с Docker CLI: docker build, docker run, docker stop, docker images, docker ps, docker logs, docker pull/push, docker tag Основные концепции Docker на простых примерах из жизни Tutorial: Containerize a .NET Core app Get started with Docker for Windows Изучаем Docker, часть 3: файлы Dockerfile
Создание и развертывание Docker контейнеров | Понимание Docker архитектуры | Multi-stage builds | Docker Compose | Docker security overview | Оптимизация размера Docker Image Docker security Top 20 Docker Security Tips Руководство по Docker Compose для начинающих Docker Architecture: Why is it important? Use multi-stage builds Development workflow for Docker apps Optimizing ASP.NET Core Docker Image sizes
Выбор между On-Premise и Azure Cloud The Developer’s Guide to Azure On-Premise vs. Cloud IaaS — преимущества и недостатки
Работа с Azure Virtual Machines, Virtual Networks, Subnets, Network Security Groups Windows virtual machines in Azure Azure Virtual Network frequently asked questions Introduction to Azure Network Security Groups (NSGs)
Работа с Azure Storage: BLOBs, Queues, Files, Tables, Disks Introduction to Azure Storage
Работа с Azure Service Bus: Queues, Topics, Relays Microsoft Azure Service Bus Azure Service Bus Messaging documentation
SQL и NoSQL в Azure, Работа с сервисами Azure SQL Database, Azure Cosmos DB Azure SQL Database Welcome to Azure Cosmos DB
Cloud Deployments: Public Cloud, Private Cloud, Hybrid Cloud What are public, private, and hybrid clouds? Cloud deployment models
Обзор Azure Service Fabric Overview of Azure Service Fabric От легаси к Service Fabric за 360 часов. История одной миграции
Безопасность, контроль доступа в Azure | Role-based access control (RBAC) in Azure Security, responsibility, and trust in Azure What is role-based access control (RBAC) for Azure resources?
Проектирование современных веб-приложений с использованием ASP.NET Core и Azure Architect Modern Web Applications with ASP.NET Core and Azure

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

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

Уровень Темы Материалы
Понимание целей Рефакторинга Рефакторинг: основные принципы и правила Цена рефакторинга
Использование модульных тестов при рефакторинге Книга Рефакторинг. Улучшение существующего кода, Martin Fowler, Chapter 2
Понимание распространенных 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
Техника рефакторинга Branch By Abstraction BranchByAbstraction, Martin Fowler
Сбор и анализ метрик качества кода: Цикломатическая сложность, Количество строк кода, Глубина наследования, Количество входящих/исходящих зависимостей класса Значения метрик кода Метрики программного обеспечения в Visual Studio
Работа с унаследованным кодом: рефакторинг, сопровождение, повторное использование Книга Working Effectively with Legacy Code by Michael Feathers
Работа с техническим долгом Технический долг на проекте или выбраться из черной дыры Как научиться не накапливать технический долг — отвечают эксперты
Выполнение large-scale рефакторинга How To Do Large Scale Refactoring

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

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

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

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

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

Уровень Темы Материалы
Цели юнит-тестирования Юнит-тестирование для чайников Зачем нужны юнит-тесты Книга The Art of Unit Testing by Roy Osherove, Chapter 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, Chapter 4
Параметризованные тесты Книга The Art of Unit Testing by Roy Osherove, Chapter 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, Chapter 4 Styles of unit testing
Data-driven Tests Книга xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros, Chapter 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, Chapter 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: Поиск в глубину и проблема взаимоблокировок Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе

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

Объектно-ориентированное программирование / Парадигмы программирования

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

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

Шаблоны и принципы проектирования, 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
Закон Деметры Закон Деметры
Проектирование сквозных функциональностей (cross-cutting concerns): кеширование, логирование, обработка ошибок, локаликация и другие. Crosscutting Concerns Cross-cutting concern Managing Cross Cutting Concerns – Logging

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

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

Уровень Темы Материалы
Необходимость применения DDD Книга Предметно-ориентированное проектирование, Эрик Эванс, Chapter 1 Domain-driven design: рецепт для прагматика
Понимание терминов Поддомен (Subdomain) и Ограниченные контекст (Bounded Context), Карта контекстов (Context Map) Книга Предметно-ориентированное проектирование, Эрик Эванс, Chapter 14 Ubiquitous Language и Bounded Context в DDD Domain-driven design: рецепт для прагматика
Разработка Единого языка (Ubiquitous Language) Книга Предметно-ориентированное проектирование, Эрик Эванс, Chapter 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 Книга Предметно-ориентированное проектирование, Эрик Эванс, Chapter 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

Читайте также: Джуниор программист с 10 годами опыта. Бред?

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

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

Уровень Темы Материалы
Объектно-реляционное отображение (ORM) ORM (Object-Relational Mapping) Введение в ORM
Шаблон Репозиторий (Repository) Паттерн «Репозиторий». Основы и разъяснения EntityFramework: (анти)паттерн Repository Domain-Driven Design: Repository Книга Patterns of Enterprise Application Architecture by Martin Fowler, Chapter 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, Chapter 11
Шаблон Объект запроса (Query Object) Query Object (Объект-запрос) Работа с Dapper + Query Object Dapper + QueryObject, как замена ORM Книга Patterns of Enterprise Application Architecture by Martin Fowler, Chapter 13
Шаблон Активная запись (Active Record) Active Record (Активная запись) Active Record Pattern Книга Patterns of Enterprise Application Architecture by Martin Fowler, Chapter 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 Querying Data IEnumerable и IQueryable
Сохрание данных | Tracking vs No-Tracking Saving Data Отслеживание объектов и AsNoTracking
Ленивая загрузка зависимых данных, Проблема N+1 Lazy Loading Related Data In Entity Framework Core Common Entity Framework Problems: N + 1
Архитектура 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
Клиент-серверная архитектура Клиент — сервер
Микросервисная архитектура Микросервисы — за и против Переход от монолита к микросервисам .NET Microservices: Architecture for Containerized .NET Applications
Шаблон Command Query Responsibility Segregation (CQRS) Command and Query Responsibility Segregation (CQRS) на практике CQRS Types of CQRS CQRS. Факты и заблуждения
Шаблон Event Sourcing Введение в CQRS + Event Sourcing: Часть 1. Основы Pattern: Event sourcing
Луковая архитектура (Onion architecture) Луковая архитектура. Часть 1 Onion Architecture
Совмещение CQRS и DDD Simplified CQRS and DDD
Шаблоны корпоративных программных приложений Catalog of Patterns of Enterprise Application Architecture
Событийно-ориентированная архитектура (Event-driven architecture) What is an Event-Driven Architecture? Software Architecture Patterns
Serverless архитектура Serverless Architectures
Неизменяемая архитектура (Immutable architecture) Immutable architecture
Шаблоны интеграции корпоративных приложений Шаблоны интеграции корпоративных приложений
Атрибуты качества ПО (Software Quality Attributes) Quality attributes in Software Architecture Software Architecture for Developers
Архитектурные анти-шаблоны Software Architecture AntiPatterns

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

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 What Is a Browser 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: MD5, SHA256 Hashing algorithms and their practical usage in .NET Part 1
Механизм работы HTTPS протокола, HSTS Чем отличается HTTP от HTTPS HSTS Принудительное применение HTTPS в ASP.NET Core
Same-origin policy | Cross-Origin Resource Sharing (CORS) | Понимание JSONP Общение между окнами Cross-Origin Resource Sharing (CORS) Книга The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws, Dafydd Stuttard
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, TRUNCATE операторов Учебник по языку 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

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

Гибкие методологии разработки / Эстимации / Требования

Уровень Темы Материалы
Жизненный цикл/Стадии разработки программного обеспечения (SDLC) Цикл разработки и его этапы Модели жизненного цикла программного обеспечения
Гибкие (Agile) методологии разработки программного обеспечения | Agile манифест Гибкая методология разработки Agile-манифест разработки программного обеспечения
Понимание Scrum процесса | Роли в Scrum: Product Owner, Scrum Master, Team | Артефакты в Scrum: Backlog, Increment, Epic, Story, Task, Charts... Гибкая методология разработки "Scrum" Что такое Scrum Роли в Scrum Scrum: 12 терминов, которые нужно запомнить Scrum - Артефакты АДЖАЙЛ И СКРАМ
Церемонии в Scrum: Sprint/Release Planning, Daily Scrum, Sprint Demo, Sprint Review, Sprint Retrospective The Scrum Guide Agile-церемонии
Эстимирование в Scrum: Story Points, Planning Poker, Story Points vs Ideal Days 12 советов по эстимации проектов по разработке от практикующих пресейл-специалистов Как научиться оценивать задачи, если не умеешь: 4 фактора сложности Стори поинты: как это работает
Техники эстимирования: Decomposition, Analogy-based estimation, 3-point estimate 4 метода для оценки затрат проекта
Классификация требований ПО | Разница между функциональными и нефункциональными требованиями | Виды нефункциональных требований Нефункциональные требования к программному обеспечению. Часть 1 Анализ требований
Понимание Kanban методологии, Scrum vs Kanban Что такое Канбан Разбираемся в Scrum и Kanban Scrum vs Kanban: в чем разница и что выбрать?
Понимание Scrumban методологии, Необходимость применения Scrum-ban
Методология экстремального программирования Книга Экстремальное программирование, Кент Бек Методики и принципы экстремального программирования

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

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

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

Google Facebook ВКонтакте
Богдан Клименков
Богдан Клименков 24 дня назад
Почему на русском у сеньора в "Принципах ООП" три звезды, а если переключить на английский - две?
1   0
Комментировать
Не комментировать
YouIT
YouIT 24 дня назад
Потому что была опечатка. Спасибо, Богдан.
0   0
Комментировать
Не комментировать
Aleksandr Varyushin
Aleksandr Varyushin 31 день назад
Про утиную типизацию https://habr.com/ru/post/41377/
1   0
Комментировать
Не комментировать
Ян Вязовский
Ян Вязовский 33 дня назад
Большое спасибо за такое структурированное собрание тем, вопросов и ссылок
0   0
Комментировать
Не комментировать
Sergey Benzenko
Sergey Benzenko 51 день назад
Объём информации перечислен примерно на 4х специалистов: фронт, бэк, QA и тимлида. С трудом могу себе представить человека, который бы один мог хотя бы на пару вопросов по каждой из перечисленных тем ответить. Но в качестве справочника очень полезно. Единственное, что для полноты картины можно сюда добавлять раздел про облачные сервисы: Azure, AWS или подобные. По крайней мере, в экзамене Microsoft на сертификат ASP.NET чуть не половина вопросов по Azure.
0   0
Комментировать
Не комментировать
Nikolay Balakin
Nikolay Balakin 55 дней назад
Слабые Материалы (Weak References) — слабые ссылки?
1   0
Комментировать
Не комментировать
YouIT
YouIT 55 дней назад
Спасибо, исправили.
0   0
Комментировать
Не комментировать