Библиотека собеса по C++ | вопросы с собеседований
Ir al canal en Telegram
Вопросы с собеседований по C++ и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/9ccf302b Для обратной связи: @proglibrary_feeedback_bot
Mostrar más5 425
Suscriptores
-824 horas
-13 9517 días
-13 97630 días
Archivo de publicaciones
С детства интересуют технологии? 🤖
Не знаешь где получить образование будущего?
Крупнейший образовательный центр «Алабуга Политех» приглашает освоить престижный профиль «Аэронавигация и программирование БПЛА» для выпускников 9-11 классов ✈️
Обучение в центре будет проходить по дуальной системе: работа + обучение в колледже.
Лучшие условия для специалистов будущего:
🔵бесплатное обучение
🔵зарплата до 160 000 рублей
🔵проживание в современных ЖК
С первого курса студенты официально трудоустраиваются и оттачивают свои навыки на высокотехнологичном производстве под руководством опытных инженеров-наставников.
👉🏻 Пройди отбор и стань высококлассным специалистом, востребованным на рынке труда! Подавай заявку на поступление в «Алабуга Политех».
Реклама. ИП Кочеткова Кристина Сергеевна, ИНН 632141702900. Erid 2VtzqxWSgvN❓ Как получить размер файла в байтах?
В C++17 была добавлена библиотека filesystem, которая упрощает работу с файловой системой
#include <filesystem>
int main()
{
std::uintmax_t size = std::filesystem::file_size("file.txt");
}
❗️Стоит учитывать, что если файл был открыт не только вами, то размер может быть изменён извнеНет времени объяснять! Осталась всего пара дней до закрытия регистрации на самое масштабное событие в IT-сфере.
Уже 17 мая пройдет конференция МТС True Tech Day.
Что будет:
- Выступления топовых экспертов из МТС, Яндекса, Ozon, Авито и других передовых компаний.
- Более 50 докладов про архитектуру, облачные платформы, NLP4Code, вероятностное. программирование, безопасность контейнеров и другое.
- 10 часов нетворкинга.
- Цифровые зоны и digital-развлечения.
- А после – грандиозная вечеринка со звездой.
Участвуй онлайн! Регистрируйся прямо сейчас на True Tech Day.
❓В каких случаях применяется инициализация нулями?
- Статические переменные (static), глобальные и thread_local
thread_local int a; // thread_local
int b; // global
struct Test {
static int test; // static
};
int Test::test;
- Если мы инициализируем default значениями примитивных типов
void dunc(int t){}
f(int());
- Для явно не инициализированных Си-массивов
char a[5] = "123"; // a[3] = a[4] = 0🌟 Выведение размера массива
Для std::array размер в общем случае задаётся вручную
std::array<int, 2> test{ 2,3 };
Начиная с C++17 можно оставить вывод размера компилятору
std::array test{ 2,3 };
Но если необходимо использовать шаблоны, то можно воспользоваться шаблонной магией
template<typename T, size_t N>
int size(const std::array<T, N>& types)
{
return N;
}❓Хотите освоить Rust и научиться работать с многопоточностью и асинхронностью?
Начните с бесплатного практического вебинара «Типы многопоточности и асинхронность в Rust» от Отус.
✨На вебинаре мы разберем:
- какой код быстрее — многопоточный или асинхронный;
- правда ли, что половина самых быстрых web-фреймворков написаны на Rust;
- подходы к асинхронному программированию в Rust;
Открытый урок будет полезен как новичкам, которые выбирают язык для изучения, так и опытным разработчикам, которые хотят расширить технологический стек.
Встречаемся 23 мая в 17:00 мск в преддверии старта курса «Rust Developer. Basic». Все участники вебинара получат специальную цену на обучение на полноценном курсе!
➡ Регистрация на вебинар: https://vk.cc/cwPlHL
🤝 Записывайтесь сейчас, а мы потом напомним. Участие бесплатно.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru Erid 2Vtzqw6UUev
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
🧨 Как установить, очистить и переключить один бит?
❗️Установка бита
- Используется побитовый оператор OR (|), чтобы установить n-й бит number в 1 значение
- Стоит помнить, что сдвиг больше, чем на ширину типа, является неопределенным поведением
typedef unsigned long ulong;
ulong bit_set(ulong number, ulong n) {
return number | ((ulong)1 << n);
}
❗️Очистка бита
- Используется побитовый оператор AND (&) , чтобы установить n-й бит number в 0 значение
- Вы должны инвертировать битовую строку с помощью побитового оператора NOT (~) , затем оператор &
ulong bit_clear(ulong number, ulong n) {
return number & ~((ulong)1 << n);
}
❗️Переключение бита
- Используйте побитовый оператор XOR (^) для переключения n-го бита number
ulong bit_toggle(ulong number, ulong n) {
return number ^ ((ulong)1 << n);
}
❗️Проверка бита
- Чтобы проверить бит, сдвиньте number вправо на n бит , затем воспользуйтесь &
bool bit_check(ulong number, ulong n) {
return (number >> n)& (ulong)1;
}🌳 Как объявить интерфейс в C ++?
В C++ интерфейсом можно считать класс с чисто виртуальными методами
Чисто виртуальный метод - это метод класса, который определяется как виртуальный и которому присваивается значение 0
class ITest
{
public:
virtual ~ITest() {}
virtual void Method() = 0;
};
class MainTest : public ITest
{
public:
virtual void Method() override
{
}
};🍔 Дополнительный код
Дополнительный код (или two's complement) — это умный способ хранения целых чисел, позволяющий очень легко реализовать распространенные математические задачи. В основном используется потому что легко представлять отрицательные числа
🥝 Основные принципы
- для нуля используем 0
- для положительных целых чисел используем значения от 1 и до 2 в степени (количество битов-1) минус 1
- для отрицательных чисел инвертируем бинарное представление и добавляем единицу — это и есть дополнительный код
🍎 Примеры (бинарное представление = значение)
• 0000 = 0
• 0001 = 1
• 0010 = 2
• 1111 = -1
• 1110 = -2
• 1101 = -3
🍔 В чём разница между std::endl и '\n'?
❗ Единственное существенное различие между std::endl и '\n' в том, что std::endl очищает буфер вывода и результат сразу выводится, а '\n' — это просто символ и сайдэффектов не имеет
❗ Если программа требовательная к ресурсам, то стоит пользоваться '\n' и изредка вызывать std::flush для очистки буфера
🔮 Что такое обрезка объектов?
Обрезка объектов (или object slicing) — это возможность присвоить объект класса-наследника экземпляру базового класса. Называется обрезкой, потому что часть информации исчезает (обрезается)
class Base {
int base_var;
};
class Derived: public Base {
int der_var;
};
int main () {
Base base;
Derived der = base;
}
❗️В примере информация об переменной der_var исчезает и её уже никак не восстановить
❗️Для решение проблемы можно использовать указатель или ссылку, тогда новый объект не создаётся, а мы просто пользуемся наследником как базовым🔮 Что такое обрезка объектов?
Обрезка объектов (или object slicing) — это возможность присвоить объект класса-наследника экземпляру базового класса. Называется обрезкой, потому что часть информации исчезает (обрезается)
```
class Base {
int base_var;
};
class Derived: public Base {
int der_var;
};
int main () {
Base base;
Derived der = base; // информация об переменной der_var исчезает и её уже никак не восстановить
}
```
❗️Для решение проблемы можно использовать указатель или ссылку, тогда новый объект не создаётся, а мы просто пользуемся наследником как базовым
Стать профессионалом в IT, наполнить портфолио интересными проектами и успешно пройти техническое собеседование в одну из крупнейших российских IT-компаний 👨💻
А также развить алгоритмическое мышление и просто провести свободное время с пользой 🕺
Участвуй во Всероссийском чемпионате по алгоритмическому программированию RuCode.СТАРТ. Индивидуальный онлайн-контест пройдет уже 19 мая.
🍊 Что такое placement new?
Placement new - это специальный вид оператора new, который позволяет создать объект в уже выделенной памяти
char *buffer = new char[1024];
string *str_point = new (buffer) string("hi"); // placement new
❗️В основном необходимо, если мы не хотим запрашивать у операционной системы выделения памяти или когда у нас есть менеджер памяти и нельзя в обход него выделять память
‼️ Следует учитывать, что деструкторы для таких объектов придётся вызывать вручную, потому что при освобождении памяти они автоматически не вызоваются🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🧨 Как очистить stringstream?
Для очистки содержимого строкового потока можно использовать:
m.str("");
или
m.str(std::string());
что может быть более эффективно, из-за того что не вызываем конструктор std::string(const char*)😱 Что такое ошибка сегментации?
Ошибка сегментации (или segmentation fault) — вид ошибок связанный с обращением к памяти, которая не принадлежит процессу. Это вспомогательный механизм, который не дает вам «испортить» память и внедрить трудноотлаживаемые ошибки памяти. Когда вы получаете segfault, вы знаете, что делаете что-то не так с памятью — обращаетесь к переменной, которая уже была освобождена, записываете в часть памяти, доступную только для чтения, и т. д. Ошибка сегментации по сути одинакова в большинстве языков, позволяющих работать с памятью, принципиальной разницы между ошибками сегментации в C и C++ нет
🍔 std::print() и std::println()
Если есть необходимость печатать в стандартный вывод и постоянно не пользоваться std::format, которая генерирует std::string, можно использовать функции std::print() и std::println(). Они были добавлены в C++23 и также поддерживают форматирование строк
🍔 Зачем нужен std::format?
❗ В функция printf нет автоматического вычитания типов, она подвержена ошибкам и не расширяема
❗Потоковые объекты (stream) очень многословны и трудно оптимизируются
‼️ В C++20 появился std::format позволяющий форматировать строки в python стиле
🍔 Особенности std::format
• Безопасный для использования с разными типами (Type-safe)
• Поддерживает позиционные аргументы
• Расширяемость (поддержка пользовательских типов)
• Возвращает std::string
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
