Welcome, guest! Login / Register - Why register?
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
Your Name: Code Language: