Библиотека собеса по C++ | вопросы с собеседований
4.71K subscribers
384 photos
2 videos
163 links
Вопросы с собеседований по C++ и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/9ccf302b

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
🌟 Что такое std::variant?
std::variant — это класс-шаблон в стандартной библиотеке C++, который предоставляет механизм для хранения и обработки значения из списка альтернативных типов. Это позволяет программистам создавать переменные, которые могут содержать значения разных типов, известных заранее

📘 Особенности
Безопасность типов: std::variant гарантирует безопасность типов на этапе компиляции. Это означает, что вся обработка значений будет проверена на соответствие типов на этапе компиляции, что помогает избежать ошибок времени выполнения, связанных с неправильным использованием типов данных
Часто в C++ при исправление одной ошибки в программе количество ошибок только увеличивается. Как думаете почему это происходит?
👉 Что это такое strerror?

strerror является стандартной функцией в языке программирования C++ и предоставляет простой и эффективный способ получения описания ошибки на основе ее кода. Саму же ошибку можно чаще всего взять из errno (глобальная переменная, объявление её лежит в заголовочном файле errno.h)

🔧 Зачем это нужно?

Это очень полезно при обработке ошибок в программе. strerror помогает преобразовать код ошибки, возвращаемый функциями стандартной библиотеки или операционной системы, в человекочитаемое описание, что упрощает понимание и отладку проблем
🌟 Что такое std::jthread?

std::jthread — это новый класс потока исполнения (thread) в стандартной библиотеке C++ (начиная с C++20). Он представляет собой управляемый поток, который автоматически завершает свою работу при выходе из области видимости, если он был запущен

📘 В отличие от std::thread, std::jthread предоставляет несколько преимуществ

• Управление временем жизни: std::jthread автоматически завершает свою работу, когда объект std::jthread выходит из области видимости. Это позволяет избежать необходимости явного вызова join() или detach() для завершения потока, что упрощает управление ресурсами

• Безопасное исключение при завершении: Если поток, созданный с помощью std::jthread, был запущен и бросает исключение, прежде чем завершиться, то исключение будет перехвачено и обработано, прежде чем поток завершится. Это делает код более безопасным и предотвращает утечку ресурсов
🛠️ Что такое C++ Streams?

В контексте C++, потоки (streams) представляют собой механизм для работы с вводом и выводом данных. Они обеспечивают абстракцию над различными источниками и приемниками данных, такими как консоль, файлы и строки, позволяя программистам работать с ними с помощью общего интерфейса

Основные реализации потоков в C++
std::cin и std::cout: Это стандартные потоки ввода и вывода, которые обычно используются для взаимодействия с консолью
std::ifstream и std::ofstream: Это классы потоков для работы с файлами
std::stringstream: Этот класс потока позволяет работать с данными как с потоком, хранящимся в строке. Он может использоваться для выполнения операций ввода-вывода с помощью строкового представления данных

Преимущества использования потоков
• Удобство в использовании
• Возможность абстрагировать ввод-вывод от конкретных источников и приемников данных
• Поддержку различных типов данных
📋 Задача Простые числа

Создайте функцию, которая находит количество простых чисел до заданного целого числа

📚 Подход к решению
Решето Эратосфена на Си

How Many «Prime Numbers» Are There? (edabit)
Каким будет результат следующего фрагмента кода на C++?
Anonymous Quiz
2%
10.0 5
90%
10 2.5
3%
10.0 5.0
4%
5.0 2.5
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🧑‍💻 В чём проблема ромбовидного наследования?

Ромбовидное наследование (или diamond inheritance) возникает, когда один класс наследуется от двух классов, которые сами наследуются от общего предка

🔍 Проблемы
• Если базовый класс имеет общие поля или методы, то не понятно какая из реализаций будет использована в классе наследнике
• Сложность читать такой код, особенно если предков больше двух и общий предок находится глубоко в иерархии наследования
Функциональное программирование

Тема функционального программирования не новая для C++, но крайне полезная. Лямбда-функции и функторы часто встречаются в коде и хорошо бы с ними уметь работать без обращения к гуглу и лишней головной боли. Да и на собеседования не редко попадаются вопросы на эту тему

На youtube канале C++ User Group как раз вышло новое видео посвящённое данной теме

Элементы функционального программирования в языке C++
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

#️⃣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-разработчиков

👾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 запрещена на территории РФ
📋 Что лучше использовать const или define?

define — это директива препроцессора в языке C++, которая заменяет указанный текст в коде на заданное значение до компиляции. Однако define не учитывает типы данных или области видимости и может привести к созданию множества копий значения в объектном коде. Это усложняет отладку, так как define не имеет имени, только значение

В отличие от define, ключевое слово const в C++ предоставляет тип данных, область видимости и позволяет взять адрес переменной или создать ссылку на нее. Поэтому использование const предпочтительнее, так как обеспечивает большую четкость и безопасность кода
Для чего нужен шаблон Singleton?

Основная причина использования Singleton — обеспечение доступа к одному ресурсу из разных мест исходного кода, например взаимодействием с одним файлом или сетевым взаимодействием

В C++ для реализации можно использовать static переменные, потому что они имеют защиту от одновременного доступа к переменной
Какое время жизни у переменных?

Статическое — это глобальные (в том числе и static). Живут всё время выполнения процесса. Конструкторы вызываются до функции main и после выхода из неё вызываются деструкторы

Потоковые — другое название thread_local. Ведут себя как глобальные, но в каждом потоке есть своя переменная. Их существует столько сколько и потоков

Автоматические — располагаются на стеке. Это аргументы функции, локальные переменные, возвращаемые значения. За такими переменными следит компилятор

Динамические - выделяется с помощью new и delete или malloc и free. В этом случае компилятор полностью отдаёт возможность управления в руки разработчика
🖥 Курс Эффективное использование С++

📚 Лекция 1. Начнем с основ: библиотеки, утилиты, средства разработки и сборка проектов в С++. Присоединяйтесь, чтобы узнать, как максимально эффективно использовать ресурсы вашего проекта!

🔍 Лекция 2. Глубже в тему работы с памятью: избегаем утечек ресурсов с помощью RAII и умных указателей. Узнаем, как управлять памятью без лишних хлопот

➡️ Лекция 3. Переходим к Move semantics, rvalue reference и perfect forwarding. Открываем новые возможности и улучшаем производительность нашего кода

🔄 Лекция 4. Обсудим callbacks: лямбда-выражения, bind и function. Узнаем, как делать наш код более гибким и модульным

🧵 Лекция 5. Многопоточность в C++. Разбираемся с потоками, блокировками, задачами, атомарными операциями и очередями сообщений

💡 Лекция 6. Обзор возможностей современных стандартов C++. Узнаем, какие новшества есть в мире С++ и как они могут улучшить наш код

👉 Ссылка на курс
Разбавим тяжёлый вечер понедельника

#memes
🔮 Самые частые суффиксы для алгоритмов

std::*_n — вместо диапазона значений используется количество

std::*_if — предикат вместо значения


std::*_copy — результат копируется в новый структуру данных


👉 Ссылка на список алгоритмов
🧑‍💻 Вопросы с собеседования

Неплохой список вопросов об C++ с развёрнутыми ответами на них

👉 Ссылка