Это, скажем так, параноидальный уровень обобщенности. Этот вариант учитывает, что operator+ может быть перегружен пользователем и иметь побочные эффекты и самую безумную семантику. Например, модифицировать операнды.
Если считать, что операция сложения — это всегда rvalue без каких-либо побочных эффектов и гарантирует неизменность операндов, тогда всё упрощается, конечно:
подходит, т.к. ответ зависит от компилятора и опций оптимизации (из-за UB при переполнении знаковых целых).
GCC этим пользуется, у clang/msvc пока вывод "ожидаемый".
Re[7]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, rg45, Вы писали:
R>Я больше скажу, если даже исправить эту ошибку, то ничего в том примере не изменится. isM_D_C_And_Way как возвращала всегда false, так и будет возвращать. Независимо от состояния макроса M_D_C.
В этом примере — да, а в реальности Mode читается из файла.
Коллеги накидайте плиз задачек для собеза по Си++. Нужно провести скрининг кандидатов примерно на 30 минут. Я никогда не проводил, да и на плюсах давненько не писал.
Основные требования: стандарт 2003 год — это кодовая база с которой кандидату придется работать.
Примерно, как я себе это представляю: мы с кандидатом открываем онлайн редактор (с совместным доступом к коду), там список задачек в виде кода и вопроса: what is wrong with this code? How to fix? Таким образом проверяются различные аспекты языка и статистически выбираем лучшего кандидата который закроет наибольшее кол-во. К примеру,
============================================
Problem 1: what is wrong here? Plz fix.
#include <iostream>
using namespace std;
int main() {
int* arr = new int(5);
delete[] arr;
return 0;
}
============================================
и т.д.
Если у вас есть какие-нибудь подобного рода перлы, то буду очень благодарен.
Re[4]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, sergii.p, Вы писали:
SP>Здравствуйте, alpha21264, Вы писали:
A>>Ну с первой задачей я справлюсь. A>>А про шаблоны честно скажу, что не умею. A>>Откажете?
SP>я вообще никогда не отказываю. Я говорю уровень кандидата. А уже руководство принимает решение: соответствует ли уровень запросам. Но вообще если senior говорит, что в шаблоны не умеет, то большой вопрос почему он считает себя сеньёром.
Наверное, потому что компьютер, с которого ты написал своё сообщение, сделан с помощью моей программы...
И шаблоны для этого не понадобились, потому что шаблоны — зло.
Вот представь себе, что программы живут долго, в некоторых из них встречаются строчки типа #ifdef VAX_VMS,
и вдруг там встречается кусок кода, с навороченными шаблонами, и никто (включая автора) не знает, как это работает.
Течёт вода Кубань-реки куда велят большевики.
Re[7]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, C0x, Вы писали:
C0x>>Если у вас есть какие-нибудь подобного рода перлы, то буду очень благодарен. BFE>
Здравствуйте, Hоmunculus, Вы писали:
H>Чтоб нули вам не считать — подсказка — там миллиард
Чтоб нули не считать, следует использовать современную запись:
for (int i = 0; i < 10; i++)
std::cout << 1'000'000'000*i << endl;
И каждый день — без права на ошибку...
Re[9]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, C0x, Вы писали:
C0x>>Если у вас есть какие-нибудь подобного рода перлы, то буду очень благодарен.
PD>У меня нет, но поиск дал вот это
PD>http://www.gotw.ca/gotw/
А он открывается у тебя? У меня пишет This page isn’t working
Re[3]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, C0x, Вы писали:
C0x>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Здравствуйте, C0x, Вы писали:
C0x>>>Если у вас есть какие-нибудь подобного рода перлы, то буду очень благодарен.
PD>>У меня нет, но поиск дал вот это
PD>>http://www.gotw.ca/gotw/
C0x>А он открывается у тебя? У меня пишет This page isn’t working
А сорри, видимо из-за VPN.
Re[3]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, sergii.p, Вы писали:
SP>но это если кандидат отвечает бодро и говорить особо уже не о чем. Большинству хватает первой задачи. К тому же тут всего полчаса — маловато.
Ну с первой задачей я справлюсь.
А про шаблоны честно скажу, что не умею.
Откажете?
Течёт вода Кубань-реки куда велят большевики.
Re[4]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, C0x, Вы писали:
C0x>>А он открывается у тебя? У меня пишет This page isn’t working
PD>Вполне нормально. PD>Попробуй из Инкогнито, из иного браузера, иного провайдера.
PD>Там, кстати, http, не https, может, в этом причина ?
Но лучше исходить из своих целей. Что за человек и с какими навыками нужен. От этого и выбирать задачи и вопросы. Одно дело, когда надо с нуля по архитектуре что-то делать. Другое – копипастить и поддерживать пятилетний продукт и там главное – аккуратность и не накосячить. Одно дело: числодробилка в сишном стиле, другое – асинхронный сервер и работа с базами.
Патриот здравого смысла
Re[2]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, DiPaolo, Вы писали:
DP>Есть конечно такие полезные ресурсы: DP>- https://github.com/notescs/notes/tree/main/C-CPP-OOPS-for-Interviews DP>- https://github.com/DopplerHQ/awesome-interview-questions?tab=readme-ov-file#c
DP>Но лучше исходить из своих целей. Что за человек и с какими навыками нужен. От этого и выбирать задачи и вопросы. Одно дело, когда надо с нуля по архитектуре что-то делать. Другое – копипастить и поддерживать пятилетний продукт и там главное – аккуратность и не накосячить. Одно дело: числодробилка в сишном стиле, другое – асинхронный сервер и работа с базами.
Спасибо. Там несколько этапов интервью, мне нужно для скриннига, чтобы понять что человек не просто так Си++ в резюме написал для полноты картины
Re[3]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, alpha21264, Вы писали:
A>Ну с первой задачей я справлюсь. A>А про шаблоны честно скажу, что не умею. A>Откажете?
я вообще никогда не отказываю. Я говорю уровень кандидата. А уже руководство принимает решение: соответствует ли уровень запросам. Но вообще если senior говорит, что в шаблоны не умеет, то большой вопрос почему он считает себя сеньёром.
Re[6]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, rg45, Вы писали:
R>К этому нужно ещё задавать вопрос: "что выведет эта программа:"
Вообще-то это был ответ на "Но обычно то я вижу что-то такое"
Re[9]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, kov_serg, Вы писали:
_>Внесём еще правок _>
_>#define SUM(V,Y) ((V)+(Y))
_>
_>И да для SUM(i++,i++) будут сайд эффекты.
Будет UB. В старых терминах — множественная модификация переменной между двумя точками следования. Сейчас термины уже другие (sequenced before, sequenced after, etc.), но UB никуда не делось.
R>Так норм?
ага R>Это, скажем так, параноидальный уровень обобщенности. Этот вариант учитывает, что operator+ может быть перегружен пользователем и иметь побочные эффекты и самую безумную семантику. Например, модифицировать операнды.
Параноидальный, да, но от дурака не спасает:
std::cout << sum("1234567890", 'a') << std::endl;
И каждый день — без права на ошибку...
Re[4]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, B0FEE664, Вы писали:
BFE>Да. Как и "Problem 1". BFE>Ничего интересного, кроме того, что подобный код прошёл код-ревью, компилируется, выполняется и не содержит UB.
Я больше скажу, если даже исправить эту ошибку, то ничего в том примере не изменится. isM_D_C_And_Way как возвращала всегда false, так и будет возвращать. Независимо от состояния макроса M_D_C.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, B0FEE664, Вы писали:
BFE>В этом примере — да, а в реальности Mode читается из файла.
Ну вот этот момент вносит определённую долю удивления при чтении примера. Логика примера теряется. Получается, что все эти "много букв" только ради того, чтоб труднее было найти пропущенные скобки. Возможно, имело бы смысл показать только объявление GetMode.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, C0x, Вы писали:
C0x>Коллеги накидайте плиз задачек для собеза по Си++. Нужно провести скрининг кандидатов примерно на 30 минут. Я никогда не проводил, да и на плюсах давненько не писал. C0x>Основные требования: стандарт 2003 год — это кодовая база с которой кандидату придется работать. C0x>...
Казолось бы на дворе 2025 год, уже 14 лет как есть цпп11 в современных и не очень компиляторах. Если вам нужен человек на поддержку mfc и вы такого найдёте, то это явно будет не зелёный студент а кто-то из старшего поколения. Думаю там тестовые просто не нужны, достаточно будет пообщаться.
Есть строка, в которой записаны русские слова, разделённые пробелом (кодировка utf8). Разбить все слова на слоги.
Например: "накидайте плиз задачек" -> "на-ки-дай-те плиз за-да-чек"
Re[2]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, _NN_, Вы писали:
_NN>Пожалуйста:
_NN>
_NN>void duplicate(std::vector<int>& v)
_NN>{
_NN> size_t i = 0;
_NN> size_t count = v.size();
_NN> for (auto const& e : v)
_NN> {
_NN> if (i == count)
_NN> break;
_NN> v.push_back(e);
_NN> i++;
_NN> }
_NN>}
_NN>
Хорошая задачка. Тут есть, о чём поговорить. Помимо исправления проблемы, можно предложить отрефакторить и обобщить на несколько типов контейнеров и произвольный тип элемента.
--
Справедливость выше закона. А человечность выше справедливости.
Re[3]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, rg45, Вы писали:
R>Хорошая задачка. Тут есть, о чём поговорить. Помимо исправления проблемы, можно предложить отрефакторить и обобщить на несколько типов контейнеров и произвольный тип элемента.
А ещё справшиваем, почему же не реализован контейней с итератором так, чтобы этот код мог бы всегда работать, ведь это несложная задача.
Здравствуйте, kov_serg, Вы писали: _>Есть строка, в которой записаны русские слова, разделённые пробелом (кодировка utf8). Разбить все слова на слоги. _>Например: "накидайте плиз задачек" -> "на-ки-дай-те плиз за-да-чек"
Интересная задачка. Разве есть какой-то формальный признак к какой гласной лепить согласную? Например, слово "паркет", это "пар-кет", "па-ркет", или "парк-ет"?
Re[3]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, Went, Вы писали:
W>Интересная задачка. Разве есть какой-то формальный признак к какой гласной лепить согласную? Например, слово "паркет", это "пар-кет", "па-ркет", или "парк-ет"?
1. Слог образует гласный звук:
сте-на, ба-ран (с-тена, бара-н — неправильно).
2. Слог начинается с согласного, который стоит перед гласной:
мо-ло-ко, ко-ра (мол-око, кор-а — неправильно).
3. Буквы ь, ъ (которые не означают звуков), й нельзя отрывать от предыдущего слога:
лай-ка, конь-ки, подъ-езд (ла-йка, кон-ьки, под-ъезд — неправильно).
4. Глухие согласные отходят к следующему слогу:
то-чка, мо-шка (в традиционной школе верно также: точ-ка, мош-ка).
5. Звонкие согласные [й], [р], [р’], [л], [л’], [м], [м’], [н], [н’] с последующим шумным согласным отходят к предыдущему слогу:
кор-ка, бул-ка (в традиционной школе верно также: ко-рка, бу-лка).
6. Согласные буквы, образующие один звук, нельзя разносить в разные слоги. Один звук образуют сочетания зж [ж:], тся, ться [ц:].
у-е-зжать, но-си-тся, де-ла-ться (в традиционной школе верно также: у-ез-жать, но-сит-ся, де-лать-ся).
7. Сдвоенные согласные в середине слова относят к следующему слогу:
кла-ссный, хо-ккей, те-ннис (в традиционной школе верно также: клас-сный, хок-кей, тен-нис).
Слоги делятся по восходящей звучности. Каждый звук имеет звучность от 1 до 4: 4 — гласные, 3 — сонорные, 2 — шумные звонкие, 1 — шумные глухие.
8. Конец слога должен быть с максимальной звучностью (цифра 4):
ко-ле-со (14-34-14), ко-мпью-тер (14-31 4-143).
9. Сонорные между гласными относят к следующему слогу: ка-рман (14-3343). Допускается вариант: кар-ман (ошибки не будет).
Если есть сочетание сонорного и шумного, то раздел ставится между ними: пар-та (143-14).
10. Й всегда остается с предыдущим слогом: тай-на (143-34).
W>Интересно, конечно, не знал про такие правила, хотя и там полно исключений. Но, все же, это скорее филологическая задача, нежели на знание С++.
Тут важен подход к задаче, а не само решение
Re[6]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, kov_serg, Вы писали:
W>>Интересно, конечно, не знал про такие правила, хотя и там полно исключений. Но, все же, это скорее филологическая задача, нежели на знание С++. _>Тут важен подход к задаче, а не само решение
Дайте мне поручение, а уж особым я его и сам сделаю. (С) Специалист по особым поручениям.
--
Справедливость выше закона. А человечность выше справедливости.
Re[4]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, _NN_, Вы писали:
_NN>Здравствуйте, rg45, Вы писали:
R>>Хорошая задачка. Тут есть, о чём поговорить. Помимо исправления проблемы, можно предложить отрефакторить и обобщить на несколько типов контейнеров и произвольный тип элемента.
_NN>почему же не реализован контейней с итератором так, чтобы этот код мог бы всегда работать
так std::list вроде не инвалидирует ссылки. Или вопрос только касательно std::vector?
Re[5]: Накидайте плиз задачек на знание языка Си++
Здравствуйте, sergii.p, Вы писали:
SP>Здравствуйте, _NN_, Вы писали:
_NN>>Здравствуйте, rg45, Вы писали:
R>>>Хорошая задачка. Тут есть, о чём поговорить. Помимо исправления проблемы, можно предложить отрефакторить и обобщить на несколько типов контейнеров и произвольный тип элемента.
_NN>>почему же не реализован контейней с итератором так, чтобы этот код мог бы всегда работать
SP>так std::list вроде не инвалидирует ссылки. Или вопрос только касательно std::vector?
Всё правильно. Заодно затрагивается почему и где уместней vector.
Вообще можно и для вектора сделать такие итераторы без инвалидации, но такой вектор кхе-кхе никто особо бы не использовал.
Ну и конечно вопрос на эту тему почему
Здравствуйте, kov_serg, Вы писали:
_>Есть строка, в которой записаны русские слова, разделённые пробелом (кодировка utf8). Разбить все слова на слоги. _>Например: "накидайте плиз задачек" -> "на-ки-дай-те плиз за-да-чек"
Вроде это не такая уж и тривиальная вещь, разбить русские слова на слоги.
Re[10]: Накидайте плиз задачек на знание языка Си++