Библиотека собеса по 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
加入频道
Каким будет результат следующего фрагмента кода на 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++ с развёрнутыми ответами на них

👉 Ссылка
🔮 Для чего нужен std::any?

std::any — контейнер из стандартной библиотеки, в котором можно хранить любой тип данных, включая пользовательские типы

std::any_cast — способ безопасного извлечения данных из объекта std::any. С помощью std::any_cast мы можем проверить тип во время выполненя
🔮 assert

assert или утверждение — давно появившийся #define из стандартной библиотеки

Принцип работы
- Если выражение внутри assert ложное, будет terminate программы
- Для release сборке assert превратится в пустышку

Особенности
- В C++11 появился static_assert — применяется для выражений, которые могут быть вычислены в compile time
- assert очень часто используется в gamedev-коде, даже когда удобнее было бы применить try...catch. Это делается по нескольким причинам: assert дешевле (чем try...catch), в release сборке его вообще нет, поэтому можно их писать чуть ли не везде
🔍 Что такое empty base optimization?

В C++ любой класс, даже пустой, будет размером не меньше одного байта. Это необходимо, чтобы не было проблем с арифметикой указателей. Однако наследование от пустого класса будет приводить увеличению размера наследника. Но, в C++ предусмотрена empty base optimization, которая позволяет компилятору оптимизировать занимаемую память, так что объект, наследующий пустой базовый класс, не будет занимать дополнительной памяти за счет этого пустого базового класса. Таким образом, размер объекта будет таким же, как если бы он не наследовал пустой класс
🔮 Сетевое программирование в C++

Для C++ пока, к сожалению, не написали стандартную библиотеку для работы с сетью. Но, зато есть множество хороших библиотек (Boost.Asio, Qt Network и др.). Так же стоит понимать, что многие компании пишут свои библиотеки и поэтому стоит лучше познакомиться с основами сетевого программирования, чтобы легко вникать в любую из реализаций

Что касается Boost.Asio, то для него есть перевод книги Boost.Asio C++ Network Programming

🔗 Ссылочки со спискоми библиотек
Awesome C++
C++ Networking libraries
Stackoverflow (старый пост)
🔮 Историческая справка по lambda'м

Вышла обзорная статья по развитию lambda-выражений для разных стандартов языка

👉 Краткий обзор развития лямбда-выражений в C++11, C++14, C++17 и C++20

#junior
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

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