Войти
Язык программирования 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 |
Контрольные вопросы:
- В чем разница между ссылочными и значимыми типами данных?
- В чем разница между делегатами и событиями?
- В чем разница между операторами const и readonly?
- Может ли структура реализовывать интерфейс
- Что такое Duck typing? В чем отличия интерфейсов IEnumerable и IEnumerator?
- В чем заключается необходимость неизменяемости строк? (или какие преимущества неизменяемых типов над изменяемыми?)
- Почему StringBuilder значительно опережает string по производительности при большом количестве конкатенаций?
- Когда вызывается статический конструктор экземплярного класса?
- В чем разница между коллекциями: Dictionary vs Hashtable, Hashtable vs HashSet, Dictionary vs Lookup?
- Для чего механизм сборки мусора использует поколения?
- Существует ли связь между механизмом рефлексии и метаданными сборки?
- Как реализовать механизм Замыкания (Clojure) в C#?
.NET Framework / .NET Core
Контрольные вопросы:
- Что такое JIT-компиляция?
- В чем разница между Процессом и Доменом приложения?
- Зачем может понадобиться явно создавать дополнительный Домен приложения?
- Почему лучше избегать попадания в Large Object Heap и как?
- Какие режимы сборки мусора существуют?
- Какие конкретные счетчики производительности существуют в Windows?
- Какое предназначение у механизма Маршалинг?
- Что такое Roslyn?
Контроль качества кода / Рефакторинг
Уровень | Темы | Материалы |
---|---|---|
Понимание целей Рефакторинга | Рефакторинг: основные принципы и правила Цена рефакторинга | |
Понимание распространенных 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 |
Контрольные вопросы:
- Какая цель Рефакторинга?
- Почему модульные тесты важны при рефакторинге?
- Что для Вас есть Code Smells?
- Что могут показать статические анализаторы кода?
- Как рефакторить длинный список параметров метода?
- Нужно ли оставлять в коде комментарии?
- На что обращать внимание при проведении код-ревью?
- Какие инструменты код-ревью существуют?
- Нужно ли собирать метрики кода при выполнении large-scale рефакторинга?
Многопоточность и Асинхронное программирование
Контрольные вопросы:
- Что такое Виртуальное адресное пространство?
- Почему большое количество параллельных потоков могут ухудшить производительность приложения?
- В чем разница между Потоком и Процессом?
- Когда возникает Мертвая блокировка?
- В чем разница между Thread.Sleep и Task.Delay?
- В чем разница между Lock и Monitor?
- В чем разница между Thread и Task?
- Почему неизменяемые типы являются потокобезопасными?
- В чем разница между Многопоточным и Асинхронным программированием?
- Когда нужно думать о синхронизации потоков?
- В чем разница между механизмами синхронизации Mutex и Semaphore?
- Почему примитивные операции инкремента или присваивания нужно синхронизировать классом Interlocked?
- Что такое ReaderWriterLockSlim?
- Как создать потокобезопасный Синглтон?
- Является ли класс Lazy<T> потокобезопасным?
Модульное и интеграционное тестирование
Контрольные вопросы:
- Что именно тестируют модульные тесты?
- В чем разница между Модульными и Интеграционными тестами?
- Что такое AAA шаблон?
- Чем Stub отличается от Mock?
- C какими Code Smells в модульных тестах Вы сталкивались?
- Как измерить процент покрытия кода модульными тестами?
- Почему тяжело тестировать код, использующий шаблон Синглтон?
- Какие шаблоны модульного тестирования Вам знакомы?
- Нужно ли тестировать приватные методы класса?
- Опишите процесс разработки через тестирование?
- Что такое Data-driven тесты?
Алгоритмы и Структуры Данных
Уровень | Темы | Материалы |
---|---|---|
Понимание 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: Поиск в глубину и проблема взаимоблокировок Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе |
Контрольные вопросы:
- Что показывает Big O нотация?
- По каким двум параметрам можно оценивать сложность алгоритма?
- Чему равна Big O для бинарного поиска?
- Чему равна Big O для операции обращения к ячейке массива по индейсу?
- Опишите алгоритм Сортировки слиянием (Merge Sort)?
- Чему равна Big O для операции извлечения значения по ключу из хеш-таблицы?
- Опишите реализацию алгоритма поиска в ширину (BFS) для дерева?
- В какие случаях для деревьев лучше использовать DFS, а в каких BFS?
- Почему может возникнуть коллизия в хеш-таблицах?
- Как оценить сложность алгоритма?
- Опишите принцип работы алгоритма Дейкстры.
Принципы объектно-ориентированного программирования (ООП)
Уровень | Темы | Материалы |
---|---|---|
Классы и Объекты | Классы и объекты | |
Понимание принципов ООП: Абстракция, Инкапсуляция, Наследование, Полиморфизм | Книга Объектно-ориентированный анализ и проектирование, Гради Буч ООП с примерами | |
Понимание принципов Сильного сцеплений (High Cohesion) и Слабой связанности (Low Coupling) | Книга Объектно-ориентированный анализ и проектирование, Гради Буч Cohesion and Coupling: the difference | |
Понимание связей Композиции, Агрегации, Наследования. Плюсы и минусы. | Книга Объектно-ориентированный анализ и проектирование, Гради Буч Наследование vs Композиция vs Агрегация |
Контрольные вопросы:
- В чем разница между Классом и Объектом?
- В чем разница между Абстракцией и Инкапсуляцией?
- В чем недостатки наследования?
- Что такое Полиморфизм?
- В чем разница между Композицией и Агрегацией?
- О чем говорит принцип Сильного сцеплений (High Cohesion)?
- О чем говорит принцип Слабой связанности (Low Coupling)?
Шаблоны и принципы проектирования, SOLID
Контрольные вопросы:
- Как расшифровывается аббревиатура SOLID?
- В чем идея принципа замещения Лисков?
- Какие шаблоны проектирования помогают придерживаться принципа Открыт/Закрыт?
- Какие шаблоны проектирования помогают придерживаться принципа Единой ответственности?
- В чем сходства и отличия принципов Единой ответственности и Разделения интерфейсов?
- Опишите принципы DRY, KISS, YAGNI.
- В чем разница между шаблонами Фасад и Адаптер?
- Как реализовать Синглтон? Можно ли реализовать Синглтон с помощью DI-контейнеров?
- В чем смысл шаблона Декоратор?
- В чем разница между шаблонами Стратегия и Шаблонный метод?
- В чем суть принципа Inversion of Control (IoC)?
- Какую проблему решает шаблон проектирования Посетитель?
- Опишите реализацию шаблона Медиатор.
- Когда нужно использовать шаблон проектирования Rules?
Предметно-ориентированное проектирование (Domain-driven design, DDD)
Контрольные вопросы:
- Когда нужно применять DDD?
- В чем разница между Поддоменом и Ограниченным контекстом?
- В чем смысл Ubiquitous Language и как его разработать?
- В чем разница между Сущностями и Объектами-значениями?
- Что означает Анемичная доменная модель?
- Как реализовать Доменный события?
- В каких случаях нужно размещать бизнес-логику в Доменных сервисах?
- Зачем может понадобиться создавать Anti-Corruption слой?
Шаблоны уровня доступа к данным
Контрольные вопросы:
- Какую проблему решает технология ORM?
- Как сочетаются вместе шаблоны Unit of Work и Repository?
- Можно ли совмещать шаблоны Repository и Specification?
- В чем смысл шаблона Specification?
- Нужно ли создавать репозиторий для моделей, которые не являются корнями агрегатов?
- Является ли шаблон Active Record анти-шаблоном?
- Как работает механизм Оптимистической блокировки?
Фреймворки доступа к данным: 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 |
Контрольные вопросы:
- В чем разница между Code First и Database First в Entity Framework?
- Что такое N+1 проблема?
- В чем разница между интерфейсами IQueyrable и IEnumerable?
- В фундаментальная разница между Entity Framework и Dapper?
- Какими классами в Entity Framework представлены шаблоны Unit Of Work и Repository?
- Как моделируется отношение "многие ко многим" в Entity Framework Core?
Архитектурные шаблоны и Атрибуты качества (Quality Attributes)
Контрольные вопросы:
- Какими конкретно уровнями представлена трехуровневая архитектура?
- Какие недостатки имеет монолитная архитектура?
- Какие преимущества микросервисной архитектуры над монолитной?
- Как взаимодействуют компоненты Модель, Контроллер и Представление в шаблоне MVC?
- В чем смысл шаблона CQRS?
- Опишите элементы Onion архитектуры и их взаимодействие?
- Как реализуется Serverless архитектура?
- К какому типу Software Requirments относятся атрибуты качества ПО?
- Какие атрибуты качества ПО вы знаете?
- В чем недостатки шаблоны интеграции Shared Database?
- Как два микросервиса могут взаимодействовать друг с другом/обмениваться данными?
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 |
Контрольные вопросы:
- Что такое REST?
- В чем разница между HTTP методами POST и PUT?
- Опишите жизненный цикл запроса в ASP.NET MVC.
- Для чего предназначена спецификация OWIN?
- Как сохранить состояние на стороне сервера для не аутентифицированного пользователя?
- Для чего применяется версионирование API?
- Какой транспортный протокол использует библиотека SignalR?
- Что такое JWT токены?
- Что такое E-Tag?
Фронтенд разработка: 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 |
Контрольные вопросы:
- JavaScript компилируемый или интерпретируемый? Однопоточный или многопоточный?
- В чем разница между EcmaScript и JavaScript?
- В чем разница между ключевыми словами var и let?
- Какие типы данных существуют в JavaScript
- В чем разница между значениями null и undefined?
- Для чего применяется оператор instanceof?
- В чем разница между JavaScript и TypeScript?
- Для чего необходимы многоуровневые промисы?
- В чем преимущества SPA над веб-сайтами?
- В чем разница между Cookies и Local Storage?
- Как реализовать замыкание в JavaScript?
- Для чего необходимо свойство prototype?
- Как работает Event Loop в JavaScript?
Веб-безопасность, Шифрование данных, OWASP
Контрольные вопросы:
- В чем отличия Аутентификации от Авторизации?
- Что такое хеширование?
- В чем разница между Симметричным и Асимметричным шифрованием?
- В чем смысл протокола OAuth?
- Как происходит XSS атака?
- Как происходит CSRF атака?
- Откуда берутся сертификаты, которые использует HTTPS протокол?
- В чем разница между HTTPS и HSTS?
- В чем смысл CORS?
- Какие уязвимости из OWASP TOP 10 Вам знакомы?
- Какие алгоритмы симметричного шифрования Вам знакомы?
Распределенные системы и Микросервисная архитектура
Контрольные вопросы:
- В чем разница между Вертикальным и горизонтальным масштабированием?
- В чем смысл теоремы CAP?
- Какие существуют алгоритмы балансировки нагрузки?
- Опишите шаблон кеширования Cache-aside.
- В чем разница между SQL и No-SQL
- Что такое Eventual consistency?
- Как добиться транзакционности в микросервисной архитектуры?
- Опишите идею шаблона Strangler.
Базы данных: T-SQL, MS SQL, NoSQL
Контрольные вопросы:
- Какие нормальные формы Вам знакомы?
- Сравните нормализацию и денормализацию баз данных.
- Как моделируется отношение "многие ко многим" в MS SQL?
- В чем разница между Primary Key и Foreign Key?
- В чем разница между операторами LEFT JOIN vs INNER JOIN?
- В чем разница между операторами CROSS JOIN и CROSS APPLY?
- В чем отличия Кластерных индексов от Некластерных?
- Для чего применяется оператор INCLUDE при создании некластерного индекса?
- Какие уровни изоляций транзакций существуют?
- Опишите свойства ACID.
- Как избегать мертвых блокировок при работе с транзакциями?
- В чем разница между временными таблицами и CTE?
Системы контроля версий: 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 |
Контрольные вопросы:
- В чем разница между централизованными и распределенными системами контроля версий?
- В чем разница между командами git fetch и git pull в Git?
- В чем разница между merge commit и merge squash в Git?
- Что такое cherry-pick в Git?
- Для чего применяются теги в Git?
- Для чего применяются пул-риквесты в Git?
Методологии разработки: 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 | |
Методология экстремального программирования | Книга Экстремальное программирование, Кент Бек Методики и принципы экстремального программирования |
Контрольные вопросы:
- Опишите Scrum процесс.
- Какие роли существуют в Scrum?
- Какие церемонии существуют в Scrum?
- В чем сходства и отличия методологий Scrum и Kanban?
- В чем разница между оценкой в Story points и человеко-часах?
Комментарии (0)
Авторизируйтесь для участия в дискуссии