ch
Feedback
Библиотека собеса по C++ | вопросы с собеседований

Библиотека собеса по C++ | вопросы с собеседований

前往频道在 Telegram

Вопросы с собеседований по C++ и ответы на них. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/9ccf302b Для обратной связи: @proglibrary_feeedback_bot

显示更多
4 596
订阅者
+224 小时
无数据7
-3430
帖子存档
👾 -35% на хардкорный курс по вышмату На курсе вы получите все необходимые знания для старта карьеры в DS или аналитике – htt
👾 -35% на хардкорный курс по вышмату На курсе вы получите все необходимые знания для старта карьеры в DS или аналитике – https://proglib.io/w/6a7a6f96 19 490 рублей 29 990 рублей Что еще вас ждет на курсе: ▪️ Полугодовая программа от преподавателей ВМК МГУ; ▪️ 150 практических заданий и 47 видеолекций; ▪️ Бессрочный доступ ко всем материалам курса; ▪️ Развернутая обратная связь по всем домашним заданиям, а также ссылки на полезные дополнительные материалы. 🌚 Переходите на сайт, читайте подробности и заходите на обучение по самым выгодным условиям – https://proglib.io/w/6a7a6f96

Что выведет код?
Anonymous voting

🥪 Какие преимущества и недостатки PIMPL? ❗️Преимущества - Улучшение времени компиляции: изменения в реализации не требуют перекомпиляции кода, использующего публичный класс - Сокрытие деталей реализации: пользователи класса видят только его интерфейс - Упрощение ABI (Application Binary Interface): изменения в приватной части не влияют на ABI - Уменьшение зависимостей: заголовочный файл не нуждается в инклюдах для внутренних типов. ❗️Недостатки - Дополнительный уровень косвенности: может слегка снизить производительность - Усложнение кода: требует написания дополнительного кода для управления указателем - Увеличение размера объекта: из-за хранения указателя ❗️Альтернатива - C++20 появился концепт модулей, который может частично заменить PIMPL, предоставляя лучшие механизмы для сокрытия реализации и управления зависимостями

🫐 Что такое PIMPL? PIMPL (Pointer to IMPLementation) - это техника, которая скрывает детали реализации класса за указателем на вспомогательный класс, содержащий фактическую реализацию ❗️Основная идея В публичном заголовочном файле объявляется только интерфейс класса и указатель на вспомогательный класс. Все детали реализации перемещаются в отдельный файл реализации. ❗️Структура Публичный класс (в заголовочном файле):
class PublicClass {
public:
    PublicClass();
    ~PublicClass();
    void someMethod();
private:
    class Impl;
    std::unique_ptr<Impl> pimpl;
};
Приватный класс (в файле реализации):
class PublicClass::Impl {
public:
    void someMethod() {
        // Реальная реализация
    }
};

😱 Какие знаете паттерны проектирования? Под паттернами проектирования часто имеют ввиду GoF паттерны, которые предназначены для удобного и эффективного описания структуры кода Порождающие паттерны: • Singleton • Factory Method • Abstract Factory • Builder • Prototype Структурные паттерны: • Adapter • Bridge • Composite • Decorator • Facade • Flyweight • Proxy Поведенческие паттерны: • Chain of Responsibility • Command • Interpreter • Iterator • Mediator • Memento • Observer • State • Strategy • Template Method • Visitor

🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хо
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом. Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах. 👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

😏 Чем отличается агрегация и композиция? Агрегация и композиция - это два понятия из ООП, которые выполняют функцию похожую на наследование, но другим способом 👉 Видео с ответом

Что будет при попытке компиляции программы
Anonymous voting

Что выведет код?
Anonymous voting

👁‍🗨 Что такое std::is_pointer_v? std::is_pointer_v — это переменная-шаблон из стандартной библиотеки C++, введенная в станд
👁‍🗨 Что такое std::is_pointer_v? std::is_pointer_v — это переменная-шаблон из стандартной библиотеки C++, введенная в стандарте C++17. Она является частью библиотеки type_traits, которая предоставляет инструменты для получения информации о типах во время компиляции. ❗️Основное о std::is_pointer_v: - Это сокращение для std::is_pointer::value - Она принимает тип в качестве шаблонного параметра и возвращает true, если этот тип является указателем, и false в противном случае - Это константа времени компиляции типа bool - Она работает с любыми типами указателей, включая указатели на функции и указатели на члены - Не считает nullptr_t указателем

Что выведет код?
Anonymous voting

😱 Что такое склейка ссылок? В старом стандарте (до C++11) если при разворачивании шаблона получался тип, который являлся ссы
😱 Что такое склейка ссылок? В старом стандарте (до C++11) если при разворачивании шаблона получался тип, который являлся ссылкой на ссылку было ошибкой. В новом стандарте появились правила склейкиПравила склейки В том случае если при разворачивании шаблона возникает двойная ссылка, например l-value ссылка на l-value ссылку, то получаем обычную ссылку (T& & -> T&): • T& & -> T& • T& && -> T& • T&& & -> T& • T&& && -> T&& ❗Правила склейки позволяют определить универсальную ссылку Универсальная ссылка — это аргумент функции, которая передаётся как r-value, при этом его тип является параметром шаблона ❗Она позволяет работать как с r-value, так и с l-value ссылками
template void func (T&& t) {}
• Если вызвать func с l-value типа A, то тип T будет выведен как ссылка A& • Если вызвать func с r-value типа A, то тип T будет выведен как A

❗Вакансии «Библиотеки программиста» — ждем вас в команде! Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем: 👉авторов в наше медиа proglib.io 👉контент-менеджеров для ведения телеграм-каналов Подробности тут Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴 Ждем ваших откликов 👾

🤔 Кем я хочу быть – DS или ML engineer? Стоит ли понимать специфику сферы? 🗓 22 августа на вебинаре «Как меняется математик
🤔 Кем я хочу быть – DS или ML engineer? Стоит ли понимать специфику сферы? 🗓 22 августа на вебинаре «Как меняется математика в разных индустриях: от мобильных игр к фондовым рынкам» ответим на эти и другие вопросы. Приглашенный спикер: Павел Запольский – Senior Quantitative Researcher at Exness и Co-founder GrowLytics. Запустивший более 10 проектов по машинному обучению и анализу данных для ведущих компаний. 😮 На вебинаре узнаете: 🔵 Математика в бизнесе: Чем отличаются разные сферы друг от друга. Почему стоит понимать специфику сферы 🔵 ML и продуктовое IT: Чем различается математическая сложность от индустрии к индустрии. Какие к ним необходимы уровни подготовки 🔵 Баевская математика в GameDev. Баевская математика как альтернатива AB тестированию. Как математические методы применяются в разработке игр 🔵 Finance: Что такое количественные финансы и математическое моделирование. Обсудим текущие индустриальные тренды в отрасли 🔵 Backtest: Как знания математики делают ваши активы более надежными 🔵 На практике подробно разберем два математических кейса по GameDev и Backtest. ➡️ Зарегистрироваться: https://proglib.io/w/602b9900

🥪 Что такое std::forward? std::forward — шаблонная функция определённая в стандартной библиотеке std::forward используется для perfect forwarding, т.е. когда параметр из одной функции передать в другую функцию и при этом сохранить способ передачи std::forward не делает ниаких действий во время выполнения ❗️Примерная реализация
template<class T>
T&& forward(typename remove_reference<T>::type& a)
{
  return static_cast<T&&>(a);
}
- remove_reference - в данном случае указывает, что функция всегда принимает l-value reference

🏵️ Что такое God Object? God Object — это антипаттерн. Так же его называют Божественный Объект • Это объект, который берёт на себя слишком много ответственности • Нарушает принцип Единственной ответственности (SOLID) • Часто становится сложным для понимания, поддержки и тестирования ❗Как понять что это God Object? • Объект отвечает за множество задач логически не связанные между собой • Чрезмерная централизация логики. Большая часть логики сосредоточенна в одном классе, что приводит к монолитной структуре кода ❗Проблемы с использованием • Сложность изменений. Изменяя одну часть, можно повлиять на всю систему целиком ❗Как избежать God Object? • Разделять ответственность на несколько классов или модулей • Каждый из которых отвечает за отдельную задачу • Следуйте принципам SOLID