Предложения И.Е. Кураленка о перечне вопросов к госэкзамену

advertisement
Замечания И.Е. Кураленка по списку вопросов госэкзамена:
Алгебра:
Собственные числа: определение, понимание физического смысла и возможного применения.
Собственное разложение, сингулярное разложение, метод главных компонент.
Квадратичная форма, положительная (полу)определенность КФ. Где применяется.
Разряженность и 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 – если сильно надо, то можно включить, но …
Если так посмотреть, то вроде должны так или иначе ориентироваться во
всех вопросах.
По курсу командной разработки уточню у М.А. Малининой.
Download