🎯 Добро пожаловать в “C++?” — канал о подготовке программистов C++ к собеседованиям!
Здесь ты найдёшь:
🧠 Реальные вопросы из интервью — от junior до senior
💻 Разборы задач и кода
⚙️ Советы и типичные ловушки на собеседованиях
Всё — кратко, по делу, с примерами кода.
📘 Подписывайся, чтобы каждый день становиться ближе к офферу 💼
💬 Хочешь разбор конкретного вопроса? Напиши его в комментариях, а мы подготовим соответствующий пост 👇
Здесь ты найдёшь:
🧠 Реальные вопросы из интервью — от junior до senior
💻 Разборы задач и кода
⚙️ Советы и типичные ловушки на собеседованиях
Всё — кратко, по делу, с примерами кода.
📘 Подписывайся, чтобы каждый день становиться ближе к офферу 💼
💬 Хочешь разбор конкретного вопроса? Напиши его в комментариях, а мы подготовим соответствующий пост 👇
🧠 Вопрос из реального интервью для понимания отличий языка C++ от C (junior):
👉 Чем отличается
Ответ тезисно:
2️⃣
3️⃣
4️⃣
5️⃣
#cpp_question #cpp_tips
👉 Чем отличается
new от malloc?Ответ тезисно:
1️⃣ new/delete используется в C++, а malloc/free — в C2️⃣
new вызывает конструктор, malloc — нет. 3️⃣
new возвращает указатель конкретного типа, malloc — void*. 4️⃣
new выбрасывает исключение std::bad_alloc, malloc — возвращает nullptr. 5️⃣
delete вызывает деструктор, free — просто освобождает память.#cpp_question #cpp_tips
✅ Ответ к задаче из предыдущего поста:
lvalue rvalue
❗️Пояснения:
a — именованная переменная → lvalue
10 — временное значение → rvalue
🧠 На интервью часто спрашивают:
Ответ:
lvalue имеет адрес и может стоять слева от =, rvalue — временное значение, которое можно только читать.
#cpp_question #cpp_challenge
❗️Пояснения:
a — именованная переменная → lvalue
10 — временное значение → rvalue
🧠 На интервью часто спрашивают:
Что такое lvalue и rvalue?
Ответ:
lvalue имеет адрес и может стоять слева от =, rvalue — временное значение, которое можно только читать.
#cpp_question #cpp_challenge
⚙️Простой алгоритм для реализации на собеседовании (junior)
🔎 Бинарный поиск
Сложность: O(log n)
❗️Вопрос на собеседовании:
Ответ: поведение непредсказуемо — алгоритм применим только к отсортированным массивам.
#cpp_algo #cpp_question
🔎 Бинарный поиск
Сложность: O(log n)
❗️Вопрос на собеседовании:
Что будет, если массив не отсортирован?
Ответ: поведение непредсказуемо — алгоритм применим только к отсортированным массивам.
#cpp_algo #cpp_question
💬 Простой вопрос про ООП (Объектно-Ориентированное Программирование) (junior)
Пример виртуального деструктора:
✅ Ответ: Если в базовом классе нет виртуального деструктора, при удалении через Base* вызывается только базовый деструктор, а деструктор наследника — нет → утечка памяти!
#cpp_question
Зачем нужен виртуальный деструктор?
Пример виртуального деструктора:
struct Base
{
virtual ~Base() = default;
};
✅ Ответ: Если в базовом классе нет виртуального деструктора, при удалении через Base* вызывается только базовый деструктор, а деструктор наследника — нет → утечка памяти!
#cpp_question
🧠 Частый вопрос на знание ключевых слов языка
Что делает ключевое слово explicit? (junior)
📘 Ответ: explicit запрещает неявные преобразования.
Используй его, чтобы избежать случайного вызова конструктора при присваивании.
#cpp_question #cpp_tips
Что делает ключевое слово explicit? (junior)
struct Client {
explicit Client(int x) {}
};
Client a = 5; // ❌ ошибка
Client b(5); // ✅ ок📘 Ответ: explicit запрещает неявные преобразования.
Используй его, чтобы избежать случайного вызова конструктора при присваивании.
#cpp_question #cpp_tips
💬 auto — зло или добро?
💡 Тема: Осознанное использование auto
🎯 Цель: показать, как auto влияет на читаемость, безопасность и оптимизацию
Когда-то auto использовали для вывода типа переменной, теперь же — почти повсюду.
Но стоит ли всегда полагаться на него?
⚙️ Пример 1 — где auto реально помогает
Здесь auto делает код чище и читабельнее.
Без него пришлось бы писать много нечитабельного кода:
⚠️ Пример 2 — где auto вредит
На первый взгляд всё нормально, но sum — это double, а не int.
Если заменить 0.0 на 0, тип поменяется — и можно незаметно получить другую арифметику.
❗️ Иногда auto скрывает ошибки типов, особенно с const, &, && и decltype.
✅ Используй auto, когда:
1) Тип очевиден из правой части;
2) Хочешь избежать дублирования и повысить читаемость.
❌ Не используй auto, когда:
1) Важно сохранить const / &;
2) Выражение возвращает временный объект с неочевидным типом;
3) Тип влияет на поведение.
#cpp_tips
💡 Тема: Осознанное использование auto
🎯 Цель: показать, как auto влияет на читаемость, безопасность и оптимизацию
Когда-то auto использовали для вывода типа переменной, теперь же — почти повсюду.
Но стоит ли всегда полагаться на него?
⚙️ Пример 1 — где auto реально помогает
std::unordered_map<std::string, std::vector<int>> data;
// ...
for (auto& [key, values] : data) {
std::cout << key << " → " << values.size() << "\n";
}
Здесь auto делает код чище и читабельнее.
Без него пришлось бы писать много нечитабельного кода:
for (std::pair<const std::string, std::vector<int>>& entry : data)
⚠️ Пример 2 — где auto вредит
std::vector<int> v = {1, 2, 3};
auto sum = std::accumulate(v.begin(), v.end(), 0.0);На первый взгляд всё нормально, но sum — это double, а не int.
Если заменить 0.0 на 0, тип поменяется — и можно незаметно получить другую арифметику.
❗️ Иногда auto скрывает ошибки типов, особенно с const, &, && и decltype.
✅ Используй auto, когда:
1) Тип очевиден из правой части;
2) Хочешь избежать дублирования и повысить читаемость.
❌ Не используй auto, когда:
1) Важно сохранить const / &;
2) Выражение возвращает временный объект с неочевидным типом;
3) Тип влияет на поведение.
#cpp_tips