Функционирует при финансовой поддержке Федерального агентства по печати и массовым коммуникациям (Роспечать)

БезопаснOSть

Попробуй себя в роли разработчика безопасной операционной системы

Что роднит бытовые приборы и технику, аквариумы и дорогие автомобили? Ответ очень прост: все перечисленное может быть, с одной стороны, «умным», с другой — уязвимым ко взлому. Хотя полностью избавиться от уязвимостей не выйдет, кое-что сделать все-таки можно. Например, создать кибериммунную среду, которая остается безопасной, даже если часть компонентов оказывается скомпрометирована. Для тех, кому интересно поучаствовать в создании такой среды, N + 1 вместе с «Лабораторией Касперского» составили тест на знание C++.

Те, кто пройдет его на отлично, получат шанс заняться развитием операционной системы KasperskyOS и разработкой продуктов на ее основе. Эта операционная система, построенная на микроядерной архитектуре, обеспечивает надежную изоляцию и независимый контроль взаимодействий между доменами безопасности, что позволяет разрабатывать решения, которые by-design защищены от киберугроз.

Задача 1

Начнем с простого. Что выведет данная программа?

#include <iostream>

int main(int argc, char **argv) {
   std::cout << 1u - 2;
   return 0;
}
Задача 2

Прочитайте код ниже. Функции передают: a = {1, 2, 3, 4}, b = {4, 3, 2, 1}, N = 4. В результате значение b изменилось на {24, 12, 8, 6}. Что следует написать вместо abracadabra, чтобы алгоритм выдал такой результат?

int F(int *a, int *b, int N) {
   int foo = 1;
   for (int i = 0; i < N; ++i) {
       b[i] = foo;
       foo *= a[i];
   }
   // abracadabra
   for (int i = N - 1; i >= 0; --i) {
       b[i] *= foo;
       foo *= a[i];
   }
}
Задача 3

Что выведет “магическая” программа? (Если считаете, что произойдет ошибка, напишите в поле ответа слово “ERROR”)

#include <iostream>

int main() {
   int a[] = {1, 2, 3, 4, 5};
   std::cout << (1 + 3)[a] - (a - 1)[2];
   return 0;
}
Задача 4

Какую строку следует удалить, чтобы программа выполнялась без ошибок?

#include <iostream>

class A {
public:
   int a;

   A(int a = 1) : a(a) {}

   ~A() {
       throw 3;
       std::cout << 3;
   }

};

std::ostream &operator<<(std::ostream &out, A& a) {
   return out << a.a;
}

int main(int argc, const char *argv[]) {
   try {
       A a;
       throw 2;
   } catch (int a) {
       std::cout << a;
   }
}
Предоставляя адрес электронной почты, вы принимаете условия соглашения о персональных данных.

«Лаборатории Касперского» прямо сейчас нужны классные профессионалы, чтобы строить безопасный мир. И для классных профессионалов здесь созданы все условия: офис с тренажерным залом, сауной и массажным кабинетом, расширенный ДМС для сотрудников и их детей (со стоматологией), программа релокации для сотрудников из регионов и многое другое.

Сотрудникам доступны курсы и лекции для развития софт- и хард-скиллов, более 10 иностранных языков на выбор. Проводятся регулярные митапы. За прошлый год компания вложила в обучение больше 150 миллионов рублей. Подробнее о том, как работается в «Лаборатории Касперского», можно узнать здесь.

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.