Замечания И.Е. Кураленка по списку вопросов госэкзамена: Алгебра: Собственные числа: определение, понимание физического смысла и возможного применения. Собственное разложение, сингулярное разложение, метод главных компонент. Квадратичная форма, положительная (полу)определенность КФ. Где применяется. Разряженность и l_1 регуляризация. Поиск ближайших соседей. Точный kd-tree, R-tree. Проклятие размерности. Неточный поиск соседей. Locality Sensitive Hashing. Численные методы: Решение уравнений: понимание возможностей решения полиномиальных уравнений в closed form (спрашиваю до Феррари, идем дальше, если знает о существовании Кардано), метод половинного деления (делаю упор на достижении заданной точности). Накопление ошибки: понятие арифметической устойчивости, понимание способов уменьшения ошибки вычислений. Решение СЛУ: метод Гаусса, метод простой итерации, через QR, спрашиваю про арифмитическую устойчивость разных QR (если знает о Householder Reflections считаю большим успехом), разложение Холеского. (далее начиная с уровня devlead) Вычисление собственных значений: power method, пространство Крылова, тридиагонализация, метод Lanczos (если может объяснить, считаю великим достижением). Безусловная оптимизация: градиентный спуск (условия сходимости, скорость сходимости, выбор шага, идем дальше, если сказал условия). Метод Ньютона (мучаю на тему применимости). Липшецевость функции. Выпуклая оптимизация: если знают хоть что-то считаю успехом (Нестеров/ISTA/FISTA/FOBOS/etc.) Условная оптимизация: метод Лагранжа, теорема Каруша-Куна-Таккера. Proximal Gradient Method. Обработка сигналов. Свертки. DFT/FFT/DCT/и прочие разложения Фурье (формулы не интересны, интересно понимание). Сложности Фурьешного разложения (вспоминают про нелокальность разложения по времени — ставлю большой +). Вейвлеты. Compressed sensing. ТВ и МС: Проверка статистических гипотез. Сложная гипотеза. Известные критерии. Зависимые эксприменты (пример с увеличением выборки). Критерий Вальда. Кросс-валидация, jackknife, bootstrapping, поправки к бутстраппингу. (далее с уровня аналитик/devlead) Моменты распределения, отличия нормального распределения от всех прочих. Спрашиваю о известных распределениях и их свойствах (Бернулли, Хи-квадрат, Пуассон, Бета/Дирихле, Экспоненциальное/Гамма). Теорема Байеса, Байесова информация, natural law of successions и прочие уточнения на реальных последовательностях. Методы сэмплирования (равномерное, упорядоченное, стратифицированное). Учет ошибки стратифицированного сэмплирование. MCMC. Основные понятия регрессионного анализа. Машинное обучение (только по специальности): Понятия целевой функции, решающей, переобучения/недообучения. Отличия от стохастической оптимизации. Методы оптимизации 0-го порядка: Climbing the hill, MCMC (построение пространства), random walk, генетика, k-NN. Генеративные методы, Метод максимального правдоподобия. Expectation Maximization. Gibbs sampling. Линейные решения: LDA, QDA, LASSO, LARS SVM. Кто такое ядро. Как выглядит решение с ядрами, кто такие опорные точки. Деревья решений: что такое, как обрезать, как построить регуляризацию так, чтобы не обрезать. Ансамбли: bagging, boosting. Уменьшение размерности: PCA, кластеризация, ICA. Архитектура современных компьютеров: Архитектуры ЭВМ: фон Нейман, DMA, как совместить классику с Hypertransport. Устройство памяти и кэша. Время доступа до памяти разного уровня. Защищенный режим: сегменты и страницы. Виртуальная память. Переключение режимов защиты. CISC и RISC архитектуры. SPARC. Какие современные процессоры куда относятся. Системы инструкций: MMX/SSE. Интрински (только для C++). CAS. Реализация CAS в многопроцессорных системах. SSD vs HDD Алгоритмы и структуры данных: Списки и массивы, деревья (сбалансированные, красно-черные). Понятие хеш функции. Три роли хэш-фунции: быстрый доступ, проверка целостности, вероятностная функция близости. Перевести задачу построения хеша в задачу оптимизации. Сложность алгоритмов Сортировки: quick, слиянием, radix. Объяснить сложности. Cache-friendly сортировки. Выбор в зависимости от размера массива. Алгоритмы на графах: Дейкстра, минимальное сечение/максимальный поток. Lock-free алгоритмы. Понятие. LFQueue, SkipList. Сети (по специальности): Уровни OSI. На примере TCP/IP + Ethernet стека. Отличия TCP от UDP HTTP. HTTPS. Оверхеды SSL. Уязвимости SSL (в частности screening). Маршрутизация: DNS, RARP, время жизни пакета, oversubscription. Firewall: правила, сложность проверки, etc. Очень хорошо, если знает подробности физики: Ethernet/IB/WiFi/любые мобильные (3g/4g либо нормы, либо сами протоколы, понятие радио-ресурса). Параллельные вычисления: MapReduce парадигма. Шардирование и ее оптимизация. Архитектура современных GPU: виды памяти, понятия compute unit’ов, реализация SMID на современных картах. Отличия реализации AMD от nVidia Способы профиляции и дебага на nVidia и/или AMD Параллельные алгоритмы на примере: сортировки и сложения. Синхронизация и атомики. Операционные системы (мы работаем под *NIX, поэтому интерес в эту сторону): Роль ОС. Виды ядер с примерами. Стоимость перехода между системным и прикладным уровнем Процессы и нити. Диспетчеризация и блокировки. Примитивы работы с синхронизацией. Особенности приоритезации в Linux/SysV. Сигналы. Способы послать, как обработать, чего обработать нельзя. Разрешения и файловые системы: ext*, понятие журналирования, reiserfs, сетевые nfs,zfs. /proc и sysctl. Дерево процессов, группы. Способы убить поддерево процессов. Виртуализация (полная, namespacing). Известные контейнеры. Менеджмент и инструменты командной разработки: Agile. Основные принципы и известные методологии. Системы контроля версий: какие знает (cvs/svn/git/mercurial/perforce/etc.). Понятия рабочей и интеграционной ветки. Выясняем какие использовались принципы в прошлой команде. Тестирование. Виды и способы. Какие библиотеки использовал. OOD: overdesign, как избегать (примеры из личного опыта). Design patterns (какие знает, зачем применяет). OOD и тестирование. Контрактное программирование. Программирование (тут спрашиваем в зависимости от языка, но главное, чтобы человек писал, для чего просим написать что-то работающее либо на месте, либо дома) Мнение руководителей ООП: 1. А.Б.Дегтярев Уважаемые коллеги, с интересом прочитал вопросы. Большое за них спасибо Кураленку. Мое мнение, 95% вопросов - это вопросы бакалавриата. Практически все это должен знать человек, поступающий в магистратуру. В любом случае необходимо пересмотреть перечень вопросов, кое что из раздела "параллельные вычисления" может быть вставлено и в госэкзамен магистратуры. 2. Андрианов С.Н. В принципе согласен, но у меня "под рукой" нет действующей программы экзаменов, поэтому не могу сказать, насколько это сильно (кроме формулировки) отличается от существующей программы. Нужно ли будет еще дополнительно делать консультации, сколько и кто это будет делать? Это формальное вещи, но у нас все именно формализовано. Т. Е. Вопрос стоит так, вводить ли новую программу сейчас (если, конечно, формально возможно)или ее ввести на следующий экзамен, а студентов соответственно "подтянуть". 3. Мозжерина Е.С. Абсолютно согласна с Александром Борисовичем. Реально к магистратуре относятся только курсы командной разработки и ML. Все остальное – программа бакалавриата. Параллельные вычисления – наверное, магистратура, но не базы данных. Могу ответить только за ТБД. Алгебра (?). Поиск ближайших соседей и проклятие размерности входят в курс Машинное обучение (ML). Так что это знают, но есть ли в вопросах – не проверяла. «Точный kd-tree, R-tree. Неточный поиск соседей. Locality Sensitive Hashing.» Извините, но, во-первых, необъятное не объять – курс ML и сейчас перегружен. А во-вторых, это больше к структурам данных, чем к алгебре. Машинное обучение. 1. Знают, есть ли в вопросах – не проверяла. 2. Climbing the hill, random walk – не рассматриваем, но можно включить. MCMC – не рассматриваем, при всем желании в программу, скорее всего, не влезет. генетика – если речь о генетических алгоритмах, то знают, можно смело включать в вопросы. k-NN – знают. 3. Метод максимального правдоподобия. Expectation Maximization. – рассматриваем, но немного в другом контексте. Сэмплирование по Гиббсу – можно добавить. 4. LDA, QDA, LASSO – знают. LARS – при всем желании в программу, скорее всего, не влезет. 5. Знают, можно включать в вопросы. 6. Знают, но на вопрос «как обрезать», скорее всего, не ответят. Только если конкретный алгоритм спросить. 7. Знают, можно включать в вопросы. 8. PCA, кластеризацию знают. ICA – если сильно надо, то можно включить, но … Если так посмотреть, то вроде должны так или иначе ориентироваться во всех вопросах. По курсу командной разработки уточню у М.А. Малининой.