Введение Многопоточность Интервью Вопросы и ответы C ++
Прежде чем мы перейдем к обсуждению потоков и связанных с ними концепций, касающихся интервью, я хотел бы дать краткое представление о том, как все работает, прежде чем название статьи, т.е. многопоточность, начнет играть свою роль. Давайте быстро посмотрим детали
Есть 3 типа компьютерного языка
- Низкий уровень (уровень машины)
- Средний уровень (уровень сборки) и
- Высокий уровень (например, C ++, JAVA, COBOL и т. Д.)
Эти языки высокого уровня (в нашем случае мы рассмотрим C ++) взаимодействуют с машинами с помощью программ (в которые встроены коды). Переводчик помогает переводить детали на машинный язык (0 и 1), как гид, который переводит один язык на другой.
Теперь, когда этот обмен информацией происходит между человеком (посредством кодов) и машиной, в картину вступают такие понятия, как многопоточность и процесс. Эти детали мы обсудим с помощью вопросов и ответов для «C ++ Threading интервью».
Теперь, если вы ищете работу, связанную с многопоточностью C ++, то вам нужно подготовиться к 2019 году по вопросам многопоточности интервью C ++. Это правда, что каждое собеседование отличается в зависимости от профилей работы. Здесь мы подготовили важные вопросы о многопоточном интервью и ответы на C ++, которые помогут вам добиться успеха в вашем интервью.
В этой статье 2019, посвященной многопоточным вопросам интервью C ++, мы представим 10 наиболее важных и часто задаваемых вопросов по многопоточности интервью C ++. Эти вопросы интервью делятся на две части:
Часть 1 - Многопоточность Интервью Вопросы C ++ (Basic)
Эта первая часть охватывает основные вопросы интервью с многопоточностью C ++.
Q1. Что такое многопоточность?
Ответ:
Поток представляет собой последовательность выполнения; это может также упоминаться как особенность ОС (операционной системы).
Давайте поймем вышеприведенное предложение более простым способом.
Для любого действия, предпринимаемого пользователем в системе, должен быть процесс для выполнения этого действия (по запросу пользователя). С каждым процессом должен быть связан хотя бы один поток. ОС, встроенная в каждую систему, отвечает за распределение времени процесса для каждого потока. Таким образом, многопоточность является более специализированным способом многозадачности. Такое поведение позволяет пользователю выполнять несколько задач одновременно.
Q2. Придумайте все детали, которые вы знаете о процессе?
Ответ:
Давайте посмотрим, что это за процесс, мистер А. входит в систему и хочет увидеть панель своего бизнеса. Чтобы просмотреть свою бизнес-панель в системе, он перейдет в раздел панели. При этом он генерирует процесс, который обрабатывается соответствующей операционной системой. ОС будет выделять память для процесса, а также ОС будет следить за тем, чтобы память одного процесса не была доступна другим процессам.
Следовательно, мы можем сказать, что процесс - это не что иное, как исполняемая программа.
Схема (компоненты) процесса -
Процесс имеет разные стадии, которые также можно назвать жизненным циклом процесса -
- Начало
- готов
- Бег
- Ожидание
- Прекращено или Выход
Давайте перейдем к следующему вопросу о многопоточности интервью C ++.
Q3. Выделите некоторые преимущества потока с его типами?
Ответ:
В общем, есть 2 типа потоков
- Поток пользовательского интерфейса - они используются для создания компонентов пользовательского интерфейса. Например. Появляется всплывающее окно для отображения любой информации пользователю.
- Рабочая нить - насос сообщений отсутствует
Преимущества -
- Минимизирует время переключения контекста
- Повышение связи
- Легко создавать и подключать темы
- Использование потоков делает процесс более параллельным
Q4. Зачем нам нужно больше одной нити?
Ответ:
Это распространенные вопросы интервью с многопоточностью, которые C ++ задавал в интервью. Поскольку мы знаем, что должен быть хотя бы один поток, связанный с каждым процессом. Разговор о большем количестве потоков в одном процессе имеет несколько преимуществ.
- Интерфейс пользовательского интерфейса. Прежде всего, нужно иметь отличный пользовательский интерфейс с отличным пользовательским интерфейсом. Многопоточность концепции поможет в этом.
- Многозадачность - с большим количеством потоков можно одновременно делать больше.
- Удобство использования - разные компоненты системы могут использовать разные компоненты в данный момент времени. Здесь многопоточность может сэкономить время.
Q5. Как можно создать поток в C ++?
Ответ:
Есть 4 способа сделать это:
- Создание потока с использованием указателя на функцию
- Создание потока с использованием объекта функции
- Создание темы с использованием лямбды
- Создание потока с использованием функции-члена
Q6. Как запустить поток, используя функциональные объекты и указатель на функцию?
Ответ:
Используя объект функции -
class fn_object_class (
void operator () (params)
(
)
Std:: thread thread_object(fn_class_object(), params)
Используя указатель на функцию -
Void foo(param)
(
)
std::thread thread_obj (foo, params);
Q7. Какую проблему вы найдете в этом коде?
Ответ:
Код дается кандидату -
#include
int main(int argc, char **argv)
(
const int & r1 = 100;
int v = 200;
int &r2 = v;
int & r3 = 200;
return 0;
)
Значение должно быть переменной. Проблема есть в инициализации r3.
Часть 2 - Многопоточность Интервью Вопросы C ++ (Advanced)
Теперь давайте взглянем на расширенные вопросы и ответы по многопоточным интервью C ++.
Q8. Расскажите мне о доступных моделях в многопоточности?
Ответ:
Много ко многим отношениям
Отношение много к одному
Отношение один к одному
Q9. Назовите шаблон дизайна для потока?
Ответ:
Некоторые популярные тестовые случаи в современной ИТ-индустрии
Пул потоков (Боос и Рабочий)
Peer (рабочая группа)
Трубопровод
Давайте перейдем к следующему вопросу о многопоточности интервью C ++.
В10. Определите занятое ожидание и как этого можно избежать?
Ответ:
Когда поток ожидает другого потока с использованием активной циклической структуры, это ничего не делает, это называется состоянием ожидания занятости. Этой трости избегают использования мьютексов.
Q11. Что вы понимаете под терминологией инверсии приоритетов?
Ответ:
Поток с более высоким приоритетом должен ожидать позади потока с более низким приоритетом в случае, когда потоки с более низким приоритетом удерживают блокировку, которую ожидает поток с более высоким приоритетом. Это случай инверсии приоритетов.
Q12. Есть ли разница между пользовательским уровнем и потоками на уровне ядра?
Ответ:
Это самые популярные вопросы многопоточности интервью, которые C ++ задавал в интервью. Да, между ними есть некоторые принципиальные различия. Они перечислены ниже.
Уровень пользователя | Уровень ядра |
Это быстро в действии и творчестве | Это медленные в действии и создании |
Они не связаны ни с одной ОС | Это ОС зависит |
Реализация на уровне пользователя | Реализация на уровне ядра. |
Q13. Назовите функции, которые используются для создания потоков?
Ответ:
Функция afxbeginthread используется для создания потоков (оба вида). Создание потока выполняется в двух режимах - один запускает его выполнение, а другой создается в режиме приостановки, который может быть возобновлен позже.
Q14. Какие 6 примитивов синхронизации доступны в многопоточности?
Ответ:
Они заключаются в следующем -
- Mutex
- Присоединиться
- Переменная условия
- барьеры
- Spin Lock
- семафор
Рекомендуемые статьи
Это было руководство к списку вопросов многопоточности интервью и ответов на C ++, чтобы кандидат мог легко разобраться с этими вопросами многопоточности интервью C ++. Здесь, в этом посте, мы изучили лучшие вопросы C ++ для многопоточности, которые часто задают в интервью. Вы также можете посмотреть следующие статьи, чтобы узнать больше -
- Многопоточность Интервью Вопросы на Java
- Threading Интервью Вопросы
- Интервью с сервлетами Java
- QlikView Интервью Вопросы