Простая задачка на Си++
2020-08-02 04:29Сложить два целых числа, вернуть целое. Породить исключение в случае арифметического переполнения.
Удивительно, сколько народу обламывается на этой задачке.int add(int a, int b);

no subject
Date: 2020-08-03 08:43 (UTC)Кто все эти безумные люди, которые рассуждают про unsigned, какие-то там детали реализации каких-то там конкретных версий языков программирования, про битовые операции, 2's complement представление? Какая нахер разница? Машина может быть хоть троичная симметричная, и не иметь понятия об "unsigned".Пятикласснику должно быть понятно, что достаточно знать только MAX и MIN для данного типа операндов, и делается это так: нарочно не на языке программирования, а на естественном языке.
1. Если хотя бы одно из чисел равно нулю или числа с разным знаком, то складываем без опаски.
2. Если оба числа положительные, то вычтем из MAX одно из них. Если разность меньше другого числа, то бросаем исключение.
3. Если оба числа отрицательные, то вычтем из MIN одно из них. Если разность больше другого числа, то бросаем исключение.
4. Складываем числа, возвращаем результат.
По-хорошему, спрашивать надо про
template< typename T > int add(const T & a, const T & b);и вопрос тогда будет про type traits (который синтаксис я так и не запомнил).no subject
Date: 2020-08-03 19:14 (UTC)Не, тепмплейты на собеседовании это уже издевательство. :) В такую контору я бы и сам не пошёл.
no subject
Date: 2020-08-03 23:30 (UTC)А уж если мы говорим про язык Си, то мы обычно говорим об этом не для красоты, а для того чтоб писать эффективный и быстрый код. Потому что если вам не нужен такой код, то зачем вам Си? Берите Питон или JS какой-нибудь в самом деле. Ну а если вам нужен эффективный и быстрый код, то вам никогда-никогда не следует использовать вышеуказанный алгоритм для пятиклассников. Потому что он медленный, плохо-читается,
в нем легко сделать ошибку, которую потом будет трудно найти.
Но спасибо за такой вариант. Я еще раз убедился, что даже в мире программистов на Си есть миры, которые не просто слегка отличаются, а не соприкасаются друг с другом вообще. Какая уж там политика может быть, когда люди не просто разные бывают, а многие прямо-таки абсолютно чужды друг другу.
no subject
Date: 2020-08-04 05:03 (UTC)Условия интервьюшной задачки нужно принимать как данность.
Смешивать два ремесла индустриального программирования и прохождения интервью есть тьма искусников. Я не из их числа.