30 вопросов
Практика
Зачем нужна 'using' декларация в C++?
Чем отличается template от macro в C++?
Можешь написать полную реализацию несбалансированного Binary Search Tree на C++? Мне нужен файл заголовков с определениями класса, файл с реализацией всех member functions, и тестовая программа, которая покажет основные операции — вставку, удаление, поиск минимума и максимума, и обход дерева.
Напиши полную реализацию Binary Heap на C++? Нужно всё: заголовочный файл с объявлениями класса и сигнатурами функций-членов, файл с реализацией всех методов, и тестовую программу, которая покажет, как работает этот heap — вставка элементов, удаление минимума и обработка переполнения.
Как бы ты спроектировал и реализовал алгоритм, чтобы проверить, что все элементы в linked list расположены в порядке возрастания?
Когда использовать шаблон более уместно, чем наследование от базового класса?
В каких случаях компилятор C++ создаёт временные переменные, когда параметр функции объявлен как const reference?
Когда тебе нужно использовать "const" ссылку как аргумент функции и в чём преимущества такого подхода?
Ты можешь объяснить, что такое передача аргументов по ссылке в функцию, и рассказать, чем это отличается от передачи по значению с точки зрения эффективности памяти и манипуляции переменными?
Что такое умный указатель и чем он отличается от обычного указателя с точки зрения функциональности и использования в C++?
Можешь объяснить, что такое reference и как его создать?
Можно ли перегружать функцию только на основе того, передаётся ли параметр по значению или по ссылке?
Что будет, когда выполнится вот такой код? `string& foo() { return "Hello World"; } cout << foo() << endl;` Плюс ещё несколько вариантов: 1. Почему код `const string& foo1() { return "Hello World"; }` выдаёт warning и может привести к segmentation fault? 2. Как себя ведёт код `char* foo1() { return "Hello World"; }` и почему в этом случае опасно модифицировать string literal?
Когда тебе использовать references, а когда pointers?
Какие проблемы возникают, когда ты пытаешься создать ссылку на разыменованный нулевой указатель, вот как в этом примере кода: char*a=NULL; char& p = *a;?
Что такое auto_ptr и чем он отличается от обычного указателя с точки зрения управления памятью?
Что такое висячий указатель и при каких обстоятельствах он может возникнуть в программе?
Как ты можешь определить размер целочисленного типа данных без использования функции sizeof()?
Можешь объяснить, чем отличаются эти два способа подсчёта длины строки, что показаны в примере кода, и рассказать про плюсы и минусы использования арифметики указателей (прыганья по указателям) в сравнении с обычной индексацией в C++?
Можешь описать алгоритм для разворота связного списка и дать реализацию на С++?
Чем отличается `const char *myPointer` от `char *const myPointer`, и как их const квалификации влияют на указатель и данные, на которые он указывает?
В чём разница между указателем и ссылкой в программировании?
Нужно ли проверять, что указатель не NULL, перед тем как его удалить в C++?
Что такое указатель "this" в C++ и как его использовать внутри функций-членов?
Как ты можешь настроить std::cin и std::cout на работу в бинарном режиме, и какие есть особенности реализации и ограничения у такого подхода?
Как ты можешь открыть file stream в binary mode на C++?
Почему я не могу открыть файл, который находится в другой папке, типа "../test.dat"?
Как можно предотвратить отображение ввода пользователя на экране, когда нажимаются клавиши?
Напиши функцию, которая берёт unsigned integer и переводит его в двоичное представление, показывая каждый бит как 0 или 1. Функция должна вывести десятичное значение, потом его двоичный эквивалент, со спросами через каждые 8 бит для удобства. Ещё объясни альтернативный подход, используя целочисленное деление на 2, и скажи, почему там нужна stack структура данных.
Как конвертировать integer в string в C++ используя класс stringstream?