Art of Code
2.1K subscribers
46 photos
1 file
66 links
По вопросам: @vice22821

Чат: @code_of_art
加入频道
Ребята сделали крутейший канал про айти

Здесь сложные темы объясняют на простых картинках и понятном языке, а еще делятся полезными ресурсами и свежими новостями из мира IT

Подписывайтесь: @IT_Portal
1
Задача с собеса в Яндекс по C++

Напишите конструктор копирования для Foo, учитывая, что класс Foo принимает a и b во владение. Для тех, кто справился с предыдущей задачей: напишите operator= для класса Foo

Исходный код:
class Foo {
public:
Foo(A* a, B* b): a(a), b(b) {}

~Foo() {
delete a;
delete b;
}
// TODO: copy_ctor

private:
A* a;
B* b;
};


Решение: Класс Foo принимает владение сырыми указателями A* a и B* b. Необходимо выполнить глубокое копирование объектов A и B, чтобы избежать проблем с двойным удалением.
Foo(const Foo& other) :
a(other.a ? new A(*other.a) : nullptr),
b(other.b ? new B(*other.b) : nullptr) {}
. Проверяем other.a и other.b на nullptr перед копированием.

Создаем новые объекты A и B через копирующие конструкторы (
new A(*other.a)).

Оператор присваивания: должен корректно обрабатывать самоприсваивание и освобождать старые ресурсы перед копированием новых.

Должен корректно обрабатывать самоприсваивание и освобождать старые ресурсы перед копированием новых.
Foo& operator=(const Foo& other) {
if (this != &other) { // Защита от самоприсваивания
delete a; // Освобождаем текущие ресурсы
delete b;

// Глубокое копирование
a = other.a ? new A(*other.a) : nullptr;
b = other.b ? new B(*other.b) : nullptr;
}
return *this;
}
Пояснение:

Проверка if (this != &other) исключает самоприсваивание (foo = foo).

Освобождаем текущие указатели a и b перед копированием новых значений.

Копируем объекты через new A(*other.a) (аналогично конструктору копирования).


class Foo {
public:
Foo(A* a, B* b): a(a), b(b) {}

~Foo() {
delete a;
delete b;
}

// Конструктор копирования
Foo(const Foo& other) :
a(other.a ? new A(*other.a) : nullptr),
b(other.b ? new B(*other.b) : nullptr) {}

// Оператор присваивания
Foo& operator=(const Foo& other) {
if (this != &other) {
delete a;
delete b;
a = other.a ? new A(*other.a) : nullptr;
b = other.b ? new B(*other.b) : nullptr;
}
return *this;
}

private:
A* a;
B* b;
};


@codeof_art
🗿6👍1🔥1
Задача с собеса в Ягуар

Задача: Напишите конструктор копирования для A. Для тех кто неуверенно (с подсказкой) справился с предыдущей задачей: напишите operator= для класса A. чтобы проверить, что всё поняли.

class Cloneable {
public:
virtual Cloneable* clone() const = 0; // Возвращает копию себя
virtual ~Cloneable() {}
};

class A {
public:
A(/* Какой должна быть сигнатура конструктора копирования? */);
~A();

// Добавить оператор присваивания

private:
Cloneable* b;
Cloneable* c;
std::string* s;
};

A::~A() {
delete b;
delete c;
delete s;
}


Решение:

Конструктор копирования: A::A(const A& other)
: b(other.b ? other.b->clone() : nullptr),
c(other.c ? other.c->clone() : nullptr),
s(other.s ? new std::string(*other.s) : nullptr) {}

Оператор присваивания: A& A::operator=(const A& other) {
if (this != &other) { // Проверка на самоприсваивание
// Удаляем старые данные
delete b;
delete c;
delete s;

// Копируем новые данные
b = other.b ? other.b->clone() : nullptr;
c = other.c ? other.c->clone() : nullptr;
s = other.s ? new std::string(*other.s) : nullptr;
}
return *this;
}


Полный код: class A {
public:
A() : b(nullptr), c(nullptr), s(nullptr) {} // Конструктор по умолчанию
A(const A& other); // Конструктор копирования
A& operator=(const A& other); // Оператор присваивания
~A();

private:
Cloneable* b;
Cloneable* c;
std::string* s;
};

// Реализации
A::A(const A& other)
: b(other.b ? other.b->clone() : nullptr),
c(other.c ? other.c->clone() : nullptr),
s(other.s ? new std::string(*other.s) : nullptr) {}

A& A::operator=(const A& other) {
if (this != &other) {
delete b;
delete c;
delete s;
b = other.b ? other.b->clone() : nullptr;
c = other.c ? other.c->clone() : nullptr;
s = other.s ? new std::string(*other.s) : nullptr;
}
return *this;
}

A::~A() {
delete b;
delete c;
delete s;
}


@codeof_art
🔥32❤‍🔥2
Задача с собеса в Yandex

Напишите код, который вернёт медиану из трёх чисел. Уточните определение медианы, если человек не знает.

//Интерфейс
int median3(int v1, int v2, int v3)
{
//реализация
}

assert(3 == median(2,5,3))
assert(2 == median3(2,2,1))

Решение:

#include <algorithm>

int median3(int v1, int v2, int v3) {
int arr[] = {v1, v2, v3};
std::sort(arr, arr + 3);
return arr[1];
}


@codeof_art
🤯22🗿51
Задача с собеса в Яндекс

Что будет, если попытаться скомпидировать, а потом попытаться запустить следующую программу?

#include <cstdio>
#include <cstdlib>

int main() {
printf("%d\n", ((int*|2)+3);
return EXIT_SUCCESS;
}


Решение: Ошибка компиляции из-за:

Неправильного оператора | между int* и 2.

Несоответствия формата %d и типа int*.

Если исправить синтаксис:

printf("%d\n", ((int*)2)+3 );
Компилятор выдаст предупреждение о несоответствии %d и int*.

При запуске — неопределённое поведение.


Верное решение:
printf("%d\n", 2 + 3); // Выведет 5


@codeof_art
🗿101
Свершилось! Поступашки открывают набор на новую линейку карьерных курсов 🎉

Мечтаешь стать крутым специалистом и с легкость тащить собесы, но не хватает фундамента? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):

➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт

Все курсы стартует 06.07. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.

Помимо этого на курсах тебя ждут:
- пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!

А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!

📊 Цена 15'000р при покупке! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!

Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Audio
Товарищи, напоминаю, что сегодня последний день, чтобы записаться на наши легендарные курсы по хорошей скидке 30%. Стартую они уже завтра.

Не упустите свой шанс классно прокачаться летом и залететь уже осенью на стажировку в Яндекс как наш выпускник прошлого набора (см прикрепленное интервью). Михаил сейчас работает на позиции джуниор в команде Яндекс Такси. Уверен его история просто парня из региона вас вдохновит!

[ Записаться на курсы ]
1
Свершилось! Поступашки открывают набор на новую линейку карьерных курсов 🎉

Мечтаешь стать крутым специалистом и с легкость тащить собесы, но не хватает фундамента? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):

➡️ дата сайнс (глубокое обучение)
➡️ фронтенд
➡️ дата инженер
➡️ математика для карьеры

Все курсы стартует 03.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.

Помимо этого на курсах тебя ждут:
- пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!

А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!

📊 Цена 15'000р 9'000р при покупке до 18 июля включительно! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!

Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!

Не забываем и про линейку старт, на которую тоже только до 18.07 действует скидка 40%!

➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт

ЗАПИСАТЬСЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Задача с собеседования в Яндекс

Что выведет на экран следующая программа (если нужно, то можно наложить некоторые ограничения на среду выполнения).

const char* a = "abcde";
const char b[] = "abcde";
printf("%d %d\n", sizeof(a), sizeof(b));


наш чат алгоритмистов

Решение: Выведет на экран:
4 6 (для 32-битной системы)
или
8 6 (для 64-битной системы)

Объяснение:

a - это указатель:

sizeof(a) возвращает размер указателя (4 байта для 32-битной ОС, 8 байт для 64-битной)

Не зависит от длины строки

b - это массив символов:

sizeof(b) возвращает размер всего массива

Строка "abcde" занимает 5 символов + 1 байт для нуль-терминатора \0

Итого: 6 байт

Ключевое различие:

Указатель хранит только адрес (фиксированный размер)

Массив хранит все элементы (размер зависит от содержимого)


@codeof_art
8
Поступашки продолжают набор на новую линейку карьерных курсов 🎉

Мечтаешь стать крутым специалистом и с легкость тащить собесы, но не хватает фундамента? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):

➡️ дата сайнс (глубокое обучение)
➡️ фронтенд
➡️ дата инженер
➡️ математика для карьеры

Все курсы стартует 03.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.

Помимо этого на курсах тебя ждут:
- пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!

А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!

📊 Цена на сайте, только при покупке до 24 июля включительно скидка 40%! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!

Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!

Не забываем и про линейку старт, на которую тоже только до 24.07 действует скидка 40%!

➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт

ЗАПИСАТЬСЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Экзамены в Т-академию до 31 августа. Усеваем подать заявку. Академия открывает возможность стажировки или устройства в штат.

Задания на все направления здесь. Там же можно их обсудить вместе с админом 😎😎

@code_of_art
🔥21
Задачи с собеседования в Яндекс (бэкенд)

1. Есть класс A. Создайте класс B, который является наследником класса A.

2. Создайте экземпляры классов A и B в динамической памяти (куче):

3. Пусть есть кусок кода на C++, оперирующий с классами из задачи 1:
A* a = new A;
B* b = new B;
a = b; // (1)
b = a; // (2)

Что произойдет? Скомпилится/не скомпилится, будет работать или нет? Почему? Какой модификатор наследования может повлиять на результат?

4. Есть класс A с перегруженным оператором постфиксного и префиксного инкремента. Сколько раз и какой конструктор класса A будет вызван в следующем коде:
 A*a;
a++;


5. Назовите 5 контейнеров из стандартной библиотеки

6. Какие контейнеры из SNL могут обеспечить логарифмическое время поиска по значению элемента?

7. Какие контейнеры могут обеспечить константное время доступа к элементу?

наш чат бэкендеров

Решение: 1. class A {};
class B : public A {};

2. A* objA = new A();
B* objB = new B();

3. (1) a = b;
Скомпилируется и будет работать, так как указатель на производный класс (B*) может быть неявно преобразован в указатель на базовый класс (A*). Это безопасное преобразование.

(2) b = a;
Не скомпилируется, так как указатель на базовый класс (A*) не может быть неявно преобразован в указатель на производный класс (B*) без явного приведения (например, dynamic_cast). Это может привести к ошибкам, если a не указывает на объект типа B.

Влияние модификатора наследования:
Если наследование будет private или protected, то преобразование A* a = b; станет невозможным вне класса B или его друзей. Например: class B : private A {};
A* a = b; // Ошибка компиляции: недоступно из-за private наследования.

4. В данном коде a — это указатель, а не объект класса A. Оператор ++ применяется к указателю и не вызывает никаких конструкторов класса A. Это стандартная арифметика указателей.

Если бы a был объектом (например, A a;), то:

Префиксный инкремент: ++a вызывает A& operator++().

Постфиксный инкремент: a++ вызывает A operator++(int) (создает временный объект, вызывая конструктор копирования).

5. Кек

6. Еще больший кек

7. тоже рофл


@codeof_art
❤‍🔥1
Новая линейка карьерных курсов стартует уже в это воскресение 🎉

Мечтаешь стать крутым специалистом и с легкость тащить собесы, но не хватает фундамента? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):

➡️ дата сайнс (глубокое обучение)
➡️ фронтенд
➡️ дата инженер
➡️ математика для карьеры

Все курсы стартует 03.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.

Помимо этого на курсах тебя ждут:
- пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!

А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!

📊 Цена на сайте, только при покупке до 2 августа включительно скидка 40%! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!

Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!

Не забываем и про линейку старт, на которую тоже только до 2 августа действует скидка 40%!

➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт

ЗАПИСАТЬСЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Свершилось! Поступашки открывают набор на новую линейку продвинутых карьерных курсов 🎉

Мечтаешь стать крутым специалистом и с легкость тащить рабочие задачи и собесы, получив конкурентное преимущество? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):

➡️ машинное обучение хард
➡️ бэкенд хард
➡️ аналитика хард
➡️ алгоритмы хард

Курсы продвинутые и рассчитаны на тех, у кого уже есть БАЗА, для тех, кто хочет затронуть более сложные темы и идеально подготовиться к собесам, для тех, кто претендует на что-то большее чем просто джуниор. Если вы только в начале своего пути, советуем курсы старт, на которые тоже до 08.08 действует скидка.

Все курсы стартует 17.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.

Помимо этого на курсах тебя ждут:
- продвинутые пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!

А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!

📊 Цена 12'000р 7'200р при покупке до 8 августа включительно! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!

Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!

Не забываем и про линейку старт, на которую тоже только до 08.08 действует скидка 40%!

➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт

ЗАПИСАТЬСЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
1
💻 100 000+ новых айтишников только за прошлый год. Спрос всё растёт. Компании ищут специалистов. Зарплаты — от 150 до 300 тыс. руб.

Но есть одно «но»: конкуренция жестко выросла. Теперь чтобы выйти на работу, недостаточно выучить язык программирования. Надо делать проекты. 90% новичков сливаются в первый год — потому что не знают, что изучать после языка. Они не знают, как делать полезные проекты.

Один из тех, кто прошёл этот путь и помогает другим — Амади.

Он уже прошел через все сложности, затем быстро вышел на доход в IT, а сейчас — ведёт блог по IT, где без воды и понтов объясняет, как зайти в IT.

И он сделал подарок для тех, кто хочет вырасти в доходе через IT сферу — он написал, как избежать 5 грубых ошибок начинающих.

Обязательно заберите этот материал — сэкономит вам месяцы времени и десятки тысяч рублей.

Всё здесь
2🗿21👍1
Новая линейка продвинутых карьерных курсов стартует уже в это воскресение 🎉

Мечтаешь стать крутым специалистом и с легкость тащить рабочие задачи и собесы, получив конкурентное преимущество? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):

➡️ машинное обучение хард
➡️ бэкенд хард
➡️ аналитика хард
➡️ алгоритмы хард

Курсы продвинутые и рассчитаны на тех, у кого уже есть БАЗА, для тех, кто хочет затронуть более сложные темы и идеально подготовиться к собесам, для тех, кто претендует на что-то большее чем просто джуниор. Если вы только в начале своего пути, советуем курсы старт, на которые тоже до 16.08 действует скидка.

Все курсы стартует 17.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.

Помимо этого на курсах тебя ждут:
- продвинутые пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!

А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!

📊 Цена 12'000р 7'200р при покупке до 16 августа включительно! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!

Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!

Не забываем и про линейку старт, на которую тоже только до 16.08 действует скидка 40%!

➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт

ЗАПИСАТЬСЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
1🗿1