Computer Science
Структуры данных
Базовые структуры: массивы, списки, стек, очередь, словарь. Понимание отличий и применения
Хард
Понимание принципа работы хеш-таблиц и коллизий
Хард
Базовое понимание деревьев (для иерархий, индексов БД)
Хард
Аргументированный выбор структуры данных под задачу
Софт
Анализ сложности (время доступа, использование памяти)
Софт
Алгоритмы
Линейный и бинарный поиск. Понимание основных сортировок
Хард
Понимание нотации Big O (O(1), O(n), O(log n), O(n²))
Хард
Оптимизационное мышление (оценка эффективности)
Софт
Декомпозиция задачи на алгоритмические шаги
Софт
Архитектура & Паттерны
Понимание и применение принципов SOLID
Хард
Знание базовых паттернов (Фабрика, Репозиторий, Наблюдатель)
Хард
Порождающие паттерны: Singleton, Builder, Prototype
Хард
Структурные паттерны: Adapter, Decorator, Facade
Хард
Поведенческие паттерны: Strategy, Command, Iterator
Хард
Паттерны корпоративных приложений: Unit of Work, Identity Map
Хард
Абстрактное мышление и применение известных шаблонов
Софт
Язык C# и .NET
Основы C#
Синтаксис: переменные, операторы, управляющие конструкции
Хард
ООП: создание классов, инкапсуляция, наследование, полиморфизм
Хард
Работа с исключениями (try-catch-finally, пользовательские исключения)
Хард
Читаемость кода (соглашения об именовании)
Софт
Продвинутые возможности C#
LINQ (запросы и методы расширений)
Хард
Асинхронность (async/await, Task)
Хард
Рефлексия, атрибуты
Хард
Generics, ковариантность и контравариантность
Хард
Оптимизация (память, производительность)
Софт
GUI (WPF / Avalonia)
XAML: базовая разметка, панели компоновки (StackPanel, Grid)
Хард
Data Binding (привязка к свойствам ViewModel, режимы)
Хард
Команды (ICommand, ReactiveCommand)
Хард
Стили, триггеры, шаблоны элементов управления
Хард
Навигация между окнами/страницами
Хард
UX-мышление и разделение логики (MVVM)
Софт
Доступ к данным в .NET
ADO.NET (SqlConnection, SqlCommand, SqlDataReader)
Хард
Dapper (установка, Query<T>, Execute)
Хард
Entity Framework Core (DbContext, миграции, LINQ-запросы)
Хард
Выбор инструмента под задачу (Dapper vs EF Core)
Софт
Тестирование
Написание юнит-тестов (xUnit/NUnit)
Хард
Использование mock-объектов (Moq, NSubstitute)
Хард
Интеграционное тестирование
Хард
TDD (разработка через тестирование)
Софт
ASP.NET Core
Создание Web API (контроллеры, маршрутизация)
Хард
Middleware и конвейер обработки запросов
Хард
Внедрение зависимостей (DI)
Хард
Аутентификация и авторизация (JWT, Identity)
Хард
Работа с базами данных через EF Core в ASP.NET
Хард
Razor Pages / MVC
Хард
Документирование в C#
XML-комментарии для публичных API (summary, param, returns)
Хард
Генерация документации (DocFX)
Хард
Документирование REST API (Swagger/OpenAPI в ASP.NET Core)
Хард
Базы данных: SQL & СУБД
Основы SQL
DDL (CREATE/ALTER TABLE, ключи)
Хард
DML (SELECT с JOIN, GROUP BY; INSERT, UPDATE, DELETE)
Хард
Транзакции (ACID, BEGIN, COMMIT, ROLLBACK)
Хард
Индексы, анализ плана запроса (EXPLAIN)
Хард
Мышление множествами (составление запросов)
Софт
PostgreSQL
Особенности типов данных (JSONB, массивы)
Хард
Полнотекстовый поиск (tsvector, tsquery)
Хард
Расширения (PostGIS, pgcrypto)
Хард
Настройка производительности (VACUUM, ANALYZE)
Хард
Документирование схемы (комментарии к таблицам и колонкам)
Софт
MySQL
Особенности хранения (InnoDB vs MyISAM)
Хард
Репликация и партиционирование
Хард
Оптимизация запросов (EXPLAIN в MySQL)
Хард
Документирование схемы
Софт
SQLite
Встраиваемая БД, особенности использования
Хард
Работа с SQLite в мобильных и десктопных приложениях
Хард
Веб-разработка
HTML/CSS
Семантическая вёрстка, доступность
Хард
Flexbox и Grid Layout
Хард
Адаптивная вёрстка (медиа-запросы)
Хард
Препроцессоры (Sass, Less)
Хард
JavaScript
Основы синтаксиса, типы данных, функции
Хард
DOM-манипуляции и события
Хард
Асинхронность (Promise, async/await)
Хард
Fetch API и работа с REST
Хард
Модули (ES6 modules)
Хард
Документирование JavaScript (JSDoc: @param, @returns, @throws)
Хард
Генерация документации (JSDoc, TypeDoc для TypeScript)
Хард
PHP
Основы синтаксиса, работа с формами
Хард
Сессии и куки
Хард
Подключение к БД (MySQLi, PDO)
Хард
Основы ООП в PHP
Хард
Документирование PHP (PHPDoc: @param, @return, @throws)
Хард
Инструменты: phpDocumentor, Doxygen
Хард
Мобильная разработка
Android (Kotlin)
Основы языка Kotlin (синтаксис, null safety, корутины)
Хард
Android SDK (Activity, Fragment, жизненный цикл)
Хард
Jetpack Compose (composable-функции, state, модификаторы)
Хард
Навигация в Compose
Хард
Архитектурные компоненты (ViewModel, LiveData/Flow)
Хард
Работа с сетью (Retrofit, Kotlin Serialization)
Хард
Базы данных (Room)
Хард
DI (Dagger, Hilt)
Хард
Тестирование на Android
Хард
Документирование Kotlin (KDoc, Dokka)
Хард
Контейнеризация
Docker
Основные команды (docker run, build, push)
Хард
Создание Dockerfile, оптимизация слоёв
Хард
Docker Compose (запуск многоконтейнерных приложений)
Хард
Сетевое взаимодействие контейнеров
Хард
Volumes и работа с данными
Хард
CI/CD интеграция (GitLab CI, GitHub Actions)
Софт
Документирование Docker-образов (docker inspect, labels)
Софт
Инструменты: Git
Базовые команды
init, clone, add, commit, push, pull
Хард
Ветвление и слияние (branch, merge, разрешение конфликтов)
Хард
Осмысленные коммиты (понятные сообщения)
Софт
Командная работа (работа с общим репозиторием, pull requests)
Софт
Взаимодействие в команде
Навыки коммуникации
Участие в код-ревью: давать конструктивную обратную связь
Софт
Участие в код-ревью: принимать замечания и анализировать
Софт
Совместная разработка в Git (ветки, мерж-реквесты)
Софт
Ясная устная и письменная коммуникация
Софт
Работа по Agile/Scrum: роли, стендапы, оценка задач
Софт
Менторство и обмен знаниями
Софт
Профессиональные практики
Общие практики
Отладка (точки останова, пошаговое выполнение)
Хард
Профилирование и оптимизация производительности
Хард
Проактивность (самостоятельный поиск и исправление ошибок)
Софт
Восприятие обратной связи и работа над собой
Софт
Документирование кода (общие принципы) и создание инструкций
Софт