То, что делает программиста программистом
AidarКурсивом выделено то, что ты обязан знать. Не важен язык программирования/направления - общий для всего IT.
— Понимание основных принципов ООП: наследование, инкапсуляция, полиморфизм, конструктор, деструктор, виртуальные методы, множественное наследование.
— Структуры данных: связные списки, бинарные деревья, графы, стеки, очереди, векторы/списки массивов, хеш-таблицы, красно-черные деревья.
— Алгоритмы: поиск в ширину и глубину, бинарный поиск, сортировка слиянием и быстрая сортировка, вставка в дерево.
— Концепции: манипуляция битами, паттерн одиночка, паттерн фабричный метод, память (стек, куча), рекурсия, время порядка «О-большое».
Неплохо будет повторить:
— Знание основ математики: множество, операции над множествами; функция, характеристики функции, график функций, линейная, степенная, показательная, логарифмическая функция, производная, интеграл.
— Основы дискретной математики: булева алгебра, комбинаторика, конечный автомат, теория графов, деревья, двоичные деревья.
— Знание и понимание основ теории компиляторов: грамматика, лексический анализ, синтаксический анализ, семантический анализ, оптимизация, генерация кода, интерпретатор.