ДЛЯ НОВИЧКОВНЕ ДЛЯ НОВИЧКОВНЕ ОБЯЗАТЕЛЬНОВ РАЗРАБОТКЕ
Разработчику
Архитектору
Чек-лист самопроверки
- Что такое C++ и чем он отличается от C?
- Какие парадигмы программирования поддерживает C++?
- Что означает принцип «нулевой стоимости абстракций»?
- Как происходит компиляция и линковка C++-программы?
- Что такое препроцессор и какие директивы он поддерживает?
- Что такое заголовочные файлы и зачем нужны include guards или
#pragma once?
- Какие есть фундаментальные типы данных в C++?
- В чём разница между
int, long, size_t, ptrdiff_t?
- Что такое
const и как он применяется к переменным, указателям, функциям?
- Что такое ссылки и указатели — и чем они отличаются?
- Как работает приведение типов в C++ (
static_cast, dynamic_cast, const_cast, reinterpret_cast)?
- Что такое область видимости и продолжительность жизни переменной?
- Что такое автоматические, статические и динамические переменные?
- Как работают условные операторы (
if, switch)?
- Какие циклы поддерживаются (
for, while, do-while, range-based for`)?
- Что такое функции и как передаются аргументы (по значению, по ссылке, по указателю)?
- Что такое перегрузка функций?
- Что такое inline-функции и зачем они нужны?
- Что такое пространства имён и как их использовать?
- Что такое класс и чем он отличается от структуры?
- Какие спецификаторы доступа существуют (
public, private, protected)?
- Что такое конструктор, деструктор, конструктор копирования, оператор присваивания?
- Что такое правило трёх (Rule of Three) и правило пяти (Rule of Five)?
- Что такое move semantics и rvalue-ссылки?
- Что такое
std::move и когда его применять?
- Что такое RAII и как он реализуется?
- Что такое умные указатели (
unique_ptr, shared_ptr, weak_ptr)?
- Что такое наследование и как оно работает в C++?
- Что такое виртуальные функции и полиморфизм?
- Что такое чисто виртуальные функции и абстрактные классы?
- Почему множественное наследование в C++ считается сложным?
- Что такое шаблоны и как они обеспечивают обобщённое программирование?
- В чём разница между шаблонами функций и шаблонами классов?
- Что такое SFINAE и как оно использовалось до C++20?
- Что такое концепты (concepts) и как они упрощают шаблоны?
- Что такое лямбда-выражения и как они захватывают переменные?
- Что такое стандартная библиотека (STL) и из чего она состоит?
- Какие основные контейнеры есть (
vector, list, map, unordered_map, set, array)?
- В чём разница между последовательными и ассоциативными контейнерами?
- Что такое итераторы и какие категории итераторов существуют?
- Как работают алгоритмы из
<algorithm> (sort, find, transform, accumulate)?
- Что такое исключения и как их обрабатывать (
try/catch/throw)?
- Что такое noexcept и зачем он нужен?
- Как работает многопоточность в C++ (
std::thread, std::mutex, std::async)?
- Что такое futures и promises?
- Что такое атомарные операции и
std::atomic?
- Что такое модули в C++20 и как они заменяют заголовочные файлы?
- Что такое корутины и как они работают в C++20?
- Что такое диапазоны (ranges) и как они упрощают работу с коллекциями?
- Какие современные практики рекомендуются в C++20/C++23 (например, использование
std::format, std::span, char8_t)?