Вопросы к экзамену — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
Строка 6: Строка 6:
 
## компиляция и линковка
 
## компиляция и линковка
 
## утилита make
 
## утилита make
 
 
# Указатели, массивы, ссылки. Три вида памяти. Работа с кучей на C.
 
# Указатели, массивы, ссылки. Три вида памяти. Работа с кучей на C.
 
## применение указателей и ссылок
 
## применение указателей и ссылок
Строка 13: Строка 12:
 
## malloc/calloc/realloc/free
 
## malloc/calloc/realloc/free
 
## void*
 
## void*
 
 
# Структуры. Неинтрузивный связный список на C.
 
# Структуры. Неинтрузивный связный список на C.
 
## неинтрузивная реализация
 
## неинтрузивная реализация
 
## typedef
 
## typedef
 
 
# Структуры. Интрузивный связный список на C.
 
# Структуры. Интрузивный связный список на C.
 
## интрузивная реализация
 
## интрузивная реализация
 
## typedef
 
## typedef
 
 
# Функции. Указатели на функции.
 
# Функции. Указатели на функции.
 
## как происходит вызов функции
 
## как происходит вызов функции
 
## реализация сортировки
 
## реализация сортировки
 
void sort(void* base, size_t num, size_t size, int (*compar)(const void*,const void*));
 
void sort(void* base, size_t num, size_t size, int (*compar)(const void*,const void*));
 
 
# Обзор стандартной библиотеки C.
 
# Обзор стандартной библиотеки C.
 
## string.h (memcpy, memcmp, strcpy, strcmp, strcat, strstr, strchr)
 
## string.h (memcpy, memcmp, strcpy, strcmp, strcat, strstr, strchr)
 
## stdlib.h (atoi, strtoll, srand/rand, qsort)
 
## stdlib.h (atoi, strtoll, srand/rand, qsort)
 
 
# Ввод##вывод на C. Текстовые файлы.
 
# Ввод##вывод на C. Текстовые файлы.
 
## FILE, fopen, fclose, r/w, t/b
 
## FILE, fopen, fclose, r/w, t/b
Строка 36: Строка 30:
 
## printf, scanf, fprintf, fscanf, sprintf, sscanf
 
## printf, scanf, fprintf, fscanf, sprintf, sscanf
 
## обработка ошибок, feof, ferror
 
## обработка ошибок, feof, ferror
 
 
# Ввод##вывод на C. Бинарные файлы.
 
# Ввод##вывод на C. Бинарные файлы.
 
## FILE, fopen, fclose, r/w, t/b, буферизация
 
## FILE, fopen, fclose, r/w, t/b, буферизация
 
## fread, fwrite, fseek, ftell, fflush
 
## fread, fwrite, fseek, ftell, fflush
 
## обработка ошибок, feof, ferror
 
## обработка ошибок, feof, ferror
 
 
# Классы и объекты.
 
# Классы и объекты.
 
## зачем нужно ООП?
 
## зачем нужно ООП?
Строка 47: Строка 39:
 
## конструктор (overloading), деструктор
 
## конструктор (overloading), деструктор
 
## инициализация полей
 
## инициализация полей
 
 
# Работа с кучей на C++.
 
# Работа с кучей на C++.
 
## new/delete
 
## new/delete
Строка 53: Строка 44:
 
## конструктор копий
 
## конструктор копий
 
## оператор присваивания
 
## оператор присваивания
 
 
# Наследование и полиморфизм.
 
# Наследование и полиморфизм.
 
## protected
 
## protected
Строка 59: Строка 49:
 
## таблица виртуальных функций
 
## таблица виртуальных функций
 
## статическое/динамическое связывание
 
## статическое/динамическое связывание
 
 
# Умные указатели.
 
# Умные указатели.
 
## scoped_ptr
 
## scoped_ptr
 
## auto_ptr
 
## auto_ptr
 
## shared_ptr
 
## shared_ptr
 
 
# Перегрузка операторов.
 
# Перегрузка операторов.
 
## бинарные и унарные
 
## бинарные и унарные
 
## в классе/вне классе
 
## в классе/вне классе
 
## приведение типов
 
## приведение типов
 
 
# Ключевые слова extern, static, inline.
 
# Ключевые слова extern, static, inline.
 
## extern у переменных
 
## extern у переменных
Строка 75: Строка 62:
 
## static у полей и методов
 
## static у полей и методов
 
## inline у функций
 
## inline у функций
 
 
# Разное
 
# Разное
 
## friend
 
## friend
 
## ключевые слова const, enum
 
## ключевые слова const, enum
 
 
# Элементы проектирования
 
# Элементы проектирования
 
## декомпозиция программы (Model, View)
 
## декомпозиция программы (Model, View)
 
## автотесты
 
## автотесты
 
 
# Наследование: детали
 
# Наследование: детали
 
## сортировка и структуры данных C vs ООП
 
## сортировка и структуры данных C vs ООП
 
## множественное наследование
 
## множественное наследование
 
## private/protected наследование
 
## private/protected наследование

Версия 14:43, 19 декабря 2017

При ответе на любой вопрос необходимо приводить "содержательные" примеры. Например: не класс Foo с методов bar, а класс Matrix с методом add.

  1. Программа, состоящая из нескольких файлов.
    1. заголовочные файлы
    2. компиляция и линковка
    3. утилита make
  2. Указатели, массивы, ссылки. Три вида памяти. Работа с кучей на C.
    1. применение указателей и ссылок
    2. арифметика указателей
    3. глобальная/статическая память, стек, куча
    4. malloc/calloc/realloc/free
    5. void*
  3. Структуры. Неинтрузивный связный список на C.
    1. неинтрузивная реализация
    2. typedef
  4. Структуры. Интрузивный связный список на C.
    1. интрузивная реализация
    2. typedef
  5. Функции. Указатели на функции.
    1. как происходит вызов функции
    2. реализация сортировки

void sort(void* base, size_t num, size_t size, int (*compar)(const void*,const void*));

  1. Обзор стандартной библиотеки C.
    1. string.h (memcpy, memcmp, strcpy, strcmp, strcat, strstr, strchr)
    2. stdlib.h (atoi, strtoll, srand/rand, qsort)
  2. Ввод##вывод на C. Текстовые файлы.
    1. FILE, fopen, fclose, r/w, t/b
    2. stdin, stdout, stderr
    3. printf, scanf, fprintf, fscanf, sprintf, sscanf
    4. обработка ошибок, feof, ferror
  3. Ввод##вывод на C. Бинарные файлы.
    1. FILE, fopen, fclose, r/w, t/b, буферизация
    2. fread, fwrite, fseek, ftell, fflush
    3. обработка ошибок, feof, ferror
  4. Классы и объекты.
    1. зачем нужно ООП?
    2. инкапсуляция: private/public
    3. конструктор (overloading), деструктор
    4. инициализация полей
  5. Работа с кучей на C++.
    1. new/delete
    2. cоздание объектов в куче
    3. конструктор копий
    4. оператор присваивания
  6. Наследование и полиморфизм.
    1. protected
    2. virtual (overriding)
    3. таблица виртуальных функций
    4. статическое/динамическое связывание
  7. Умные указатели.
    1. scoped_ptr
    2. auto_ptr
    3. shared_ptr
  8. Перегрузка операторов.
    1. бинарные и унарные
    2. в классе/вне классе
    3. приведение типов
  9. Ключевые слова extern, static, inline.
    1. extern у переменных
    2. static у переменных и функций
    3. static у полей и методов
    4. inline у функций
  10. Разное
    1. friend
    2. ключевые слова const, enum
  11. Элементы проектирования
    1. декомпозиция программы (Model, View)
    2. автотесты
  12. Наследование: детали
    1. сортировка и структуры данных C vs ООП
    2. множественное наследование
    3. private/protected наследование