Библиотека собеса по C++ | вопросы с собеседований
Открыть в Telegram
Вопросы с собеседований по C++ и ответы на них. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/9ccf302b Для обратной связи: @proglibrary_feeedback_bot
Больше4 598
Подписчики
-124 часа
-107 дней
-5330 день
Архив постов
🚀 Челендж на выходных: полный ленивый pipeline
Собери всё вместе: напиши ленивый 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: реализуй каждый адаптер в цепочке
✏️ Задача: реализуй весь pipeline. Можно использовать C++20 Ranges или написать адаптеры вручную. Ключевое требование — в любой момент в памяти хранится не более одного элемента из файла.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчикМожно ли использовать концепт рекурсивно — так, чтобы он ссылался на самого себя?
Что такое «частичное упорядочивание» шаблонов функций и когда компилятор его применяет?
Для каких операторов оно гарантировано «короткое замыкание» (short-circuit evaluation)?
Что вернёт std::filesystem::path("/foo/./bar/../baz").lexically_normal()?
Что такое «phantom types» и как они применяются для создания DSL в C++?
Что такое «expression templates» как техника построения DSL в C++?
Чем std::unique_lock отличается от std::lock_guard?
Repost from Библиотека задач по 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"; // ???
}
‼️ Задача: найди баг (если он есть), объясни, почему он связан с SSO, и предложи исправление.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчикЧем sentinel принципиально отличается от итератора конца?
Сколько пользовательских преобразований компилятор может применить в одной неявной цепочке?
При каком условии компилятор перестаёт неявно генерировать конструктор копирования?
Что правильно описывает inline переменную (C++17)?
Что означает [[no_unique_address]] для членов класса?
Какова роль препроцессора в компиляции C++?
Что такое "aggregate initialization" и как изменилось в C++20/23?
Repost from Библиотека задач по C++ | тесты, код, задания
🧩 Задача на выходные: правильная ли это BST?
Классическая ловушка на собеседованиях. Этот код проверяет 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++ разработчика
#междусобойчикЧто гарантирует концепт std::sized_sentinel_for?
Какой из перечисленных элементов относится к области видимости файла (file scope)?
