Результати пошуку за запитом: Видеокурс c
Нова IT професія у 2024 році! Знижки 40% на навчання
Автор: Редакція ITVDN
UPD: Акцію продовжено до 5 січня 2024 року
Друзі, привіт!
Наближаються Різдво та Новий рік, і ми вітаємо вас із цими святами! 2023-й видався непростим.
Ми бажаємо 🇺🇦 перемоги для України у новому році і маленьких особистих перемог для кожного із вас, щоб були живі і здорові ваші рідні, щоб усі ми зростали як країна сильних і вільних людей.
Якщо ви пов’язуєте ваші плани з розвитком в IT, користуйтеся крутими новорічними пропозиціями від нашої компанії.
До 5 січня на ITVDN діють знижки 40% на онлайн навчання в групах з ментором за наступними спеціальностями:
Python Developer – старт навчання 11 січня
QA. Тестування ПЗ – 9 січня
FrontEnd Developer – 11 січня
FullStack Node.js Developer – 11 січня
C#/.NET Developer – 16 січня
Java Developer – 17 січня
Ви можете пройти повне навчання з нуля до рівня Trainee/Junior у найбільш ефективному форматі живих онлайн уроків у Zoom в групі з іншими студентами та ментором.
Щоб скористатися знижкою 40%, здійсніть оплату до 5 січня включно одним із двох способів:
повна оплата одним платежем;
часткова оплата в рамках послуги “Оплата частинами” від Монобанку або ПриватБанку.
Детальніша інформація про кожний курс – нижче.
FRONTEND DEVELOPER
Тривалість курсу – 7 місяців, 124 години
Ви вивчите мови верстання HTML та CSS, мову програмування JavaScript, інструмент контролю версій Git, фреймворк Angular (+ мова TypeScript) або бібліотеку React.
Повна вартість – 820 USD
Вартість зі знижкою 40% – 492 USD.
PYTHON DEVELOPER
Тривалість курсу – 5 місяців, 110 годин
Ви вивчите мову програмування Python, Git, СУБД PostgreSQL, фреймворк Django.
Повна вартість – 715 USD
Вартість зі знижкою 40% – 429 USD
C#/.NET DEVELOPER
Тривалість курсу – 5.5 місяців, 138 годин
Ви вивчите мову програмування C#, інструмент командної розробки Git, мову запитів SQL, технологію Entity Framework Core та фреймворк ASP.NET Core.
Повна вартість – 840 USD
Вартість зі знижкою 40% – 504 USD
JAVA DEVELOPER
Тривалість курсу – 5 місяців, 128 годин
Ви вивчите мову програмування Java, інструмент командної розробки Git, СУБД MySQL, технології JDBC & Hibernate, Web services, фреймворк Spring.
Повна вартість – 781 USD
Вартість зі знижкою 40% – 469 USD
FULLSTACK NODE.JS DEVELOPER
Тривалість курсу – 6 місяців, 146 годин
Ви вивчите мови верстання HTML5 & CSS3, мову програмування JavaScript, систему контролю версій Git, бібліотеку React, СУБД MySQL та платформу Node.js.
Повна вартість – 966 USD
Вартість зі знижкою 40% – 580 USD
QA. ТЕСТУВАННЯ ПЗ
Тривалість курсу – 3 місяці, 78 годин
Ви вивчите основи проєкту в IT, мануальне тестування, бази даних та SQL, а також отримаєте технічні знання з різних тем.
Повна вартість – 523 USD
Вартість зі знижкою 40% – 314 USD
Переваги навчання з тренером на ITVDN
Онлайн уроки 3 рази на тиждень + д/з. На уроках вам пояснюють матеріал, демонструють код, відповідають на питання – все це ви закріплюєте самостійною практикою поза заняттями, яку перевіряє помічник тренера і дає свій фідбек. Такий графік ідеальний для балансу теорії та практики.
Кожний урок записується, тому якщо ви щось пропустили – зможете переглянути у повторі.
Спеціальна телеграм-група для спілкування з ментором та одногрупниками, що допоможе знаходити відповіді на запитання та підтримувати конкурентний запал на висоті.
Курсові проєкти. Вони допоможуть вам закріпити знання, відточити навички кодингу та створити комплексні рішення, які потім стануть частиною вашого портфоліо.
Ще більше бонусів:
відео курси за обраною спеціальністю, які записані іншими професійними розробниками;
Інтерактивний практикум для прокачки ваших навичок написання коду;
можливість проходити тестування після кожного уроку та курсу загалом з отриманням Сертифікату у випадку успіху; а після екзамену за спеціальністю на вас чекатиме відповідний Диплом, котрий засвідчує ваші успіхи;
Кар’єрний сервіс, який допоможе вам підготуватися до співбесіди (резюме, оформлення соцмереж, тестові співбесіди, можливість стажування);
доступ найкращих студентів до програми стажування, де ви зможете отримати свій перший досвід та попрацювати зі справжнім комплексним проєктом.
Про оплату частинами від ПриватБанку або Монобанку
Є декілька варіантів оплати навчання, ми рекомендуємо найбільш вигідний – повна оплата курсу зі знижкою без додаткових комісій за допомогою сервісу «Оплата частинами» від Монобанк чи ПриватБанк, коли банк вносить за вас повну оплату, а ви потім повертаєте йому щомісячними платежами.
Нехай 2024-й рік буде насичений успіхом, щастям та новими знаннями!
Отримай ІТ-професію за 4-6 місяців. Знижки 40% на навчання в групі з ментором
Автор: Редакція ITVDN
Привіт!
Друзі, сила нашого часу – в ІТ. Перегляньте зарплатні статистики, подивіться на розвиток біоінженерії, космічної галузі, банкінгу, розважального сегменту (Netflix, стрімінг відеоігор, блогінг тощо). Навіть війна в Україні чітко показує, наскільки сучасні ІТ-рішення важливі і скільки життів вони здатні врятувати.
Вивчайте ІТ на благо країни і на благо власного майбутнього. А щоб це було максимально вигідно для вас, ми запускаємо круті осінні знижки на ITVDN.
З 27 до 30 вересня включно ви маєте можливість заощадити 40% від повної вартості онлайн курсів з таких спеціальностей:
Java Developer – старт навчання 27 вересня та 25 жовтня
C#/.NET Developer – 28 вересня та 24 жовтня
FrontEnd Developer – 10 жовтня
FullStack Node.js Developer – 10 жовтня
Python Developer – 12 жовтня
QA. Тестування ПЗ – 17 жовтня
Ви пройдете повне навчання з нуля до рівня Trainee/Junior у найбільш ефективному форматі живих онлайн уроків у Zoom у групі з іншими студентами та ментором.
Щоб скористатися знижкою 40%, проведіть повну оплату курсу в межах з 27 до 30 вересня включно.
Детальніша інформація про кожний курс – нижче.
FRONTEND DEVELOPER
Тривалість курсу – 5 місяців, 124 години
Ви вивчите мови верстання HTML та CSS, мову програмування JavaScript, інструмент контролю версій Git, фреймворк Angular (+ мова TypeScript) або бібліотеку React.
Повна вартість – 820 USD
Вартість зі знижкою 40% – 492 USD.
PYTHON DEVELOPER
Тривалість курсу – 5 місяців, 110 годин
Ви вивчите мову програмування Python, Git, СУБД PostgreSQL, фреймворк Django.
Повна вартість – 715 USD
Вартість зі знижкою 40% – 429 USD
C#/.NET DEVELOPER
Тривалість курсу – 5.5 місяців, 138 годин
Ви вивчите мову програмування C#, інструмент командної розробки Git, мову запитів SQL, технологію Entity Framework Core та фреймворк ASP.NET Core.
Повна вартість – 840 USD
Вартість зі знижкою 40% – 504 USD
JAVA DEVELOPER
Тривалість курсу – 5 місяців, 128 годин
Ви вивчите мову програмування Java, інструмент командної розробки Git, СУБД MySQL, технології JDBC & Hibernate, Web services, фреймворк Spring.
Повна вартість – 781 USD
Вартість зі знижкою 40% – 469 USD
FULLSTACK NODE.JS DEVELOPER
Тривалість курсу – 6 місяців, 146 годин
Ви вивчите мови верстання HTML5 & CSS3, мову програмування JavaScript, систему контролю версій Git, бібліотеку React, СУБД MySQL та платформу Node.js.
Повна вартість – 966 USD
Вартість зі знижкою 40% – 580 USD
QA. ТЕСТУВАННЯ ПЗ
Тривалість курсу – 3 місяці, 78 годин
Ви вивчите основи проєкту в IT, мануальне тестування, бази даних та SQL, а також отримаєте технічні знання з різних тем.
Повна вартість – 523 USD
Вартість зі знижкою 40% – 314 USD
Переваги навчання з тренером на ITVDN
Онлайн уроки 3 рази на тиждень + д/з. На уроках вам пояснюють матеріал, демонструють код, відповідають на питання – все це ви закріплюєте самостійною практикою поза заняттями, яку перевіряє помічник тренера і дає свій фідбек. Такий графік ідеальний для балансу теорії та практики.
Кожний урок записується, тому якщо ви щось пропустили – зможете переглянути у повторі.
Спеціальна телеграм-група для спілкування з ментором та одногрупниками, що допоможе знаходити відповіді на запитання та підтримувати конкурентний запал на висоті.
Курсові проєкти. Вони допоможуть вам закріпити знання, відточити навички кодингу та створити комплексні рішення, які потім стануть частиною вашого портфоліо.
Також ви отримаєте доступ до низки інших можливостей на ITVDN:
відео курси за обраною спеціальністю, які записані іншими професійними розробниками;
Інтерактивний практикум для прокачки ваших навичок написання коду;
можливість проходити тестування після кожного уроку та курсу загалом з отриманням Сертифікату у випадку успіху; а після екзамену за спеціальністю на вас чекатиме відповідний Диплом, котрий засвідчує ваші успіхи;
Кар’єрний сервіс, який допоможе вам підготуватися до співбесіди (резюме, оформлення соцмереж, тестові співбесіди, можливість стажування);
доступ найкращих студентів до програми стажування, де ви зможете отримати свій перший досвід та попрацювати зі справжнім комплексним проєктом.
Про оплату частинами від ПриватБанку або Монобанку
Є декілька варіантів оплати навчання, ми рекомендуємо найбільш вигідний – повна оплата курсу зі знижкою без додаткових комісій за допомогою сервісу «Оплата частинами» від Монобанк чи ПриватБанк, коли банк вносить за вас повну оплату, а ви потім повертаєте йому щомісячними платежами.
Нововведення в С# 8
Автор: Jonathan Allen
Хотя внимание разработчиков приковано сейчас к таким глобальным вещам, как дефолтная реализация методов интерфейсов, мы хотим поговорить с вами о нюансах новой версии популярного языка программирования С#.
Новые операторы присвоения: &&= и ||=
Начиная с самой первой версии, C# поддерживал комбинирования операторов присвоения с другими операторами. Существует поддержка всех бинарных операторов (а именно - +, -, & и так далее), кроме булевских && и ||. Теперь комбинации типа &&= и ||= дополнят этот список.
Дословно-интерполируемые строки
Дословные строки начинаются на @”. Интерполируемые строки используют $”. Но что, если нам нужно создать дословно-интерполируемую строку? Что нам писать - @$” или $@”? Сейчас первый вариант работает, но второй выдает ошибку уровня компиляции, что может вызывать некоторые неудобства у многих разработчиков, так как обычно такие нюансы часто забывают.
Суть нововведения заключается в том, что в новой версии можно использовать как первый вариант конструкции, так и второй.
Впрочем, некоторые все равно находят это изменение лишним, так как оно может привести к некоторой фривольности кода и проблемам с единым стилем.
Выражение using структурно соответствует IDisposable
У компилятора C# интересное отношение к интерфейсам. Довольно часто вам не нужно на самом деле реализовывать абстрактный интерфейс для определенных фичей языка. Все, что вам нужно, так это просто реализовать в классе определенный публичный API, что по своей структуре повторяет абстрактный интерфейс.
Классическим примером этого является foreach и IEnumerable. Если класс обладает методом GetEnumerator, возвращающим значение свойства Current и методом MoveNext, тогда вы можете использовать foreach. Сами типы возвращаемых данных не имеют значения, что позволяет таким классам, как List<T>, реализовывать более быстрые перечисления. Этот подход достаточно часто называется структурным соответствием.
В рамках новой версии языка using также будет поддерживать структурное соответствие. На первый взгляд, это нововведение кажется лишенным смысла, так как мы вряд ли ожидаем увидеть класс для использования с using без реализации интерфейса IDisposable. Впрочем, мы упускаем такое нововведение как ref struct. Реализация интерфейса в данном случае невозможна, поэтому здесь нам на помощь приходит структурное соответствие.
Методы расширения с foreach и using
Как дополнение к предыдущему посту, теперь мы можем добавить GetEnumerator и Dispose в качестве методов расширения для работы с foreach и using соответственно. Опять же, здесь мы говорим об особенности, которая станет полезной в частном случае. К примеру, вы хотите добавить Dispose-расширение в COM-объект сторонней библиотеки (к примеру, дабы вызвать Marshal.ReleaseComObject).
Впрочем, информация об этом еще неполная и мы можем упустить некоторые случаи использования данной фичи.
Using неявной области видимости
На данный момент выражение using может быть использовано только в рамках явной области видимости (в скобках). Если данное нововведение будет принято на вооружение, теперь вы можете писать конструкции следующего вида:
Каждая из этих переменных будет автоматически очищена в конце текущей области видимости в реверсивном порядке. Функционально написанное выше эквивалентно этому, но гораздо более элегантно:
Подобное может быть полезно в тех случая, когда в одно и то же время создается множество dispose-объектов. Теперь вы можете создавать подобные объекты даже внутри выражений в полной уверенности в безопасности данного типа объявлений.
Возможный минус данного нововведения в том, что оно не совместимо с оператором goto.
Автор перевода: Евгений Лукашук
Источник
Вступ до NUnit
Автор: Редакція ITVDN
Введение
Статья рассказывает об NUnit – открытой среде юнит-тестирования приложений для .NET. В данной статье мы рассмотрим, что такое NUnit, как его загрузить и установить, создание классов тестов , а также запуск теста.
NUnit - открытая среда юнит-тестирования приложений для .NET, которая позволяет создавать автоматические тесты. Даный вид тестов обладает рядом преимуществ:
Высокое качество программы;
Снижение стоимости;
Безопасность регрессии сети
Чем выше качество программы, тем меньше средств затрачивается на устранение недостатков проекта. То есть, если найти недостатки в проекте на раннем этапе, решить их будет дешевле.
Загрузка и установка NUnit
Вы можете скачать NUnit с сайта http://www.nunit.org/
После завершения загрузки, разархивируйте файл и запустите программу.
Создание проекта библиотечного класса
Теперь создадим простой класс теста, используя C#, который добавляет два показателя, и протестируем его. Чтобы создать тест класса в Visual Studio, используя С#, выполните следующие шаги:
Шаг 1: Создание проекта библиотечного класса
Откройте Visual Studio.
Для создания проекта библиотечного класса сначала нажмите File -> New -> Project, выберите Visual C # в установленном шаблоне, выберите Class Library. Введите подходящее название (мы используем IntroNUnitTest), нажмите "OK".
После того, как Вы кликнули кнопку "OK", Вы увидите Ваш проект в Solution Explorer (в правом верхнем углу Visual Studio).
Шаг 2: Добавьте ссылки к Вашему проекту.
Чтобы добавить ссылку NUnit к Вашему проекту, кликните правой кнопкой мыши на ссылку, выберите Add reference-> Browse, затем nunit.framework.dll и «OK».
Шаг 3: Создание тестового класса.
Кликните правой кнопкой мыши на Вашем проекте, выберите Add -> Class, введите имя (используем MyNUnitTestClass) и далее "Add".
После того, как Вы кликнули на кнопку Add, Вы увидите класс.
После того, как Вы создали класс, добавьте using NUnit.Framework.
Следует соблюдать некоторые условия и понятия:
Каждый класс должен содержать атрибут [TestFixure] и должен быть общедоступен.
В каждом методе должен присутствовать атрибут [Test].
Оператор подтверждения об отсутствии ошибок: Булевские значения, описывающие, что должно быть ключевым словом, когда выполняется действие.
Ожидаемое исключение: один из типов исключения, который мы ожидаем во время выполнения тест-метода.
Установка: программа, которая запускается перед выполнением каждого тест-метода (например, регистрация в системе конкретного пользователя или инициализация одноэлементных классов).
Демонтаж: программа запускается после окончания каждого тест-метода (например, удаление строк из таблицы, которые были вставлены во время теста).
На примере мы постараемся сравнить две переменные х и у. Каждой переменной присвоили значение 20. В общей сложности написали 4 теста (PositiveTest, NegativeTest, ExpectedExceptionTest и NotImplementedException).
Запуск тестов
После написания всех тестов в тестовом классе необходимо запустить тесты, чтобы проверить, проходят ли они успешно. Для запуска тестов перейдите в папку NUnit, выберите NUnit Application (.exe) и дважды кликнике по ней, выберите команду File-> Open Project, выберите проект (в нашем случае это IntroNUnitTest.dll), затем кликаем Run.
Далее Вы увидите количество тестов, которые не сработали, и количество невыполненных тестов.
Если Вы хотите запустить какой-то определенный тест, кликните правой кнопкой мыши в тесте, который Вы хотите запустить, и выберите Run test(s).
Другие настройки
Вы также можете использовать другие настройки для запуска тестов:
Testdriven.net
ReSharper Jetbrains
Источник: http://www.c-sharpcorner.com/UploadFile/18fc30/introduction-to-nunit-test-driven-development-using-nunit-a/
Вивчай JavaScript з нуля українською мовою
Автор: Редакція ITVDN
Добрий день, друзі!
Сьогодні хочемо вас порадувати новим відео курсом, який обов'язково стане в нагоді кожному FrontEnd розробнику, а також BackEnd програмістам та Automation QA, які використовують мову JavaScript в якості основного інструменту написання коду. На ITVDN опубліковано всі уроки нового курсу “JavaScript Стартовий”. Курс українською мовою!
JavaScript – це одна з найпопулярніших мов програмування. Вона користується великим попитом як серед новачків, так і серед досвідчених девелоперів, оскільки:
простіша у вивченні в порівнянні з іншими загальновідомими мовами програмування (С#, Java, C++/C тощо);
успішно використовується для створення клієнтської сторони веб-застосунків (FrontEnd), але також поширена і на серверній стороні в тандемі з Node.js (BackEnd);
може використовуватися в геймдеві, розробці мобільних та настільних застосунків, тестуванні ПЗ тощо;
має великий попит на ІТ-ринку.
Вивчення JavaScript – це інвестиції в майбутнє, що окуплять себе з лихвою, оскільки досвідчені JavaScript розробники щедро оплачуються, мають широкий спектр проєктів та кар’єрних можливостей, а також можуть вести професійну діяльність дистанційно.
Курс “JavaScript Стартовий” є першою сходинкою у вивченні програмування мовою JavaScript.
Він спрямований на вивчення головних синтаксичних конструкцій JavaScript. Ви дізнаєтеся, як працювати зі змінними, використовувати умовні та циклічні конструкції, масиви та об'єкти. Отримаєте необхідні знання для написання алгоритмів та підготуєте базу, після якої можна розвивати свої навички у веб-розробленні або почати використовувати JS для інших цілей.
Автор курсу – Дмитро Охріменко, CEO CyberBionic Systematics, сертифікований тренер Microsoft та автор курсів з .NET та FrontEnd розробки. У записаних відео уроках Дмитро ділиться ефективними техніками роботи з мовою JavaScript, які актуальні та потрібні на сьогоднішній день.
Тривалість курсу – 8 годин 40 хвилин.
Структура курсу:
Вступ.
Структура коду.
Змінні та типи даних.
Рядки та перетворення типів.
Оператори.
Умовний оператор if.
Switch та тернарний оператор.
Цикли.
Масиви.
Методи масивів.
Функції. Частина 1.
Функції. Частина 2.
Об'єкти. Частина 1.
Об'єкти. Частина 2.
Чого ви навчитеся на даному курсі:
Створювати мовою JavaScript базовий динамічний контент для web-сторінок.
Працювати зі змінними та типами даних.
Працювати з умовними та циклічними конструкціями.
Розуміти особливості використання масивів та працювати з методами оброблення даних у масивах.
Використовувати функції (розуміти та використовувати області видимості, контекст, рекурсію).
Працювати з об'єктами.
Попередні вимоги
Для успішного проходження даного курсу необхідно володіти мовами верстання HTML & CSS на базовому рівні.
Якщо ви вже займаєтеся розробкою іншою мовою програмування та хочете вивчити JavaScript – ці відео матеріали вам ідеально підійдуть: просто швидко перегляньте перші уроки і сконцентруйте увагу на особливостях роботи JavaScript.
Якщо ви займаєтеся тестуванням ПЗ, “JavaScript Starter” допоможе вам розібратися з синтаксисом мови та стане першим кроком у освоєнні автоматизації тестування.
Дивіться перший урок у вільному доступі. Курс вже доступний на нашому сайті в повному обсязі – до кожного уроку є практичні завдання, опорний конспект та онлайн тести для більш глибокого засвоєння матеріалу. Якщо у вас є активна підписка, ви можете дивитися його прямо зараз.
Курс входить до комплексних програм підготовки за спеціальностями:
Frontend Developer
Верстальник сайтів
JavaScript Developer
React Developer
Python Developer
ASP.NET Core Developer
ASP.NET MVC Developer
PHP Developer
Ruby Developer
До Дня тестувальника – великі знижки на курси QA (Manual + Automation)
Друзі, привіт!
9 вересня ми святкуємо День тестувальника і, користуючись нагодою, висловлюємо своє захоплення та подяку фахівцям, чиї старання дозволяють нам отримувати задоволення від роботи із якісним софтом. Ваша справа є дуже важливою і потрібною.
З нагоди свята ми створили новий пакет відео курсів – Quality Assurance.
Що входить в пакет:
Доступ до 33 відео курсів на 8 місяців
Доступ до інтерактивних практикумів
Вихідний код навчальних проєктів
Презентації, опорний конспект, ДЗ
Консультації з тренером – 60 хвилин
13 онлайн тестувань та сертифікати за пройденими курсами
Доступ до нових курсів з тестування, які виходитимуть під час дії підписки
З 7 по 14 вересня ви можете придбати його зі знижкою 40% – за 72 USD (119.99 USD).
Що ви зможете вивчити
В даному пакеті ми зібрали:
Курси для початківців, які бажають опанувати спеціальність Manual QA.
Курси для тих, хто хоче вивчити автоматизацію тестування на Java.
Курси для вивчення автоматизації тестування на C#.
Також у пакеті є окремі курси з:
вебтестування;
тестування мобільних застосунків;
роботи з базами даних;
Git та Scrum, які потрібно знати для ефективної командної роботи.
Така повна добірка курсів за напрямком QA (Quality Assurance) є унікальним продуктом ITVDN і справжнім подарунком для тих, хто хоче мати можливість за 8 місяців вивчити мануальне тестування та автоматизацію тестування на Java чи C#.
Якщо ви вже вивчаєте тестування за іншими ресурсами – відео уроками на ютубі, книжками абощо – наш пакет підписки стане для вас цінною додатковою базою знань, яка дозволить заповнити усі прогалини і впевнено підготуватися до роботи в IT.
Переваги навчання за відео курсами ITVDN
Гнучкість. Ви можете вчитися у зручний для вас час із будь-якого місця та у власному темпі. Доступ до матеріалів 24/7.
Конспекти + д/з. Відео уроки містять завдання для закріплення вивченого, а конспекти дозволять отримати вижимку найголовнішого та/або підготуватися до співбесіди.
Економія часу. Відео курси не містять води, а також ви заощаджуєте час на пошуки необхідної інформації в інтернеті, книгах тощо.
Актуальність. Ми стежимо за світом ІТ і стараємося вчасно оновлювати матеріали, аби ви вчили те, що користується попитом на ІТ-ринку.
Тестування та сертифікати. Після уроку ви можете проходити короткі онлайн тести, а після завершення курсу – підсумкове тестування з отриманням Сертифікату в разі успіху.
Практикуючі автори. Автори відео курсів – це професійні розробники, які працюють в ІТ і знають, на яких темах краще зробити акцент.
Вигідні ціни. Відео курси коштують менше, ніж традиційні курси з викладачем або навіть підручники, що дозволяє зекономити кошти на навчанні.
З історії свята
День тестувальника виник завдяки події 1945 року (за іншими даними – 1947), коли в обчислювальній машині під час тестування була знайдена міль, і один зі співробітників охрестив її словом “bug”, вклеївши в журнал зі звітами. Відтоді цим терміном позначають усі негаразди, які виникають у програмному забезпеченні.
Вітаємо зі святом! Вивчайте тестування з максимальною вигодою у зручному форматі!
Розіграш сертифікатів на IT навчання
Автор: Редакція ITVDN
Друзі, привіт!
Чи використовуєте ви це літо настільки ж продуктивно, як і ми? Нові відео курси вже на підході, а поки ми оголошуємо розіграш подарункових сертифікатів на навчання.
Що розігруємо і скільки буде переможців?
Всього буде 10 переможців, які отримають сертифікат на пакет «Стартовий». Цей пакет відкриває доступ до всіх відео курсів на ITVDN (а їх у нас понад 250 з усіх напрямків) на 3 місяці і дає чудову можливість зробити старт у вивченні ІТ.
Коли відбудеться розіграш
Розіграш відбудеться 11 серпня о 16:00 в прямому етері на YouTube-каналі CodeUA. Посилання на пряму трансляцію ми надішлемо учасникам у день розіграшу на електронну адресу, яку вони вкажуть у заявці.
Переможці розіграшу зможуть активувати свої сертифікати коли завгодно протягом року з моменту отримання сертифікату.
Для участі у розіграші потрібно:
Зробити пост в одній із соціальних мереж (Facebook, LinkedIn, Twitter, Instagram чи TikTok) з посиланням на будь-який відео курс, вебінар, статтю чи акцію ITVDN. Переконайтеся, що ваша сторінка відкрита, аби ми могли перевірити умови виконання цього пункту.
Підписатися на наш Telegram-канал.
Заповнити заявку учасника.
Заявки приймаються до 12:00 11 серпня.
Що можна вивчати на ITVDN?
ITVDN – це унікальна онлайн платформа для IT-навчання, сумарна кількість наших відео курсів вже перевищує 250 і дозволяє пройти навчання з наступних напрямків:
програмування мовами Python, Java, JavaScript, C#, PHP, Ruby, С++ тощо;
веб-дизайн, UX/UI дизайн
тестування ПЗ (Manual та Automation);
FrontEnd-розробка (HTML, CSS, JavaScript, TypeScript, Angular, React, Vue.js);
основи Project Management;
розробка ігр на Unity;
мобільна розробка під Android та iOS.
Подарунковий сертифікат “Стартовий” – це:
Доступ до всіх відео курсів, представлених у Каталозі ITVDN на 3 місяці
Можливість навчання з усіх представлених спеціальностей
Доступ до інтерактивних практикумів
Вихідний код навчальних проектів
Презентації, опорний конспект, ДЗ
Перевірка 5-ти виконаних завдань
Консультації з тренером – 30 хв.
Онлайн тестування (10 тестів) та сертифікати за пройденими курсами
Доступ до нових курсів, які виходитимуть під час дії підписки.
Які переваги дає навчання за відео курсами на ITVDN?
Гнучкість. Ви можете вчитися у зручний для вас час із будь-якого місця та у власному темпі. Доступ до матеріалів 24/7.
Конспекти + д/з. Відео уроки містять завдання для закріплення вивченого, а конспекти дозволять отримати вижимку найголовнішого та/або підготуватися до співбесіди.
Економія часу. Відео курси не містять води, а також ви заощаджуєте час на пошуки необхідної інформації в інтернеті, книгах тощо.
Актуальність. Ми стежимо за світом ІТ і стараємося вчасно оновлювати матеріали, аби ви вчили те, що користується попитом на ІТ-ринку.
Тестування та сертифікати. Після уроку ви можете проходити короткі онлайн тести, а після завершення курсу – підсумкове тестування з отриманням Сертифікату в разі успіху.
Практикуючі автори. Автори відео курсів – це професійні розробники, які працюють в ІТ і знають, на яких темах краще зробити акцент.
Вигідні ціни. Відео курси коштують менше, ніж традиційні курси з викладачем або навіть підручники, що дозволяє зекономити кошти на навчанні.
До розіграшу не допускаються громадяни росії та білорусі.
UPD від 11.08.2023
Переможці:
Alieksandra Avramenko
П'ятничук Валерія
Беккер Михайло
Буличов Василь
Чепаченко Тетяна Миколаївна
Гондарук Марина
Войтов Богдан
Давид Біашвілі
Дубовик Сергій
Матущак Ілля
Запис розіграшу: https://youtube.com/live/2iIh0UODPg8
Літні знижки на IT-навчання з ментором – до 40%
Автор: Редакція ITVDN
Друзі, привіт!
Куди інвестувати сили та кошти під час війни?
Ваша сила, опора у будь-якій нестабільній ситуації, у будь-якій країні – це те, що ви особисто знаєте і вмієте. І хоч в IT зараз теж непрості часи, але подивіться на світ довкола і ви безсумнівно переконаєтесь, що перспективи за новими технологіями, за новими програмами та сервісами, а для їх створення потрібно багато кваліфікованих фахівців.
Інвестиції у навчання – це гарний вибір, особливо коли діють круті знижки від ITVDN!
З 6 до 13 червня ви маєте можливість заощадити 30% від повної вартості курсів з таких спеціальностей:
Python Developer
C#/.NET Developer
FrontEnd Developer
Java Developer
FullStack Node.js Developer
QA. Тестування ПЗ
Ви пройдете повне навчання з нуля до рівня Trainee/Junior у найбільш ефективному форматі живих вебінарів у групі з іншими студентами та ментором.
Детальнішу інформацію про кожний курс дивіться нижче.
FRONTEND DEVELOPER
Початок занять – 14 червня
Тривалість курсу – 5 місяців, 124 години
Повна вартість – 820 USD
Акційна вартість – 574 USD (ви заощаджуєте 246 USD)
Подробиці
PYTHON DEVELOPER
Початок занять – 12 червня
Тривалість курсу – 6 місяців, 110 годин
Повна вартість – 715 USD
Акційна вартість – 501 USD (ви заощаджуєте 214 USD)
Подробиці
C#/.NET DEVELOPER
Початок занять – 21 червня
Тривалість курсу – 5.5 місяців, 138 годин
Повна вартість – 840 USD
Акційна вартість – 588 USD (ви заощаджуєте 252 USD)
Подробиці
JAVA DEVELOPER
Початок занять – 20 червня
Тривалість курсу – 5 місяців, 128 годин
Повна вартість – 781 USD
Акційна вартість – 547 USD (ви заощаджуєте 234 USD)
Подробиці
FULLSTACK NODE.JS DEVELOPER
Початок занять – 14 червня
Тривалість курсу – 6 місяців, 146 годин
Повна вартість – 966 USD
Акційна вартість – 677 USD (ви заощаджуєте 289 USD)
Подробиці
QA. ТЕСТУВАННЯ ПЗ
Початок занять – 12 червня
Тривалість курсу – 3 місяці, 78 годин
Повна вартість – 523 USD
Акційна вартість – 367 USD (ви заощаджуєте 156 USD)
Подробиці
Вчитися вранці легше і вигідніше
Щоб поєднати приємне з корисним, ми даруємо додаткову знижку 10% для тих, хто обере навчання у ранковій групі (9:00-11:00).
Щоб зафіксувати за собою велику знижку, треба подати заявку на курс в період акції – з 6 до 13 червня включно. Поспішайте, бо кількість місць обмежена!
Як проходить навчання?
Формат навчання – живі онлайн уроки в Zoom тричі на тиждень у групі з ментором (до 25 осіб). Вам пояснюють матеріал, демонструють код та відповідають на питання слухачів. Кожний урок записується, тому якщо ви щось пропустили – зможете переглянути у повторі.
Для закріплення вивченого ви будете виконувати д/з, які перевірятиме помічник тренера та даватиме свій фідбек. Також буде створено спеціальну телеграм-групу для спілкування з ментором та одногрупниками, що допоможе знаходити відповіді на запитання та підтримувати конкурентний запал на висоті.
Також ви отримаєте доступ до низки інших можливостей на ITVDN:
відео курси за обраною спеціальністю, які записані іншими професійними розробниками;
Інтерактивний практикум для прокачки ваших навичок написання коду;
можливість проходити тестування після кожного уроку та курсу загалом з отриманням Сертифікату у випадку успіху; а після екзамену за спеціальністю на вас чекатиме відповідний Диплом, котрий засвідчує ваші успіхи;
Кар’єрний сервіс, який допоможе вам підготуватися до співбесіди (резюме, оформлення соцмереж, тестові співбесіди, можливість стажування).
Про оплату частинами від ПриватБанку або Монобанку
Є декілька варіантів оплати навчання, ми рекомендуємо найбільш вигідний – повна оплата курсу зі знижкою без додаткових комісій за допомогою сервісу «Оплата частинами» від Монобанк чи ПриватБанк, коли банк вносить за вас повну оплату, а ви потім повертаєте йому щомісячними платежами.
Будемо раді бачити Вас на наших курсах!
Вивчай JavaScript безкоштовно. Курс для початківців українською мовою
Автор: Редакція ITVDN
З 11 до 18 травня 2023 року на ITVDN проходить акція – ви можете пройти навчання за новим курсом “JavaScript Стартовий” безкоштовно! Курс українською мовою!
Що таке JavaScript?
JavaScript – це одна з найпопулярніших мов програмування. Вона користується великим попитом як серед новачків, так і серед досвідчених девелоперів, оскільки:
простіша у вивченні в порівнянні з іншими загальновідомими мовами програмування (С#, Java, C++/C тощо);
успішно використовується для створення клієнтської сторони веб-застосунків (FrontEnd), але також поширена і на серверній стороні в тандемі з Node.js (BackEnd);
може використовуватися в геймдеві, розробці мобільних та настільних застосунків, тестуванні ПЗ тощо;
має великий попит на ІТ-ринку.
Вивчення JavaScript – це інвестиції в майбутнє, що окуплять себе з лихвою, оскільки досвідчені JavaScript розробники щедро оплачуються, мають широкий спектр проєктів та кар’єрних можливостей, а також можуть вести професійну діяльність дистанційно.
Про курс «JavaScript Стартовий»
Курс “JavaScript Стартовий” є першою сходинкою у вивченні програмування мовою JavaScript.
Він спрямований на опанування головних синтаксичних конструкцій JavaScript. Ви дізнаєтеся, як працювати зі змінними, використовувати умовні та циклічні конструкції, масиви та об'єкти; отримаєте необхідні знання для написання алгоритмів та підготуєте базу, після якої можна розвивати свої навички у веб-розробленні або почати використовувати JS для інших цілей.
Курс складається з 14 відео уроків загальною тривалістю 8 годин 40 хвилин.
Автор – Дмитро Охріменко, CEO CyberBionic Systematics, сертифікований спеціаліст Microsoft (MCTS, MCPD, MCT), переможець всеукраїнського конкурсу Ukrainian IT Awards у номінації «IT Education», з 2008 року проводить корпоративні тренінги у міжнародних компаніях. Тренер-консультант, експерт із побудови розподілених та веб-орієнтованих застосунків, автор курсів з .NET та FrontEnd розробки на ITVDN.
У записаних відео уроках Дмитро ділиться ефективними техніками роботи з мовою JavaScript, які актуальні та потрібні на сьогоднішній день.
Програма курсу:
Вступ.
Структура коду.
Змінні та типи даних.
Рядки та перетворення типів.
Оператори.
Умовний оператор if.
Switch та тернарний оператор.
Цикли.
Масиви.
Методи масивів.
Функції. Частина 1.
Функції. Частина 2.
Об'єкти. Частина 1.
Об'єкти. Частина 2.
Для кого цей курс
Для успішного проходження даного курсу необхідно володіти мовами верстання HTML & CSS на базовому рівні.
Якщо ви вже займаєтеся розробкою іншою мовою програмування та хочете вивчити JavaScript – ці відео матеріали вам ідеально підійдуть: просто швидко перегляньте перші уроки і сконцентруйте увагу на особливостях роботи JavaScript.
Якщо ви займаєтеся тестуванням ПЗ, “JavaScript Starter” допоможе вам розібратися з синтаксисом мови та стане першим кроком в опануванні автоматизації тестування.
Чому ви навчитеся на цьому курсі:
Створювати мовою JavaScript базовий динамічний контент для web-сторінок.
Працювати зі змінними та типами даних.
Працювати з умовними та циклічними конструкціями.
Розуміти особливості використання масивів та працювати з методами оброблення даних у масивах.
Використовувати функції (розуміти та використовувати області видимості, контекст, рекурсію).
Працювати з об'єктами.
Терміни акції
Акція проходить з 11 до 18 травня 2023 року включно. Доступ до курсу відкривається на 10 днів.
400+ питань на співбесіді щодо С++
Автор: Влад Сверчков
Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 5 апреля 2021 года. Оригинальная версия на украинском языке доступна по ссылке.
Junior
1.1 Общие вопросы
1.2 Метапрограммирование
1.3 Препроцессор и компиляция
1.4 Язык C
1.5 Язык С++ и ООП
1.6 STL / Algorithms
1.7 Многопоточность
1.8 Networking
1.9 OS/Linux
1.10 SCM / CI / CD
1.11 Практические задания
Middle
2.1 Общее
2.2 Препроцессор и компиляция
2.3 Язык С
2.4 Язык С++
2.5 Паттерны проектирования
2.6 Метапрограммирование
2.7 OOP/OOD
2.8 STL / Algorithms
2.9 Многопоточность
2.10 Networking
2.11 SCM / CI / CD
2.12 Практические задания
Senior
3.1 Общее
3.2 Препроцессор и компиляция
3.3 C/C++
3.4 OOP/OOD
3.5 STL / Algorithms
3.6 Многопоточность
3.7 SCM / CI / CD
3.8 Практические задания
Предлагаем список технических вопросов, которые, вероятно, вам поставят на собеседованиях по C++. Вопросы предоставили специалисты, принимающие участие в проведении технических интервью по этому языку. Учтите, что есть широкий спектр специализаций, поэтому выбирайте свое направление и готовьтесь.
Junior
Общие вопросы
1. В чем заключаются основные принципы ООП?
2. Что такое сложность алгоритма?
3. Код работает неправильно. Что делать?
4. Объясните такие структуры данных, как стек и очередь.
5. Какие книги, связанные с программированием, читали? Чему с них научились?
6. Что интересного нашли в новых стандартах С++17, С++20?
7. Что такое таблица ASCII?
8. Что такое Unicode?
9. Что такое паттерны проектирования и для чего их используют?
10. Патерны Singleton, Strategy, Template-Method, Decorator?
11. Для чего нужны модульные тесты?
12. Какая разница между модульными и интеграционными тестами?
13. Что такое TDD?
Метапрограммирование
14. Что такое шаблонный класс и шаблонная функция?
15. Что такое конструкторы? Какие типы знаете?
16. Может ли конструктор быть шаблонной функцией?
17. Может ли виртуальная функция быть шаблонной?
18. Что такое инстанциация шаблона?
19. Что такое специализация шаблона? Частичная специализация шаблона?
20. Расскажите об имплементации шаблонных классов в срр-файле?
Препроцессор и компиляция
21. Как проходит процесс компиляции срр-файлов в бинарный файл?
22. Что такое препроцессор?
23. Как работает препроцессор?
24. Какие знаете команды препроцессора?
25. Как работает директива include?
26. Как работает директива define?
27. Что именно линкует линкер?
28. Что такое оптимизация компилятора?
29. Что такое флажки компиляции?
30. Как защитить хедер от повторного включения?
31. Что делает директива include?
32. Как работают макросы?
Язык C
33. Как static влияет на глобальные/локальные переменные?
34. Как сonst влияет на переменную?
35. Какие варианты использования extern знаете?
36. Какие варианты использования volatile знаете?
37. Какие есть битовые операции?
38. Что такое булевая алгебра?
39. Расскажите об этапах разработки библиотеки или программы.
40. Что такое алгоритмы сортировки и какие вы знаете?
41. Какие алгоритмы работы со строками знаете?
42. Какие алгоритмы на графах знаете?
43. Где может храниться переменная?
44. Какая разница между calloc и malloc?
45. Для чего используют realloc?
46. Что такое указатель?
47. Каков размер указателя и от чего он зависит?
48. Какие есть операции с указателями?
49. Что такое struct?
50. Как определить размер структур?
51. Что такое выравнивание в структурах?
52. Что такое union?
53. Какой размер union?
C++/OOP
54. Что такое класс?
55. Какие есть основные типы данных в C++?
56. Что такое инкапсуляция? Как она реализуется в C++?
57. Какие есть встроенные типы в С++?
58. Что такое enum?
59. Как соотносится класс и объект?
60. Какая разница между структурой и классом?
61. Разница между private/protected/public и где они используются?
62. Какие методы класса являются стандартными для класса?
63. Что такое абстрактный класс и зачем он?
64. Сколько памяти занимает объект пустого класса class A {}; ?
65. Что случится с функцией, если к ней добавить ключевое слово static? В контексте члена класса? В контексте метода класса?
66. Какие особенности статических полей класса?
67. Какая особенность константных методов-членов класса?
68. Как изменить поле класса в константном методе класса?
69. Какие методы можно вызвать из константных объектов?
70. Что такое куча и стек? Различия, принцип работы.
71. В чем разница между указателем и ссылкой?
72. Для чего нужен указатель на функцию? Как его объявить?
73. Что будет, если забыть вызвать delete? Когда освободится эта память?
74. Что такое умный указатель? Какие умные указатели есть в стандартной библиотеке?
75. Как работает std::unique_ptr?
76. Как работает std::shared_ptr?
77. Расскажите о константности переменной, ссылки, указателя. Что такое константный указатель и указатель на константу? Размер указателя в памяти?
78. Расскажите о передаче аргументов по значению, по ссылке и по указателю.
79. Расскажите о порядке вычисления аргументов функции?
80. Что произойдет, если вернуть ссылку на временный объект?
81. Что такое перегрузки функции? Виды перегрузки.
82. Что такое явное и неявное приведение типов в С++? Расскажите о функциях явного приведения типов в C++.
83. Что такое инициализация переменной в if?
84. Что такое ленивые вычисления в С++?
85. Расскажите о циклах for и range-for.
86. Что делает ключевое слово auto? auto-определение return-типа, аргументов функции?
87. Чем отличаются delete и delete [ ] ? Что случится, если вызвать delete у объекта, созданного через new [ ] ?
88. Обработка ошибок в С++. Какие конструкции используют при обработке exception?
89. Можно ли выбрасывать exception из конструктора? Какие поля будут сконструированы, какие поля будут разрушены?
90. Что такое memory leak?
91. Можно ли выбрасывать exception из деструктора?
92. Как отловить деление на 0 в С++?
93. Как работают константные методы?
94. Что такое лямбда-функция в С++? Как получить доступ к переменным во внешней области видимости?
95. Для чего использовать namespace, anonymous namespace?
96. Как вызвать объект из nested namespace?
97. Как работают inline-функции? Может ли такая функция быть рекурсивной?
98. Что такое полиморфизм?
99. Для чего используется наследование?
100. Какие бывают типы наследования?
101. Для чего используют виртуальное наследование?
102. Как можно решить проблему ромбовидного наследования без использования виртуального наследования?
103. Что случится, если класс-наследник передать по значению в функцию, которая принимает базовый класс?
104. Что случится, если пронаследоваться от базового класса, который не имеет виртуального конструктора?
105. Что случится, если вызвать переопределенную virtual function из конструктора? Может ли конструктор быть виртуальным?
106. Может ли pure virtual function иметь имплементацию? Что случится, если вызвать pure virtual function из конструктора?
107. Какие методы генерируются для класса по умолчанию? В каком случае такие методы не будут генерироваться? Как заставить компилятор добавить/удалить эти методы?
108. Как запретить наследовать класс?
109. Какой порядок конструирования и разрушения классов в иерархии? Порядок инициализации полей класса?
110. Какие есть способы инициализации полей класса?
111. Может ли деструктор быть виртуальным?
112. Что делает ключевое слово virtual?
113. Для чего используют виртуальный деструктор?
114. Что такое глубокое копирование?
115. Что такое виртуальные функции и зачем они нужны?
116. Как защитить объект от копирования?
117. Что такое семантика перемещения?
STL / Algorithms
118. Из чего состоит STL?
119. Какие алгоритмы применяли с STL? В чем преимущество использования алгоритмов перед собственноручно написанными функциями?
120. Расскажите о контейнерах стандартной библиотеки vector, list, map, unordered_map.
121. Какие знаете типы итераторов? Чем они отличаются? В каких контейнерах используются?
122. Какая разница между std::set, std::map, std::unordered_multimap?
123. Что такое идиома remove-erase?
124. Как получить наименьшее значение типа?
125. Какая разница между std::map и std::hashmap?
126. Как подсчитать количество элементов в std::list?
127. Что такое сложность алгоритма и от чего она зависит?
128. В чем разница между vector и list и в каких случаях их лучше использовать?
Многопоточность
129. Что вам известно о многопоточности?
130. Что общего и различного в процессах и потоках?
131. Как синхронизировать передачи информации между потоками?
132. Какая разница между мьютексом и семафором?
133. Что такое deadlock?
134. Является ли С++ thread-safe?
135. Что такое race-condition?
136. Как избежать состояния гонки?
137. Что такое атомарная операция?
138. Как работать с std::mutex?
Networking
139. Что такое сокет?
140. Какие операции можно делать с сокетом?
141. Какая информация нужна, чтобы создать сокет?
142. Какие бывают модели сетей?
143. Расскажите об уровнях модели OSI.
144. Расскажите об уровнях модели TCP/IP.
145. Что такое IP-адрес?
146. Для чего используется маска подсети?
147. Какая разница между IPv4 и IPv6?
148. Сколько памяти необходимо для хранения IPv4?
149. Для чего нужен порт?
150. Сколько максимально может быть портов?
151. Какая разница между TCP и UDP?
152. Для чего такой ненадежный UDP-протокол?
OS/Linux
153. Что такое менеджер пакетов?
154. Какие бывают менеджеры пакетов?
155. Какие бывают дистрибутивы Linux?
156. Что такое PID?
157. Для чего используют файловые дескрипторы?
158. Расскажите о стандартных файловых дескрипторах процесса.
159. Что такое Pipe?
160. Что такое Named Pipe?
161. Что такое UID?
162. Расскажите о командах bash.
SCM / CI / CD
163. Какие есть виды SCM?
164. Для чего используют системы контроля версий?
165. Какие есть команды git?
166. Какие этапы во время комита изменений?
167. Разница между git fetch и git pull?
168. Какие есть этапы решения merge conflict?
Практические задания
169. Посчитайте количество единиц в произвольном числе.
170. Есть структура по типу «односвязный список». Напишите функцию, которая разворачивает список. То есть, первый элемент становится последним, а последний - первым.
171. Напишите реализацию функции int atoi (const char *str); преобразования строки в число.
172. Для структуры типа односвязный список напишите функцию вставки элемента.
173. Реализуйте класс vector.
174. Реализуйте бинарный поиск в массиве.
175. Реализуйте любую сортировку.
176. Реализуйте макрос для сравнения двух строк.
177. Реализуйте реверс строк.
178. Реализуйте перевода числа из строки в int.
179. Реализуйте подсчет слов в предложении.
180. Реализуйте подсчет чисел Фибоначчи.
181. Найдите такие элементы двух массивов, которые попадаются только в каждом из них. Желательно использовать STL.
182. Удалите из unordered_map элементы, которые делятся на 2 и выведите ключи этих элементов.
183. Напишите класс для логирования, который мог бы логировать к консоли или файлу.
184. Напишите функцию для определения, является ли определенный год високосным.
185. Напишите функцию для определения, является ли определенное слово палиндромом.
186. Напишите реализацию паттерна Singleton.
187. Напишите реализацию std::vector с операциями: push_back, push_front, pop_back, pop_front, size, clear.
188. Напишите рекурсивный поиск значения в дереве бинарного поиска.
189. Напишите функцию, которая проверяет, является ли дерево сбалансированным.
190. Напишить функцию для поиска уникального элемента в массиве.
Middle
Общее
1. Какие курсы прошли или книги прочитали за этот год? Чему научились?
2. Что нравится и не нравится в С++? Чего не хватает?
3. Что интересного нашли в новых стандартах С++17, С++20 (конкретные фичи)?
4. Расскажите о фичах, которые появились в разных версиях языка.
5. Расскажите о модели памяти, которая появилась в С++11 стандарте.
6. Что такое сериализация? Какие библиотеки знаете?
7. Какие знаете паттерны проектирования?
8. Что такое операционная система? Какие существуют типы по назначению?
9. Назвать основные составляющие и принципы работы ОС Linux в качестве примера системы общего назначения.
10. Что такое SFINAE и PIMPL?
11. Назовите порождающие, структурные и поведенческие паттерны программирования и приведите примеры их использования.
Препроцессор и компиляция
12. Расскажите о системах автоматизации билд-процесса.
13. Какая разница между статической и динамической библиотеками?
14. Какая разница между исполнительным файлом и динамической библиотекой?
15. Что такое DLL hell?
16. Что такое флажки компиляции (fPIC)?
17. В чем разница между дебаженной и релизной сборкой?
18. Что нужно для использования сторонней библиотеки?
19. Что такое internal linkage?
C
20. Что будет, если дважды вызвать free?
21. Как происходит вызов функции?
22. Как происходит передача параметров в функцию?
23. Как прорабатывается константа переменных?
24. Что означает ключевое слово inline?
25. Для чего используют выравнивания, можно ли его контролировать?
26. Расскажите о битовых полях.
27. Для чего нужен extern "C"?
28. Что будет, если в двух файлах сделать функцию с одинаковым именем и параметрами? На каком этапе возникнет ошибка?
29. Как экспортировать/импортировать функции из динамической библиотеки?
30. Какая разница между С-style приведением типов и C++ приведением?
C++
31. Что такое явное и неявное приведение типов в С++? Зачем делать explicit-конструктор?
32. Что такое Uniform initialization? Aggregate initialization?
33. Что такое Reference to temporary object? Как продлить время жизни временного объекта?
34. Что такое делегирующий конструктор?
35. Что такое список инициализации?
36. Какой порядок инициализации полей класса? Что случится, если конструктор инициализирует поля в другом порядке?
37. Что случится, если инициализировать поле другим полем?
38. Что такое copy elision? Сколько раз будет вызван конструктор/деструктор у объекта, которого возвращают по значению?
39. Что такое move-семантика?
40. В каких случаях не будет сгенерирован конструктор копирования?
41. Чем отличается конструктор копирования от оператора присваивания?
42. При каких условиях в конструкторе можно выбросить exception?
43. Что такое конструктор по умолчанию? Для чего нужны default и delete?
44. Чем отличается интерфейс от абстрактного класса?
45. Какие виды полиморфизма в С++?
46. Как реализовано наследование в большинстве компиляторов?
47. Множественное наследование: за и против?
48. Виртуальное наследование и порядок конструирования?
49. Зачем использовать override?
50. Какие есть правила вывода типа при использовании auto? В каких случаях auto может привести к нежелательному копированию объекта?
51. Расскажите обо всех возможных способах использования ключевого слова static в С++. Что такое static initialization order fiasco?
52. Что делает вызов throw; в блоке catch?
53. Чем отличается constexpr от const?
54. Что такое const correctness?
55. В каком случае можно использовать const_cast?
56. Что такое ключевое слово mutable и когда его нужно использовать?
57. Что такое ключевое слово friend и когда его нужно использовать?
58. Расскажите о лямбда-выражениях в С++ и доступ к переменным во внешней области видимости, захват this в лямбду и время жизни лямбды и захваченных переменных?
59. Что такое функтор? Напишите пример.
60. Что такое специализация шаблона?
61. Что такое dynamic_cast и run-time type identification?
62. Что такое exception? Как бросить и поймать?
63. Что будет, если бросить exception из конструктора? А из деструктора?
64. Что будет, если не поймать exception?
65. Что произойдет, если exception выйдет за пределы блока noexcept функции?
66. Для чего можно использовать приватное наследование?
67. Что такое контракт функции?
68. Что такое vptr и vtable?
69. Где содержится vptr?
70. Где содержится vtable?
71. Какая разница между overload and override?
72. Как компилятор различает члены класса и обычные переменные в функциях?
73. Зачем используют exceptions?
74. Что такое блоки try-throw-catch?
75. Расскажите о логике catch-блоков.
76. Что такое move constructor?
77. В чем разница между константным методом и неконстантным?
78. Что такое В-нотация и как определить сложность любого алгоритма?
79. Что такое таблица виртуальных методов?
80. Какие функции класса автоматически генерирует компилятор, если их не определить?
81. Что такое выравнивание данных?
82. Что такое exception?
83. Какие есть стандартные контейнеры и на основе каких структур они построены?
84. Что такое Undefined behavior? Приведите примеры.
85. Как определить, что в программе есть memory leak?
86. Для чего нужен std::make_shared? Чем он лучше создания std::shared_ptr через конструктор?
87. Что будет, если выделить один объем памяти, а записать больше?
88. Что такое переполнение stack?
Паттерны проектирования
89. Зачем нужны паттерны? Какие типы паттернов различают?
90. Недостатки паттерна Singleton? Когда он уместен?
91. Преимущества и недостатки PIMPL?
92. В чем разница между паттерн-фабрикой и фабричным методом? Когда использовать какой из них?
93. Что такое паттерн Observer?
94. Як контролировать состояние программы? Машину состояний? Паттерн состояние?
95. Что такое паттерн Visitor?
Метапрограммирование
96. Какие есть правила вывода типа в шаблоне?
97. Чем отличается using от typedef?
98. Сколько памяти занимает произвольная структура? Что такое выравнивание объекта?
99. Почему пустая структура занимает 1 байт? Какая минимальная единица адресации в С++?
OOP/OOD
100. Что такое SOLID? Что означает каждый из этих принципов?
101. Расскажите о паттернах проектирования.
102. Что такое Dependency Injection? Приведите пример.
103. Какие преимущества и недостатки функционального подхода?
104. Что такое принцип RAII?
105. Что такое принцип DRY?
106. Что такое принцип KISS?
107. Какие преимущества композиции перед наследованием?
STL / Algorithms
108. Какие алгоритмы с STL использовали? Каких не хватает?
109. Какими особенностями должен обладать класс, чтобы он был итератором?
110. Какие бывают итераторы?
111. Расскажите об инвалидации итераторов.
112. Как оптимизировать удаление элемента со средины вектора?
113. Как реализован vector?
114. Как реализован list?
115. Как расширить STL-контейнеры?
116. Какие есть алгоритмы в STL?
117. В чем разница между vector, deque, list, set e STL?
118. Когда надо использовать map? Когда - unordered_map? Какая сложность поиска и вставки в этих контейнерах?
119. Как проверить, есть ли в контейнере элементы? Почему вызов container.size() является плохой практикой?
120. Что такое exception safety guarantee? Какую exception safety guarantee имеют STL-контейнеры?
121. Расскажите о типах умных указателей и о подсчете ссылок в них.
Многопоточность
122. Является ли С++ thread-safe?
123. В чем разница между многопоточностью и асинхронностью?
124. Что такое многопоточность? Какую функциональность предоставляет С++ для разработки многопоточных приложений? Какие основные проблемы многопоточных приложений?
125. Как передать информацию между несколькими процессами?
126. Как синхронизировать между собой несколько процессов?
127. Какие есть особенности работы с shared memory?
128. Как работает spinlock?
129. Какие вы знаете особенности использования recursive mutex?
130. Расскажите о read-write mutex.
131. Что такое race-condition? Взаимная блокировка? Что такое критическая секция?
132. Как избежать состояния гонки?
133. Чем отличается мьютекс от семафора?
134. Какие примитивы синхронизации реализованы в C++? Преимущества lock_guard?
135. Что случится, если exception выйдет за пределы потока? Какие инструменты есть для безопасной асинхронности в С++?
136. Чем отличается std::launch::async от std::launch::deferred?
137. Что такое атомарная операция? std::atomic?
138. Как работать с std::conditional_variable?
139. Как создать поток с помощью std::thread?
140. На сколько потоков лучше разбить задачу? От чего это зависит?
141. Как работать с std::async?
142. Thread-safe гарантии контейнеров в С++? В чем недостаток интерфейса front() + pop_front()?
Networking
143. Что такое TCP handshake?
144. Какая разница между TCP и UDP?
145. Расскажите о протоколах верхнего уровня.
146. Какая разница между HTTP и HTTPS?
147. Расскажите об SSL/TLS handshake.
SCM / CI / CD
148. Расскажите о процессах CI.
149. Как отредактировать комит?
150. Расскажите об интерактивном rebase.
151. Какие могут быть способы дебаггинга кода?
152. Для чего нужны Unit test? Чем отличается от Functional Test?
153. Как тестировать код? Какой используете фреймворк?
154. Какие библиотеки знаете для написания тестов?
155. Что такое mock?
156. Сколько тестов нужно написать на одну функцию?
157. Что такое побочный эффект, идемпотентность и чистые функции?
158. Что такое контейнеризация и в чем преимущества и недостатки? Что такое Docker или иной инструмент контейнеризации?
159. Что такое CI/CD и какие преимущества приносит для разработчика?
160. Какие принципы итеративных методологий?
161. Какие преимущества и недостатки code-convention?
Практические задания
162. Напишите максимально корректную реализацию класса string с конструктором копирования и оператором присваивания.
163. Напишите реализацию очереди.
164. Реализуйте функцию, которая за один проход найдет уникальный элемент в контейнере.
165. Напишите thread-safe пул потоков.
166. Напишите игру жизни в ООП стиле.
167. Напишите класс, который достает из базы список товаров по фильтру и показывает на консоли. Напишите тесты для него.
168. Любая задача на написание кода, чтобы проверить умение проектировать интерфейсы и придерживаться принципов SOLID, DRY, KISS.
169. Напишите свою реализацию std::atomic.
170. Напишите программу для анализа графов: нахождение циклов, deadlock-состояний, циклов, недоступных состояний.
171. Напишите программу, которая бы проверяла, что в системе запущен только один ее экземпляр. Решение должно быть cross-platform.
172. Проанализируйте C++ код с точки зрения качества: выявить потенциальные memory leak, нерациональное использование STL-контейнеров, алгоритмов, неоптимальные конструкции и тому подобное.
173. Напишите код для решения судоку.
174. Напишите код, который найдет зацикливание в односвязном списке.
Senior
Общее
1. Как вы понимаете SOLID?
2. Как разработать систему плагинов на С++?
3. Что такое RPC? Какие библиотеки знаете?
4. На что обращать внимание при проведении code review?
5. Какие есть проблемы при написании кроссплатформенного кода? На что обращать внимание?
6. Что делать, если код работает медленно?
7. Какие есть способы и методологии измерения быстродействия кода? Как можно устранить/уменьшить влияние замеров на быстродействие?
8. Что такое SFINAE? Для чего используется?
9. Что такое метапрограммирование? С помощью чего реализуется на С++?
10. Как использовать variadic templates?
11. Как тестировать закрытые методы?
12. Как считать покрытие тестами? Нужно ли это делать?
13. Что такое cache miss и как это выявить?
14. Что такое SIMD-инструкции? Какие необходимые условия и способы их использования?
15. Что такое покрытие кода и как обеспечивается?
16. Опишите принципы lock-free структур данных и свой опыт работы с ними.
Препроцессор и компиляция
17. Расскажите о построении билд-системы.
18. Как работать с билд-системами: Make, CMake.
19. Как интегрировать third-party в проект?
20. Что такое барьеры памяти?
21. Расскажите о работе с сырыми указателями и о ручном управлении памятью.
22. Что такое статический анализатор кода? Какие знаете?
23. Что такое динамический анализатор кода? Какие знаете?
24. Проект медленно собирается. Как можно ускорить?
C/C++
25. Расскажите об использовании realloc в контейнерах.
26. Как работают шаблоны?
27. Расскажите о специализации шаблонов.
28. Как работает RTTI?
29. Можно ли использовать exception в конструкторе/деструкторе?
30. Что такое rvalue и lvalue?
31. В чем особенности контейнеров std::set, std::map, std::unordered_map, std::hash?
32. Что такое placement new? Для чего используют? Как сделать placement delete?
33. Как размещается в памяти класс со множественным наследованием и виртуальными функциями?
34. Как работают точки остановки?
35. Что такое уязвимости? Каков механизм их работы?
36. Как написать собственный std::shared_ptr?
37. Что такое curiously recurring template pattern?
38. Опишите назначение и принцип работы std::shared_ptr, std::unique_ptr и std::weak_ptr.
39. Какое назначение и отличия использования std::variant и std::any?
40. Какие улучшения получил std::search в С++17 ?
41. Что такое copy elision и когда он становится возможным? Какие особенности для разных стандартов?
42. Что такое Return Value Optimization?
OOP/OOD
43. Объясните принципы SOLID.
44. Объясните принципы KISS.
45. Объясните принципы YAGNI.
46. Какие есть подходы к оптимизации кода?
47. На что стоит обращать внимание при code review?
48. Какие есть паттерны проектирования? Почему не советуют использовать Singleton?
49. Что такое статический полиморфизм?
STL / Algorithms
50. Когда std::vector может использовать std::move?
51. Расскажите о своем любимом алгоритме поиска.
52. Что такое lock-free и wait-free алгоритмы? В чем их отличия и способы реализации?
53. Опишите назначение execution policy для параллельных алгоритмов.
Многопоточность
54. Расскажите о построении API, рассчитанных на многопоточное использование.
55. В чем разница между kernel-level и user-level потоками?
56. Что такое coroutine?
57. Что делает спецификатор thread_local?
58. Как реализовать синхронизацию в задаче producer-consumer?
59. Як синхронизироваться между различными процессами?
SCM / CI / CD
60. Расскажите о настройке процесса менеджмента ветвей репозитория.
61. Расскажите о стратегии разветвления (branching).
Практические задания
62. Напишите базовую реализацию std::shared_ptr.
63. Реализуйте алгоритм сортировки.
64. Реализуйте алгоритм хеширования.
65. Реализуйте shared_ptr с расширением для weak_ptr.
66. Реализуйте простейший producer-consumer, используя условные переменные.
67. Опишите как можно подробнее, что происходит в системе, когда приложение делает сетевой запрос.
68. Детально описать дизайн программного компонента, например, системы голосования; учесть при этом высокую нагрузку и сделать ее расширяемой и отказоустойчивой.
Выражаем благодарность за участие в статье Александру Жакуну, Ярославу Пушко, Назару Семенишину, Сергею Подоброму, Владимиру Кочуну, Владимиру Новикову, Сергею Кривоносу, Марку Цирульнику, Кириллу Пшеничному, Виктору Шуму, Сергею Братусю.