- Основы языка:
- Типы данных (встроенные, пользовательские).
- Операторы и выражения.
- Управляющие структуры (ветвления, циклы).
- Функции и их перегрузка.
- Указатели и ссылки.
- Динамическое выделение памяти (
new, delete).
- Пространства имен.
- Объектно-ориентированное программирование (ООП):
- Классы и объекты.
- Инкапсуляция, наследование, полиморфизм.
- Конструкторы и деструкторы.
- Виртуальные функции и абстрактные классы.
- Шаблоны классов и функций.
- Умные указатели (
std::unique_ptr, std::shared_ptr, std::weak_ptr).
- Стандартная библиотека C++ (STL):
- Контейнеры (векторы, списки, мапы, сеты и др.).
- Алгоритмы (сортировка, поиск, преобразования и др.).
- Итераторы.
- Функциональные объекты (лямбда-выражения, функторы).
- Потоки ввода-вывода (
iostream).
- Работа с памятью:
- Стек и куча.
- Управление ресурсами через RAII (Resource Acquisition Is Initialization).
- Обработка исключений:
- Многопоточность:
std::thread.
- Мьютексы (
std::mutex).
- Условные переменные (
std::condition_variable).
- Новые стандарты C++ (C++11/14/17/20):
- Автоматический вывод типов (
auto).
- Rvalue ссылки и семантика перемещения.
- Лямбда-выражения.
- Диапазонные циклы
for.
- Параметры шаблонов переменной длины (variadic templates).
- Сопрограммы (coroutines) (C++20).
- Системное программирование:
- Работа с файлами.
- Сетевое взаимодействие (основы).
- Инструменты разработки:
- Системы сборки (CMake).
- Системы контроля версий (Git).
- Отладчики (GDB).
- Производительность:
- Оптимизация кода.
- Профилирование.
- Работа с низкоуровневыми деталями (при необходимости).
Дополнительно знаком с принципами TDD (Test Driven Development) и Unit Testing.