Библиотека собеса по C++ | вопросы с собеседований
19.4K subscribers
454 photos
5 videos
256 links
Вопросы с собеседований по C++ и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/9ccf302b

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Какой умный указатель предоставляет исключительное владение ресурсом без подсчёта ссылок?
Anonymous Quiz
3%
std::shared_ptr
7%
std::weak_ptr
4%
std::auto_ptr
85%
std::unique_ptr
1%
std::observer_ptr
1
‼️ Задача на выходные

Этот код содержит баг. Необходимо найди его:

#include <ranges>
#include <vector>
#include <iostream>
#include <algorithm>

int main() {
std::vector<int> vec = { 5, 3, 1, 4, 2 };

auto sorted_view = vec
| std::views::transform([](int x) { return x; });

std::ranges::sort(sorted_view);

for (auto v : sorted_view) {
std::cout << v << " ";
}
}


Подсказка: views::transform возвращает upvalue. Можно ли сортировать такой view?

Отсортируется ли vec? Если нет — какая ошибка компиляции и почему?


📍Навигация:
ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой тип исключения рекомендуется использовать как базовый для пользовательских исключений в C++?
Anonymous Quiz
78%
std::exception
0%
std::bad_alloc
6%
std::logic_error
1%
std::system_error
16%
std::runtime_error
Какой атрибут Clang используется для обозначения того, что возвращаемое значение функции зависит от времени жизни параметра?
Anonymous Quiz
2%
[[clang::noescape]]
10%
[[clang::ownership]]
1%
[[gsl::Pointer]]
86%
[[clang::lifetimebound]]
1%
[[clang::returns_nonnull]]
🤔1
Какой из перечисленных контейнеров НЕ поддерживает views::reverse?
Anonymous Quiz
2%
std::vector<int>
16%
std::deque<int>
12%
std::list<int>
55%
std::forward_list<int>
15%
std::array<int, 5>
‼️ Задача на выходные: lock_guard

Проведи ревью кода и найди проблему (если она есть😉).

#include <mutex>
#include <thread>
#include <vector>
#include <iostream>

std::mutex mtx;
std::vector<int> data;

void producer() {
for (int i = 0; i < 100; ++i) {
std::lock_guard<std::mutex> lock(mtx);
data.push_back(i);
}
}

void consumer() {
while (true) {
std::lock_guard<std::mutex> lock(mtx);
if (data.empty()) {
// Ждём данные...
std::this_thread::sleep_for(
std::chrono::milliseconds(10));
continue;
}
std::cout << data.back() << "\n";
data.pop_back();
}
}


Вопрос: что не так с consumer()? Почему lock_guard здесь — плохой выбор и как это исправить?


📍Навигация:
ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой из перечисленных инструментов является статическим анализатором кода для C++?
Anonymous Quiz
19%
Valgrind
5%
GDB
63%
PVS-Studio
5%
Perf
8%
strace