Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as Plain Text by re ( 16 years ago )
1.
Чем отличаются const char * ptr и char * const ptr?
В первом случае это указатель на константу (константные данные которые нельзя изменить), во втором константный указатель (указатель нельзя установить на другие данные).
2.
В каких случаях целесообразно применять const?
Когда требуется показать, что объект и его логическое внетреннее состояние не изменяется.
3.
Каким образом в С++ можно осуществлять приведение типов данных? В каких ситуациях эти способы предпочтительны?
Существует явное и неявное приведение типов данных. Для явного приведения рекомендуется использовать const_cast, static_cast, dynamic_cast, reintrepret_cast. Для неявного приведения используются операторы приведения типов в создаваемых классах.
4.
Чем отличается передача параметров по значению, указателю и ссылке?
Параметры передаваемые по значению — копируются (и не изменяются во время работы), по указателю — передаётся только дополнительное значение указатель (обычно размер слова). По указателю данные не копируются и могут быть изменены. Но дополнительно не создаётся указателя (ссылка — это псевдоним существующей переменной).
5.
Когда можно вернуть из функции ссылку на локальный объект?
Если он статический
6.
Как удалить массив объектов?
delete []arr;
7.
Чем чреват выброс исключения из конструктора, деструктора?
В выброс исключения конструкторе может повлечь утечку памяти (деструктор не будет вызван). В деструкторе: при генерации исключения при уже вызванном исключении С++ заканчивает работу программы (terminate).
8.
Для чего нужен виртуальный деструктор?
Для возможности вызова требуемого (правильного) деструктора по указателю на один из базовых классов.
9.
Для чего применяется и как задается абстрактный класс?
Абстрактный класс применяется для задания правил использования некоторых объектов (т.е. Определения интерфейса обязательного к реализации). Абстрактный класс, это класс содержащий абстрактные функции (void f() = 0;)
10.
Как организовать освобождение ресурсов при выходе из функции/метода?
Если имеется достаточно большое количество объектов в куче созданных в этой функции и требующих уничтожения. То можно создать дополнительную функцию, вызываемую перед всеми возможными выходами (throw, return). Как правило уничтожение производить в порядке обратном созданию.
11.
Каким образом возможно использование виртуальных функций в конструкторах?
Простой вызов виртуальной функции func() в конструкторе класса B наследуемого от класса A вызовет функцию B::func() (если такая была определена).
12.
Какие методы в классе вы определяете в обязательном порядке?
Конструктор по умолчанию, конструктор, деструктор, копирующий конструктор, оператор присваивания. (либо заношу их в область видимости private).
13.
В каких случаях переменная класса должна быть проинициализирована в списке инициализации конструктора?
Если данная переменная ссылка, если данная переменная не имеет конструктора по умолчанию. (указатель лучше инициализировать как минимум NULL).
14.
Какие подходы к программированию на C++ помогают избегать утечек памяти и других ресурсов?
Использование умных указателей, проверка существования деструкции всех переменных созданных в динамической памяти. Проверка пар значение new-delete, new[] - delete[].
Инициализация указателей во всех конструкторах, выделение новой (и удаление старой) памяти в копирующих конструкторах.
15.
Назовите пример, в котором применение std::vector оптимальнее, чем std::list, и наоборот.
Std::vector — когда требуется доступ к элементам по их индексам (например бинарный поиск), std::list, когда элементы требуется хранить неважно в каком порядке (т.е. Любой поиск будет требовать полного прохода). Также добавление нового элемента в начало контейнера для std::vector может иметь слишком большие затраты.
16.
Какова сложность операций с std::map?
O(log2(n))
17.
Чем отличается std::hash_map (tr1::unordered_map) от std::map?
hash_map использует хеширование ключей, а map сбалансированное дерево. Хеш функция может позволить более быстрый способ нахождения требуемых данных
18.
Напишите побитовое представление 28, 9, -3.
2^8 = 0000 0001 0000 0000
9 = 0000 0000 0000 1001
-3 = 1111 1111 1111 1101
19.
Назовите наиболее быстрый известный вам алгоритм сортировки и его сложность в общем случае.
Merge: O(n log2(n)) (существует http://iaroslavski.narod.ru/quicksort/DualPivotQuicksort.pdf с последним я знаком только теоретиески)
20.
Какова сложность алгоритма сортировки целых чисел?
O(n log2(n) )
21.
Какие виды деревьев как структур данных вам знакомы, для чего они применяются?
Бинарные, АВЛ, красно-чёрные, куча. Для оптимизации скорости добавления новых элементов, поиска старых элементов, удаления существующих элементов.
22.
Назовите примеры NP-полных задач.
Комивояжёра, раскраска графа.
Revise this Paste
Children: 15637