Задачи и тесты по программированию | proghub
2.42K subscribers
655 photos
16 videos
23 files
915 links
Публикуем задачи и вопросы для подготовки к собесу.

Сотрудничество: @cyberJohnny
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
IT work - актуальные вакансии и проекты для программистов всех уровней

🧠 Machine learning Jobs - вакансии Машинное обучение, работа с данными, аналитика.

🦫 Golang jobs - работа для Golang разрработчиков

🐍 Python Jobs - работа для Python программистов

☕️ Java Jobs - вакансии для java программистов

📱JS jobs - Javascrpt вакансии

🔥 English it - прокачай английский бесплатно для получения лучшего рабочего оффера.
Рассмотрим две реализации std::make_unique. В каких из трёх случаев контент сконструированных объектов a и b будет разный?
Anonymous Quiz
26%
1
29%
2
26%
3
18%
Ни в одном
👆Пояснение к предыдущему вопросу

👨🏻‍💻 Правильный ответ -- только в первом случае. a создаст объект из пяти шестёрок, а b будет равен {5, 6}. Так происходит из-за list-init initialization.

Во втором случае объект b будет равен просто {"a", "b"}. Объект a мог быть ошибкой, если бы типы Args&&... вывелись бы как указатели на char*, тогда мог бы сработать конструктор от двух указателей но шаблоны выводятся как const char(&)[2] и поэтому этот конструктор не срабатывает. То есть этот пример не скомпилируется и не является правильным ответом.

В третьем примере дефолтные конструкторы сделают одно и тоже.

Задачи и тесты по программированию | proghub
👆Пояснение к предыдущему вопросу

👨🏻‍💻 Мы кидаем SpecialException. Оно унаследовано от GeneralException, но принимается по значению, поэтому динамический тип e будет GeneralException, не SpecialException. В С++ community такой эффект называют ещё slicing.

Мы должны принимать exception по ссылке catch (GeneralException& e), тогда динамический тип будет SpecialException, и программа выведет S.

Задачи и тесты по программированию | proghub
👆Пояснение к предыдущему вопросу

👨🏻‍💻 Казалось бы, мы проинициализировали stream строкой "a" и сначала выведем "a", потом добавим к стриму "b" и выведем "ab" и в итоге должно быть "aab", но нет.

stringstream содержит в себе позицию буффера. И при дефолтном конструкторе от строки, он будет нулём.

operator<< перезаписывает следующую позицию в буффере и поэтому во втором cout выведется b

Чтобы это починить, можно написать так:

std::stringstream ss("a", std::ios_base::out|std::ios_base::ate);
Поэтому многими стайлгайдами запрещено использование stringstream.

Задачи и тесты по программированию | proghub
Имеется кортеж вида T = (4, 2, 3). Какая из операций приведёт к тому, что имя T будет ссылаться на кортеж (1, 2, 3)?
Anonymous Quiz
22%
T[0] = 1
17%
T = (1) + T[1:]
41%
T = (1,) + T[1:]
20%
T.startswith(1)