Онлайн обучение

C++ Advanced

Стать C++ Developer? С ITEA!
Курс C++ Advanced — обучение разработке программного обеспечения на одном из самых популярных языков программирования. С нами ты выучишь язык эффективно, быстро и качественно!

КОГДА

Старт

17 мая 2021

СКОЛЬКО

17 занятий

2-3 раза в неделю

с 20:00 до 23:00 по МСК

ЦЕНА

405 USD

345 USD

Доступна оплата частями

Как проходят курсы по C++ Advanced

Программа курса

Вебинар

Проходя C++ advanced курсы онлайн, ты извлечешь множество преимуществ. Занятия с преподавателем проходят в Zoom. В течение урока ты можешь задавать вопросы, и чем больше правильных вопросов ты задашь, тем больше пользы от курса ты получишь.

Домашняя работа

После каждой лекции группе задают домашнее задание. Каждое задание поможет тебе анализировать текущий уровень собственной подготовки и работать над ошибками.

Поддержка ментора

Домашнее задание выглядит невыполнимым или тебе кажется, что на лекции было упущено что-то важное? Просто свяжись с ментором курса, и он поможет тебе разобраться в любом вопросе.

Курсовой проект

Окончив обучение С++ Advanced, ты будешь иметь на руках готовый проект, который поможет в трудоустройстве и придаст тебе уверенность в своих силах. К тому же работа над курсовым проектом — это самая настоящая практическая задача.

Стать С++ Developer? С ITEA!

О трудоустройстве

Индивидуально разработанный полный план развития

Помощь в составлении лучшего резюме и портфолио

Онлайн-уроки, актуальная информация, практика и развитие soft skills

Дальнейшее сопровождение и помощь с трудоустройством

На курсе ты научишься:

Почему стоит выбрать C++ Advanced обучение в ITEA

Онлайн-курсы с оффлайн-преимуществами

Наши занятия проходят в Zoom: так студенты могут работать в группах и задавать вопросы преподавателю. Мы соединили преимущества онлайн- и оффлайн-обучения и получили идеальную формулу.

Актуальные программы обучения

Продвинутый C++-курс познакомит тебя с технологией актуальной версии, которую используют IT-компании. Понимание тенденций разработки и знание своего инструмента — одни из главных критериев при приеме на работу.

Стажировка и трудоустройство

После курса ты получишь доступ к партнерскому ресурсу JunGo — уникальный сайт вакансий, где наши выпускники находят работу в компаниях-партнерах. Мы поможем составить резюме и портфолио, а также дадим советы по прохождению собеседования. Так ты сможешь конвертировать продвинутое С++-обучение в работу мечты.

Комплексная подготовка к IT

Чтобы получить работу мечты, недостаточно уметь просто кодить. Продвинутое С++-обучение подразумевает и прокачку soft skills.

Бонус для наших студентов

Практика английского в самой большой онлайн-школе Европы Skyeng

3 урока английского языка в подарок

Получить подарок

*Для получения подарка, активируйте промокод ITEA3 в личном кабинете при первой покупке от 8 занятий

Новые победы? С ITEA!

Обучение С++ Advanced — новый виток твоего профессионального развития. Прокачай уровень разработки на С++ вместе с ITEA!

Записаться на курс

Junior

от 1 года опыта
$600+

Middle

2-3 года опыта
$1500+

Senior

от 4-х лет опыта
$3500+
Записаться на курс

Поэтапный план онлайн-курса C++ Advanced

1. Move-семантика
  • Что такое move-семантика и какую ключевую роль она играет в современном С++?
  • Что такое rvalue-ссылка?
  • Что такое value category и какие категории существуют в языке С++ (lvalue, prvalue т. д.)?
  • Конструктор перемещения
  • Оператор перемещения
  • Сравнение производительности между классом, реализующим только копирующее поведение, и классом, реализующим перемещающее поведение
  • std::move
  • Советы о том, когда стоит корректно применять перемещающие операции. Когда move-семантика не помогает?
2. Конструкторы и деструкторы
  • Правило вызовов конструкторов, операторов присвоения базового класса
  • Правило 3-х до С++11
  • Правило 0 или правило 5-ти после С++11
  • Правила генерации конструкторов и операторов при разных полях
  • Когда стоит писать класс, который поддерживает только копирующее поведение, а когда — только перемещающее?
  • Ключевое слово default для конструкторов и операторов, важность его написания в отличие от явного определения тела конструктора
  • Ключевое слово delete при объявлении конструкторов, операторов и деструкторов
  • Проблемы влияния пользовательского конструктора на неявное преобразование типов. Ключевое слово explicit
  • Ключевое слово using при наследовании
  • Разница между объявлением конструкторов и операторов присваивания (как приватные методы) и объявлением их с помощью ключевого слова delete
  • Что такое delegating constructors?
  • Reference-qualified методы класса
  • Ошибочное применение move семантики при наследовании
  • Copy elision, RVO NRVO
3. Оптимизация
  • Этапы компиляции
  • Оптимизация компилятора (inline, const)
  • Шаблоны как часть оптимизации на этапе компиляции
  • Ключевое слово constexpr и его важность в каждом стандарте С++
4. Вывод типа в С++ (type deduction)
  • Вывод типа с помощью ключевого слова auto: таков ли тип на самом деле?
  • Ключевое слово decltype
5. Шаблоны
  • Ключевое слово typename в шаблонах и его важность
  • Type traits свойства типа, выделение наиболее важных и рассмотрение их на примерах
  • SFIANE. Применение std::enable_if и зачем его можно использовать в коде?
  • Тип std::enable_if как способ реализации частичной специализации для шаблонов функций
  • Оператор if constexprt как возможность элегантной замены сложных конструкций std::enable_if
  • Variadic template vs Fold expression
  • Универсальные ссылки
  • Perfect forwarding, важность функции std::forward
  • Шаблонные методы и их отличие от шаблонного класса
6. Динамический полиморфизм
  • Особенности работы с динамическим полиморфизмом (virtual functions)
  • Аргумент по умолчанию: какие проблемы в контексте он скрывает?
  • Операции static_cast и dynamic_cast
  • RTTI, структура type_info
  • Пример динамического полиморфизма на одном из паттернов проектирования
  • Virtual destructor для избегания memory leaks
7. Лямбды
  • Указатель на функцию
  • Функтор
  • Лямбда, список захвата
  • Применение auto в аргументах лямбды
  • Ключевое слово mutable и зачем его необходимо объявить в сигнатуре лямбды?
8. Умные указатели
  • Функции new и malloc
  • RAII
  • Функции std::unique_ptr vs std::shared_ptr. Move vs Copy
  • Вспомогательные функции (make_unique и т. д.).
  • Пользовательские deleter объекты как аргументы std::unique_ptr и std::shared_ptr. decltype как вывод сигнатуры функции
  • Советы по корректному написанию custom deleter для unique_ptr
  • Control block в std::shared_ptr. Зачем он нужен, какие он решает задачи, и каковы возможные подводные камни при выделении ресурса с помощью std::make_shared?
  • Указатель std::weak_ptr. Его применение и влияние на блок управления в std::shared_ptr
  • Выделение динамического массива с помощью std::unique_ptr и std::shared_ptr. Специализация
  • Производительность std::unique_ptr и std::shared_ptr
  • Указатели std::static_pointer_cast, std::dynamic_pointer_cast. В чем их отличие от static_cast и dynamic_cast?
9. Исключительные ситуации
  • Исключительные ситуации. Их важное применение
  • Исключительные ситуации vs код возврата ошибки. Когда полезно применять код возврата ошибки?
  • Блоки try catch
  • Оператор throw как генерация исключения
  • Класс std::exception. Виртуальный метод what
  • Порядок написания блоков catch
  • Что такое раскрутка стека при генерации исключения? Что будет, если при генерации исключения не будет найден подходящий блок catch?
  • Что такое инвариантность при генерации исключения в конструкторе? Пример при написании operator =
  • Smart pointers как способ избежать утечки ресурсов при генерации исключения
  • Исключение не должно покидать деструктор
  • Ключевое слово noexcept
  • Оптимизация при написании функций как noexcept. Важность написания перемещающего конструктора как noexcept (на примере std::vector). Почему std::vector выбирает при релокации копирующее поведение как дефолтное вместо перемещающей семантики (правило инвариантности)?
  • Компиляция кода с флагом -fno-exceptions, возможные опасности
  • Функция new(std::nothrow) как способ использования оператора new, который не кидает исключения
10. Пространства имен
  • Что такое пространства имен и какие проблемы они решают в большом коде?
  • Inline namespace (provide library version)
  • Вложенные пространства имен
  • Using-directive, Using-declaration
  • ADL (argument dependent lookup), правила поиска имен

Преподаватель курса:

Команда ITEA собрала лучших практиков: руководителей, senior-специалистов и экспертов с многолетним опытом

Николай Солянко

Senior Software Development Engineer в EPAM Systems

Более 9 лет опыта. Занимал должность Software engineer в Ukrgaztech, где разрабатывал приложения и работал с данными, используя библиотеку Qt. Также был Lead Engineer Samsung в R&D Institute Ukraine, где работал с C/C++, EFL framework и Tizen IDE.

Успей забронировать свое место в группе

Гарантия возврата
Если после первого занятия ты почувствуешь, что этот курс не для тебя (например, не подходит по сложности), мы вернем деньги.
Оплата одним или двумя платежами
В договоре на обучение можно выбрать оплату сразу на весь курс или двумя платежами.
Беспроцентная рассрочка от партнеров
Выбирай удобную рассрочку на 4 месяца и получай знания с комфортом.
Стоимость курса
147 000 руб
110 000 руб
Стоимость курса
с рассрочкой
от 30 000 руб/месяц
Введите номер телефона в формате +7-916-.., если ваш номер 8-916-.
Тебе могут подойти эти курсы:
Расписание курсов
Отвечаем на самые часто задаваемые вопросы
Не будет в курсе много теории? Я получу практические знания?
Информация без практического закрепления долго не держится в памяти. Поэтому после получения новых знаний, наши студенты сразу применяют их на практике. Преподаватель помогает им справиться с задачами и отвечает на вопросы, которые могут возникнуть. Поэтому тебя ожидает практика на занятиях, в домашних заданиях, а также при работе с собственным проектом в конце курса.
Если я делаю паузу в обучении (например, по болезни), могу ли я восстановиться? Или время и деньги будут потеряны?
Если ты был вынужден временно прекратить обучение — не нужно снова возвращаться к самому началу. Ты всегда можешь продолжить с того же места, где остановился. Детали восстановления расскажет наш менеджер.
Как происходит процесс трудоустройства в ITEA после прохождения курса и получения сертификата?
Студенты, которые набрали максимальное количество баллов в ходе обучения и прошли программу Roadmap, получают специальную форму резюме, по которой мы сотрудничаем с нашими партнерами. Мы также проводим проверку резюме, сопроводительных писем и даем консультации, если возникают вопросы. Наш карьерный центр мотивирует и поддерживает каждого кандидата до тех пор, пока он не выберет для себя лучшее предложение.
Будет ли преподаватель помогать мне с решением практических задач: давать советы, смотреть скриншоты, объяснять то, что я не понял?
Да. Преподаватель всегда на связи, чтобы направить студента и при необходимости исправить его. Он основывает свое обучение на собственном опыте и приводит примеры из собственной практики. Преподаватель не движется дальше по программе, пока студенты не усвоят материал на нужном уровне.
Есть ли возрастные ограничения на прохождение курса?
Курсы нацелены на аудиторию в возрасте от 18 лет.
Нужно иметь предварительную подготовку в рамках вашего обучения?
Минимальные требования указаны на странице каждого курса. Чаще всего базовые курсы программирования не требуют специальной подготовки. Для продвинутого обучения достаточно материала предыдущего курса.
Какой уровень английского нужен для трудоустройства на позицию Junior?
Уровень английского напрямую зависит от вакансии. Для многих Junior-специалистов английский уровня Intermediate будет преимуществом, однако для некоторых вакансий достаточно уровня Elementary.