Онлайн-навчання

Курс C++ Advanced

Стати C++ Developer? З ITEA!
Навчання C++ Advanced онлайн — ефективний курс по розробці програмного забезпечення однією з найпопулярніших мов програмування. З нами ти вивчиш мову ефективно, швидко та якісно!

КОЛИ

Старт

Йде набір на курс

СКІЛЬКИ

17 занять / 2 місяця

2-3 рази на тиждень

З 19:00 до 22:00

ЦІНА

11400 UAH

9700 UAH

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

Можливість заморозити навчання

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

Можливість заморозити навчання

Як проходить навчання
С++ Advanced для профі

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

Вебінар

Проходячи C++ advanced курси онлайн, ти здобудеш численні переваги. Поглиблений курс С++ Advanced онлайн передбачає заняття з викладачем, які проходять в Zoom. Потягом уроку ти можеш ставити запитання. Чим більше правильних питань ти ставиш, тим більше користі від курсу ти отримаєш.

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

Після кожної лекції онлайн курси С++ Advanced передбачають домашнє завдання. Кожне завдання допоможе тобі аналізувати поточний рівень особистої підготовки і працювати над помилками.

Підтримка ментора

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

Курсовий проєкт

Закінчивши навчання С++ Advanced ти будеш мати на руках готовий проєкт, який допоможе у працевлаштуванні та додасть тобі впевненості у своїх силах. До того ж, робота над курсовим проєктом – це справжня практична задача.

Стати С++ Developer?
З ITEA!

Про працевлаштування

Індивідуально розроблений повний план розвитку

Допомога у створенні резюме та портфоліо

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

Подальший супровід та допомога з працевлаштуванням

Про працевлаштування

На курсі C++ Advanced ти навчишся:

Чому варто обрати онлайн курси
С++ Advanced для профі в ITEA

Онлайн-курси з офлайн-перевагами

Навчання С++ Advanced для профі онлайн проходить в Zoom: так студенти можуть працювати у групах і ставити питання викладачу. Ми поєднали переваги онлайн- та офлайн-навчання і отримали ідеальну формулу.

Актуальні програм навчання

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

Стажування та працевлаштування

Закінчивши курс С++ Advanced для профі, ти отримаєш доступ до партнерського ресурсу JunGo — унікальний сайт вакансій, де наші випускники знаходять роботу в компаніях-партнерах. Коли ти завершиш поглиблений курс С++ Advanced онлайн, ми допоможемо скласти резюме та портфоліо, а також дамо пораду по проходженню співбесіди. Так ти зможеш конвертувати просунуте С++-навчання на роботу мрії.

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

Щоб отримати роботу мрії, недостатньо вміти кодувати. Поглиблене навчання С++ Advanced має на увазі і прокачку soft skills.

Нові перемоги?
З ITEA!

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

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

Junior

від 1 року досвіду
$800+

Middle

2-3 років досвіду
$2000+

Senior

від 4 років досвіду
$3700+
Записатися на курс

Поетапний план онлайн-курсу 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 та 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 Engineer (С++ Developer)

Микола Солянко

Senior Software Development Engineer у компанії EPAM Systems. 9 років досвіду. Займав посаду Software engineer в Ukrgaztech, де розробляв додатки та працював з даними, використовуючи бібліотеку Qt. Також був Lead Engineer Samsung у R&D Institute Ukraine, де працював з C/C++, EFL framework та Tizen IDE.

Software Engineer

Роман Ткачик

Понад 12 років досвіду. Брав участь у різних IT-проектах щодо розробки мережевих, десктопних і web-додатків, а також вбудованих пристроїв. Ідеально володіє навичками роботи з .NET, C#, LINQ, C/C++, SQL, Boost, STL, Multithreading, TCP/IP, Git, Scrum. Автор тестів функціональної та системної інтеграції, тестів з автоматизації для Windows і веб-додатків. Має сертифікат AZ-300 Azure Architecture Technologies Exam Prep 2020.

Встигни забронювати своє місце в групі

Якщо після першого заняття ти відчуєш, що цей курс не для тебе (наприклад, не підходить за складністю), то ми повернемо гроші.

Тобі можуть підійти
ці курси онлайн:
Розклад курсів

Вибирай IT-курси суміжного напряму, щоб розширити свої компетенції і підвищити свою конкурентоспроможність.

Відповідаємо на питання, які часто задаються
Який рівень англійської мови потрібен для працевлаштування на позицію Junior?
Рівень знання англійської мови безпосередньо залежить від вакансії. Для багатьох Junior-фахівців англійська рівня Intermediate буде перевагою, проте для деяких вакансій досить рівня Elementary.
Чи потрібно мати попередню підготовку в рамках вашого навчання?
Мінімальні вимоги вказані на сторінці кожного курсу. Найчастіше базові курси не потребують спеціальної підготовки. Для курсів поглибленого рівня досить матеріалу попереднього (базового) курсу.
Чи є вікові обмеження на проходження курсу?
Курси націлені на аудиторію віком від 18 років.
Чи буде викладач допомагати мені з вирішенням практичних завдань: давати поради, дивитися скріншоти, пояснювати те, що я не зрозумів?
Так. Викладач завжди на зв'язку, щоб направити студента і при необхідності виправити його. Викладач бере за основу власний досвід і наводить приклади з власної практики. Викладач не рухається далі по програмі, поки студенти не засвоять матеріал на потрібному рівні.
Як відбувається процес працевлаштування в ITEA після проходження курсу і отримання сертифікату?
Студенти, які набрали максимальну кількість балів в ході навчання і пройшли програму професії, отримують спеціальну форму резюме, по якій ми співпрацюємо з нашими партнерами.

Ми також проводимо перевірку резюме, супровідних листів та даємо консультації, якщо виникають питання.
Якщо я роблю паузу в навчанні (наприклад, через хворобу), чи можу я відновитися? Чи не будуть втрачені час і гроші?
Якщо ти був змушений тимчасово припинити навчання - не потрібно знову повертатися до самого початку. Ти завжди можеш продовжити з того ж місця, де зупинився. Деталі відновлення розповість наш менеджер.
Чи не буде в курсі багато теорії? Я отримаю практичні знання?
Інформація без практичного закріплення довго не тримається в пам'яті. Тому після отримання нових знань, наші студенти відразу застосовують їх на практиці.

Викладач допомагає їм впоратися з завданнями і відповідає на питання, які можуть виникнути. Тому тебе чекає практика на заняттях, у домашніх завданнях, а також при роботі з власним проектом у кінці курсу.

В обработке...