«Что должен знать каждый уважаемый C++ программист,
чтобы не было стыдно»
или
«Как проводить собеседование»
+
+ +
+
+
+
+
00
CoreHard
Алгоритмы и структуры данных
● вычислительная сложность
● алгоритмы поиска
● алгоритмы сортировки
● структуры данных (стек, очередь, дерево, хеш-таблица, куча)
● алгоритмы на графах
01
CoreHard
Компилятор
● стадии компиляции
● оптимизации
● флаги компилятора
02
CoreHard
C++
● стандарты и их различия
● область видимости и время жизни, виды памяти
● таблица виртуальных методов
● исключения
● RTTI
● семантика перемещения
● идиомы C++
● алгоритмические трюки (hackers delight)
03
CoreHard
Стандартная библиотека C++
● алгоритмы
● контейнеры и их особенности
● умные указатели и их особенности
● адаптеры
● утилиты
● boost
04
CoreHard
Шаблоны C++
● простые шаблоны
● “шаблонная магия”
● SFINAE
● вариативный шаблон (variadic templates)
● выражения свёртки (fold expressions)
05
CoreHard
Железо и ОС
● архитектура x86, x86-64, ARM
● как работает процессор
● прерывания
● переключение контекста
● кеш процессора
● ОС API
● виртуальная память
06
CoreHard
Многопоточность
● примитивы синхронизации
● проблемы многопоточности
● особенности использования std::thread, std::async
● особенности использования std::condition_variable
● модель памяти
● pthreads
07
CoreHard
Сеть
● сетевые модели (OSI, TCP/UDP)
● протоколы TCP, UDP, HTTP etc
● сокеты
● boost::asio
● клиент-серверное взаимодействие
● RPC
08
CoreHard
ООП. Другие парадигмы
● паттерны проектирования
● наследование, инкапсуляция, полиморфизм, композиция
● архитектура приложения
● “чистый код”
● функциональное программирование
09
CoreHard
Инфраструктура
● системы сборки (cmake, make etc)
● пакетные менеджеры (conan, vcpkg)
● системы непрерывной интеграции (Jenkins, Teamcity etc)
● системы контроля версий (git, svn, p4)
● cистемы отслеживания ошибок (jira, redmine, trac etc)
● статические анализаторы
● профилировщики
● тестовые фреймворки
● IDE
10
CoreHard
Другие языки
● shell/bash/batch
● C
● скриптовые языки
● модно-молодёжные языки
11
CoreHard
Математика
● алгебра
● вычислительные методы
● математическая статистика и теория вероятности
12
CoreHard
Практика
● тестовое задание
● писать код на бумаге, доске
● писать код на компьютере
13
CoreHard
+
+ +
+
+
+
+
Спасибо!
Вопросы уже были :)
Игорь Садченко igor.sadchenko@gmail.com +375 33 642 92 91
+

C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как проводить собеседование

  • 1.
    «Что должен знатькаждый уважаемый C++ программист, чтобы не было стыдно» или «Как проводить собеседование» + + + + + + +
  • 2.
  • 3.
    Алгоритмы и структурыданных ● вычислительная сложность ● алгоритмы поиска ● алгоритмы сортировки ● структуры данных (стек, очередь, дерево, хеш-таблица, куча) ● алгоритмы на графах 01 CoreHard
  • 4.
    Компилятор ● стадии компиляции ●оптимизации ● флаги компилятора 02 CoreHard
  • 5.
    C++ ● стандарты иих различия ● область видимости и время жизни, виды памяти ● таблица виртуальных методов ● исключения ● RTTI ● семантика перемещения ● идиомы C++ ● алгоритмические трюки (hackers delight) 03 CoreHard
  • 6.
    Стандартная библиотека C++ ●алгоритмы ● контейнеры и их особенности ● умные указатели и их особенности ● адаптеры ● утилиты ● boost 04 CoreHard
  • 7.
    Шаблоны C++ ● простыешаблоны ● “шаблонная магия” ● SFINAE ● вариативный шаблон (variadic templates) ● выражения свёртки (fold expressions) 05 CoreHard
  • 8.
    Железо и ОС ●архитектура x86, x86-64, ARM ● как работает процессор ● прерывания ● переключение контекста ● кеш процессора ● ОС API ● виртуальная память 06 CoreHard
  • 9.
    Многопоточность ● примитивы синхронизации ●проблемы многопоточности ● особенности использования std::thread, std::async ● особенности использования std::condition_variable ● модель памяти ● pthreads 07 CoreHard
  • 10.
    Сеть ● сетевые модели(OSI, TCP/UDP) ● протоколы TCP, UDP, HTTP etc ● сокеты ● boost::asio ● клиент-серверное взаимодействие ● RPC 08 CoreHard
  • 11.
    ООП. Другие парадигмы ●паттерны проектирования ● наследование, инкапсуляция, полиморфизм, композиция ● архитектура приложения ● “чистый код” ● функциональное программирование 09 CoreHard
  • 12.
    Инфраструктура ● системы сборки(cmake, make etc) ● пакетные менеджеры (conan, vcpkg) ● системы непрерывной интеграции (Jenkins, Teamcity etc) ● системы контроля версий (git, svn, p4) ● cистемы отслеживания ошибок (jira, redmine, trac etc) ● статические анализаторы ● профилировщики ● тестовые фреймворки ● IDE 10 CoreHard
  • 13.
    Другие языки ● shell/bash/batch ●C ● скриптовые языки ● модно-молодёжные языки 11 CoreHard
  • 14.
    Математика ● алгебра ● вычислительныеметоды ● математическая статистика и теория вероятности 12 CoreHard
  • 15.
    Практика ● тестовое задание ●писать код на бумаге, доске ● писать код на компьютере 13 CoreHard
  • 16.
    + + + + + + + Спасибо! Вопросы ужебыли :) Игорь Садченко igor.sadchenko@gmail.com +375 33 642 92 91 +