Предлагаю делиться техническими вопросами с собеседований.
Раньше были примеры и обсуждения.
Сейчас предлагаю немного структурировать иерархически сообщения.
Есть корень — это сообщение. В детях делаем новое сообщение с заданием/решением/обсуждение:
Корень
-Набор 20 задач с финтеха
--Обсуждение
---....
-Задача на наследование с вызовом виртуальных функций из базового класса
--Обсуждение
и т.д.
Стартую своими.
Сохранял как в текстовом, так и в графическом виде. Где-то есть решения.
По поводу первого задания есть сомнения, что пункты 2 и 3 равнозначны. const указывает на константность того, что стоит слева от него, а тут в одном случае значение, а в другом указатель.
Здравствуйте, Максим, Вы писали:
A>>На решение был 1 час в домашней обстановке.
М>По поводу первого задания есть сомнения, что пункты 2 и 3 равнозначны. const указывает на константность того, что стоит слева от него, а тут в одном случае значение, а в другом указатель.
видимо, имелось в виду 3 и 1
или пункты перепутаны, потому как const T * -- указатель на кост.объект
Безумный код иногда меня ставит в тупик: A>Image: fm1.png
Вызов виртуального метода из не виртуального деструктора...
По стандарту (11.10.4/4) должен быть вызван метод A::printFromDestructor(), значит ответ: ~A, а не ~B, как ошибочно указано в комментарии.
Здравствуйте, night beast, Вы писали:
NB>видимо, имелось в виду 3 и 1 NB>или пункты перепутаны
Так ответы бывают правильные;
те, которые ожидает получить интервьюер;
те, которые даёт кандидат.
В идеале все три должны совпадать. Но так бывает не всегда.
Как я понимаю, на скриншотах avovana приводит ответы из третьей категории
Re[3]: Задача на наследование с вызовом виртуальных функций
Здравствуйте, Patalog, Вы писали:
BFE>>По стандарту (11.10.4/4) должен быть вызван метод A::printFromDestructor(), значит ответ: ~A, а не ~B, как ошибочно указано в комментарии. P>Это ж вроде UB — удаление объекта по указателю на базу, а деструктор не виртуальный?
Хмм. Действительно:
С++14
5.3.5/3
In the first alternative (delete object), if the static type of the object to be deleted is different from its dynamic type, the static type shall be a base class of the dynamic type of the object to be deleted and the static type shall have a virtual destructor or the behavior is undefined. In the second alternative (delete array) if the dynamic type of the object to be deleted differs from its static type, the behavior is undefined.
С++20
7.6.2.8/3
In a single-object delete expression, if the static type of the object to be deleted is different from its dynamic type and the selected deallocation function (see below) is not a destroying operator delete, the static type shall be a base class of the dynamic type of the object to be deleted and the static type shall have a virtual destructor or the behavior is undefined. In an array delete expression, if the dynamic type of the object to be deleted differs from its static type, the behavior is undefined.
помню позвал хр прособеседоваться в их hft ко,
делать было нечего, дай попробую
все вопросы были фигня, но на один я задумался и ответил что в голову пришло, только что бы дальше двигаться и услышать другие
вопрос с hft ко,
— есть двух мерная матрица знаковых целых чисел(кажется целых вот точно не помню этот момент)
и у нас есть алгоритм, который суммирует сначала по вертикали а потом по горизонтали складывает вертикальные суммы
и есть алгоритм который суммирует сначала по горизонтали а потом по вертикали складывает горизонтальные суммы
так вот, будет ли всегда одинаковыми эти суммы в двух алго?
я подумал что знак по идеи может прыгать и в переносе он не участвует
значит суммы могут быть разными
наверное в фин области это сакральные знания, жаль мне в моих областях(а их много) за 10+ лет не понадобились
так что увы если ошибся с ответом, но и мне правильного ответа так и не сказали
Здравствуйте, reversecode, Вы писали:
R>вопрос с hft ко, R>- есть двух мерная матрица знаковых целых чисел(кажется целых вот точно не помню этот момент) R>и у нас есть алгоритм, который суммирует сначала по вертикали а потом по горизонтали складывает вертикальные суммы R>и есть алгоритм который суммирует сначала по горизонтали а потом по вертикали складывает горизонтальные суммы
R>так что увы если ошибся с ответом, но и мне правильного ответа так и не сказали
Если с плавающей точкой, то может, т.к. точка может необратимо прыгать вперед на разряды и тогда мелкие слагаемые просто будут игнорироваться.
R>- есть двух мерная матрица знаковых целых чисел(кажется целых вот точно не помню этот момент) R>и у нас есть алгоритм, который суммирует сначала по вертикали а потом по горизонтали складывает вертикальные суммы R>и есть алгоритм который суммирует сначала по горизонтали а потом по вертикали складывает горизонтальные суммы R>так вот, будет ли всегда одинаковыми эти суммы в двух алго?
Для целых — всегда одинаковая, так как равна сумме всех элементов.
Достаточно представить себе двумерный массив как линейный по строкам.
То ли ты складываешь подряд, то ли через n — общая сумма от этого не меняется.
Для дробных, как тут уже сказали, ошибки точности могут быть из-за слишком большой разницы в числах.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
R>>- есть двух мерная матрица знаковых целых чисел(кажется целых вот точно не помню этот момент) LVV>Для целых — всегда одинаковая, так как равна сумме всех элементов.
Это в теории, а на практике может быть UB при переполнении для знаковых целых. Пример
Здравствуйте, reversecode, Вы писали:
R>помню позвал хр прособеседоваться в их hft ко, R>делать было нечего, дай попробую
R>все вопросы были фигня, но на один я задумался и ответил что в голову пришло, только что бы дальше двигаться и услышать другие
R>вопрос с hft ко, R>- есть двух мерная матрица знаковых целых чисел(кажется целых вот точно не помню этот момент) R>и у нас есть алгоритм, который суммирует сначала по вертикали а потом по горизонтали складывает вертикальные суммы R>и есть алгоритм который суммирует сначала по горизонтали а потом по вертикали складывает горизонтальные суммы R>я подумал что знак по идеи может прыгать и в переносе он не участвует R>значит суммы могут быть разными R>наверное в фин области это сакральные знания, жаль мне в моих областях(а их много) за 10+ лет не понадобились R>так что увы если ошибся с ответом, но и мне правильного ответа так и не сказали
Ну там по горизонтали, например, может быть переполнение, а по вертикали будут соотв. отрицательные
числа. Как вариант.
А я вот задумался -- а double или float могут переполняться, или просто точность потеряют?
// Требуется реализовать класс индекса, для хранения данных по 3-м вложенным текстовым ключам
//
// index["key1"]["key2"]["key3"] = data;
//
// в последнем уровне индекса содержатся данные объект класса Data
//
// Пример заполнение данных по ключам выглядит так:
//
// Data data1, data2;
// Index idx;
// idx.set("key1").set("key2").set("key3").set(data1);
// idx.set("key1.1").set("key2.1").set("key3.1").set(data2);
//
// Пример доступа к данным по ключам:
//
// data1 = idx.get("key1").get("key2").get("key3").get();
//
// в реализации предусмотреть раcширение глубины индексовclass Data {
};
class Index {
};
int main()
{
Data data1, data2, data3;
Index idx;
// добавление в индекс
//idx.set("key1").set(data1);
idx.set("key1").set("key2").set("key3").set(data1);
idx.set("key1.1").set("key2.1").set("key3.1").set(data2);
idx.set("key1.2").set("key2.2").set("key3.2").set(data3);
// получение данных из индекса
data1 = idx.get("key1").get("key2").get("key3").get();
data2 = idx.get("key1.1").get("key2.1").get("key3.1").get();
data3 = idx.get("key1.2").get("key2.2").get("key3.2").get();
return 0;
}