Что гарантирует концепт std::sized_sentinel_for?
Anonymous Quiz
21%
Что разность итератора и sentinel вычислима за O(1)
12%
Что sentinel хранит количество оставшихся элементов
35%
Что диапазон имеет фиксированный размер на этапе компиляции
22%
Что sentinel совпадает по типу с итератором диапазона
11%
Что итератор поддерживает произвольный доступ к элементам
Forwarded from Библиотека задач по C++ | тесты, код, задания
🧩 Задача на выходные: правильная ли это BST?
Классическая ловушка на собеседованиях. Этот код проверяет BST неправильно:
Для дерева:
Функция вернёт true. Но это не BST!
✏️ Объясни баг и перепиши функцию корректно.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Классическая ловушка на собеседованиях. Этот код проверяет BST неправильно:
bool isValidBST(TreeNode* node) {
if (!node) return true;
if (node->left && node->left->val >= node->val) return false;
if (node->right && node->right->val <= node->val) return false;
return isValidBST(node->left) && isValidBST(node->right);
}
Для дерева:
5
/ \
1 4
/ \
3 6
Функция вернёт true. Но это не BST!
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое "aggregate initialization" и как изменилось в C++20/23?
Anonymous Quiz
25%
Инициализация через список инициализаторов std::initializer_list
4%
Инициализация массивов встроенных типов
7%
Механизм инициализации базовых классов через super{}
61%
Прямая инициализация полей через {} без конструктора
4%
Автоматическая генерация конструкторов компилятором
Какова роль препроцессора в компиляции C++?
Anonymous Quiz
4%
Генерирует машинный код из AST дерева
1%
Проверяет типобезопасность программы
3%
Распределяет память под глобальные переменные
91%
Обрабатывает директивы # до начала компиляции
1%
Связывает объектные файлы в исполняемый файл
Что означает [[no_unique_address]] для членов класса?
Anonymous Quiz
9%
Запрещает создание нескольких объектов одного класса
7%
Запрещает выравнивание члена по границе слова
48%
Разрешает двум членам иметь одинаковый адрес при any условии
30%
Позволяет пустым членам занимать 0 байт в памяти
5%
Помечает член как не влияющий на sizeof
Что правильно описывает inline переменную (C++17)?
Anonymous Quiz
33%
Переменная вставляется в каждую единицу трансляции отдельно
33%
Переменная имеет единственный экземпляр во всей программе
4%
Переменная автоматически становится constexpr
26%
inline для переменных недопустим, только для функций
5%
Переменная помещается в стек, а не в BSS/data-сегмент
При каком условии компилятор перестаёт неявно генерировать конструктор копирования?
Anonymous Quiz
35%
Если в классе объявлен любой конструктор с параметрами
30%
Если в классе объявлен деструктор или move-конструктор
9%
Если в классе есть хотя бы одно поле с модификатором const
15%
Если базовый класс не имеет конструктора по умолчанию
11%
Если в классе объявлен operator==
Сколько пользовательских преобразований компилятор может применить в одной неявной цепочке?
Anonymous Quiz
44%
Неограниченное количество, пока типы совместимы
24%
Ровно одно пользовательское преобразование
4%
Не более двух пользовательских преобразований
11%
Три: одно через конструктор, одно через оператор, одно встроенное
17%
Зависит от уровня оптимизации компилятора
Чем sentinel принципиально отличается от итератора конца?
Anonymous Quiz
12%
Sentinel всегда является указателем на нулевой элемент
35%
Sentinel может иметь другой тип, нежели итератор
22%
Sentinel обязательно хранит состояние диапазона внутри
18%
Sentinel не может использоваться в алгоритмах стандартной библиотеки
13%
Sentinel всегда является константным объектом диапазона
Forwarded from Библиотека задач по C++ | тесты, код, задания
🔥 Найди баг: копирование строки сломало указатель
‼️ Задача: найди баг (если он есть), объясни, почему он связан с SSO, и предложи исправление.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
#include <string>
#include <iostream>
struct Token {
std::string value;
const char* ptr;
Token(const std::string& s) : value(s), ptr(value.data()) {}
};
int main() {
Token t1("hi");
Token t2 = t1; // копируем
std::cout << t1.ptr << "\n"; // "hi"
std::cout << t2.ptr << "\n"; // ???
}
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Чем std::unique_lock отличается от std::lock_guard?
Anonymous Quiz
18%
std::unique_lock не освобождает мьютекс автоматически
17%
std::lock_guard поддерживает try_lock, а unique_lock нет
3%
std::unique_lock требует рекурсивного мьютекса
56%
std::unique_lock позволяет отложенный захват, ручное освобождение и перемещение
6%
std::unique_lock работает только с std::condition_variable_any
❤1
Что такое «expression templates» как техника построения DSL в C++?
Anonymous Quiz
18%
Механизм компиляции строк с выражениями C++ во время выполнения самой программы
36%
Техника, откладывающая вычисления до присваивания через дерево типов без временных объектов
6%
Специальный синтаксис для встраивания SQL-запросов непосредственно в C++-код
24%
Способ передачи лямбда-выражений в качестве нетиповых шаблонных параметров класса
15%
Макросы препроцессора, раскрывающиеся в сложные математические выражения кода
Что такое «phantom types» и как они применяются для создания DSL в C++?
Anonymous Quiz
39%
Типы-заглушки без тела, предотвращающие полную специализацию шаблонного класса
5%
Указатели на удалённые объекты, которые компилятор автоматически помечает как невалидные
21%
Анонимные структуры без имени, видимые исключительно внутри одной конкретной функции
22%
Шаблонные параметры, кодирующие ограничения в системе типов, не занимая памяти объекта
12%
Типы, автоматически удаляемые компилятором при отсутствии явных экземпляров в коде
Что вернёт std::filesystem::path("/foo/./bar/../baz").lexically_normal()?
Anonymous Quiz
10%
/foo/./bar/../baz
58%
/foo/baz
23%
/foo/bar/baz
5%
baz
5%
/baz
Для каких операторов оно гарантировано «короткое замыкание» (short-circuit evaluation)?
Anonymous Quiz
11%
Только для &&
3%
Только для ||
11%
Для &&, ||, ?: и оператора запятой ,
30%
Для всех логических операторов включая перегруженные
45%
Для &&, || и тернарного оператора ?:
🤔4
Что такое «частичное упорядочивание» шаблонов функций и когда компилятор его применяет?
Anonymous Quiz
14%
Сортировка шаблонов по количеству параметров для ускорения компиляции
10%
Оптимизация компилятора для инлайнинга шаблонных функций
20%
Порядок инстанциирования шаблонов в единицах трансляции
48%
Механизм выбора наиболее специализированного шаблона при разрешении перегрузки
8%
Механизм ограничения рекурсивных шаблонов через SFINAE
Можно ли использовать концепт рекурсивно — так, чтобы он ссылался на самого себя?
Anonymous Quiz
10%
Да, рекурсия разрешена и автоматически трактуется как false при достижении предела
29%
Да, но только если рекурсия конечна и завершается через отдельную специализацию
6%
Да, но только через вспомогательный шаблонный класс, не напрямую в теле концепта
50%
Нет, стандарт C++20 явно запрещает рекурсивные концепты
5%
Поведение зависит от реализации компилятора, стандарт не регламентирует это
🚀 Челендж на выходных: полный ленивый pipeline
Собери всё вместе: напиши ленивый pipeline обработки данных без лишних копий и временных контейнеров.
✏️ Задача: реализуй весь pipeline. Можно использовать
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Собери всё вместе: напиши ленивый pipeline обработки данных без лишних копий и временных контейнеров.
// Дано: файл с числами (по одному на строку)
// Задача: найти сумму квадратов чётных чисел из первых 1000 строк
// Наивное решение (неленивое):
// 1. Загрузить всё в vector<int> — O(n) память
// 2. Отфильтровать чётные — ещё O(n)
// 3. Возвести в квадрат — ещё O(n)
// 4. Просуммировать первые 1000 — O(n)
// Ленивое решение должно:
// - Читать файл построчно (не грузить всё)
// - Фильтровать на лету
// - Трансформировать на лету
// - Останавливаться после 1000 элементов
// Скелет:
auto result = lines_from_file("data.txt") // ленивый итератор строк
| parse_ints() // string -> optional<int>
| filter_valid() // убрать nullopt
| filter([](int x){ return x % 2 == 0; }) // только чётные
| transform([](int x){ return x * x; }) // квадрат
| take(1000) // первые 1000
| sum(); // свёртка
// TODO: реализуй каждый адаптер в цепочке
C++20 Ranges или написать адаптеры вручную. Ключевое требование — в любой момент в памяти хранится не более одного элемента из файла.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Почему в шаблонном классе обращение к члену базового класса через this->member иногда обязательно?
Anonymous Quiz
4%
Это обходной путь конкретного бага в GCC, в Clang такая запись не нужна
10%
this-> принудительно отключает виртуальный диспатч, ускоряя вызов метода
10%
Стандарт явно требует this-> перед всеми членами внутри шаблонного класса
45%
Без this-> возникает неопределенность при наличии множественного наследования класса
31%
Без this-> компилятор ищет имя на первой фазе, не видя зависимых базовых классов