Úvod Otázky a odpovede týkajúce sa rozhovoru s viacerými vláknami C ++
Predtým, ako pôjdeme k diskusii o vláknach a súvisiacich pojmoch týkajúcich sa rozhovoru, rád by som poskytol stručnú predstavu o tom, ako veci fungujú, skôr ako začne nadpis článku, tj multithreading začína hrať svoju úlohu. Pozrime sa rýchlo na podrobnosti
Existujú 3 typy počítačového jazyka
- Nízka úroveň (úroveň stroja)
- Stredná úroveň (úroveň zhromaždenia) a
- Vysoká úroveň (ako C ++, JAVA, COBOL atď.)
Tieto jazyky vysokej úrovne (v našom prípade budeme brať do úvahy C ++) interagujú so strojmi pomocou programov (ktoré majú zabudované kódy). Prekladateľ pomáha prekladať podrobnosti do strojového jazyka (0 a 1) rovnako ako sprievodca, ktorý prekladá jeden jazyk do druhého.
Akonáhle sa táto výmena informácií uskutoční medzi človekom (prostredníctvom kódov) a strojom, do obrazu sa dostanú koncepty, ako je postupovanie vláknami a proces. Tieto podrobnosti budeme diskutovať prostredníctvom otázok a odpovedí na „Otázky týkajúce sa rozhovorov s vláknami C ++“.
Teraz, ak hľadáte prácu, ktorá súvisí s multithreadingom C ++, musíte sa pripraviť na 2019 multithreadingové otázky rozhovoru C ++. Je pravda, že každý pohovor sa líši podľa rôznych profilov zamestnania. Tu sme pripravili dôležité otázky týkajúce sa viacvláknových rozhovorov a odpovede C ++, ktoré vám pomôžu dosiahnuť úspech v pohovore.
V tomto článku 2019 Multithreading Interview Questions C ++ predstavíme 10 najdôležitejších a často kladených otázok Multithreading Interview Otázky C ++. Tieto otázky týkajúce sa rozhovoru sú rozdelené do dvoch častí:
1. časť - Otázky týkajúce sa rozhovoru s viacerými vláknami C ++ (základné)
Táto prvá časť obsahuje základné otázky týkajúce sa viacvláknových rozhovorov C ++.
Q1. Čo je to multithreading?
odpoveď:
Vlákno je postupnosť vykonania; dá sa tiež označiť ako súčasť OS (operačný systém).
Pochopme vyššie uvedenú vetu jednoduchším spôsobom.
Pre každú akciu, ktorú užívateľ vykoná v systéme, musí existovať proces na dokončenie tejto akcie (na základe žiadosti používateľa). Každý proces musí mať asociované najmenej jedno vlákno. OS zabudovaný v každom systéme je zodpovedný za pridelenie času procesu pre každé vlákno. Multithreading je teda špecializovanejší spôsob multitaskingu. Toto správanie umožňuje užívateľovi vykonávať viac úloh súčasne.
Q2. Príďte so všetkými detailmi, ktoré viete o tomto procese?
odpoveď:
Pozrime sa, čo je to presne za proces, pán A sa prihlási do systému a chce vidieť informačný panel svojho podnikania. Aby si mohol zobraziť informačný panel svojho podniku v systéme, prejde do sekcie informačného panela. Týmto generuje proces, ktorý riadi príslušný systémový OS. OS pridelí operácii pamäť a tiež zabezpečí, aby pamäť jedného procesu nebola prístupná iným procesom.
Preto môžeme povedať, že proces nie je nič iné ako realizačný program.
Usporiadanie (komponenty) procesu -
Proces má rôzne štádiá, ktoré možno nazvať aj životným cyklom procesu -
- štart
- pripravený
- beh
- čakania
- Ukončené alebo Ukončené
Prejdime k ďalším otázkam týkajúcim sa viacvláknových rozhovorov C ++.
Q3. Zdôrazniť niektoré z výhod vlákna s jeho typmi?
odpoveď:
Všeobecne existujú 2 typy nití
- Vlákno UI - používajú sa na vytváranie komponentov UI. Napr. Zobrazí sa okno správ, aby sa používateľovi zobrazili všetky informácie.
- Worker Thread - neobsahuje žiadne čerpadlo správ
Výhody -
- Minimalizuje čas prepnutia kontextu
- Zvýšte komunikáciu
- Ľahko vytvárať a spájať vlákna
- Použitie nití robí tento proces súbežnejším
Q4. Prečo potrebujeme viac ako jedno vlákno?
odpoveď:
Toto sú bežné otázky týkajúce sa viacvláknových rozhovorov C ++, ktoré boli položené počas rozhovoru. Ako vieme, s každým procesom musí byť spojená najmenej jedna niť. Hovorenie viacerých vlákien do jedného procesu má viacero výhod.
- Rozhranie UI - Prvým a najdôležitejším dôvodom je skvelé používateľské rozhranie s vynikajúcou skúsenosťou používateľa. Pri tom pomáha koncept s viacerými vláknami.
- Multi-tasking - s viac vláknami je možné robiť viac vecí súčasne.
- Použiteľnosť - rôzne komponenty systému môžu v danom okamihu používať rôzne komponenty. Tu môže byť viacvláknové šetrenie času.
Q5. Aké sú spôsoby vytvorenia vlákna v C ++?
odpoveď:
Existujú 4 spôsoby, ako to dosiahnuť nasledovne:
- Vytvorenie vlákna pomocou ukazovateľa funkcie
- Vytváranie vlákien pomocou funkčného objektu
- Vytváranie vlákien pomocou lambda
- Vytvorenie vlákna pomocou funkcie člena
Q6. Ako spustiť vlákno pomocou funkčných objektov a funkčného ukazovateľa?
odpoveď:
Použitie funkčného objektu -
class fn_object_class (
void operator () (params)
(
)
Std:: thread thread_object(fn_class_object(), params)
Použitie ukazovateľa funkcie -
Void foo(param)
(
)
std::thread thread_obj (foo, params);
Q7. Aký druh problému nájdete v tomto kóde?
odpoveď:
Kód je pridelený kandidátovi -
#include
int main(int argc, char **argv)
(
const int & r1 = 100;
int v = 200;
int &r2 = v;
int & r3 = 200;
return 0;
)
Hodnota musí byť premenná. Problém je v inicializácii r3.
2. časť - Otázky týkajúce sa rozhovoru s viacerými vláknami C ++ (rozšírené)
Pozrime sa teraz na pokročilé otázky a odpovede týkajúce sa viacvláknových rozhovorov C ++.
Q8. Stručná informácia o dostupných modeloch vo viacvláknovej výrobe?
odpoveď:
Veľa až veľa vzťahov
Vzťah medzi mnohými a jedným
Vzťah jeden ku druhému
Q9. Pomenujte návrhový vzor vlákna?
odpoveď:
Niektoré populárne testovacie prípady v súčasnom odvetví IT
Thread Pool (Boos and Worker)
Peer (Work Crew)
potrubie
Prejdime k ďalším otázkam týkajúcim sa viacvláknových rozhovorov C ++.
Q10. Definujte obsadené čakanie a ako sa tomu dá vyhnúť?
odpoveď:
Keď vlákno čaká na ďalšie vlákno s použitím aktívnej slučkovej štruktúry, toto nerobí nič, čo sa nazýva zaneprázdnený čakací stav. Táto palica sa vyhýbala použitiu mutexov.
Q11. Čo rozumiete terminológiou inverznej priority?
odpoveď:
Vlákno s vyššou prioritou musí čakať za vláknom s nižšou prioritou v prípade, keď vlákna s nižšou prioritou držia zámok, na ktorý čaká vlákno s vyššou prioritou. Toto je prípad inverzie priority.
Q12. Existuje nejaký rozdiel medzi vláknami na úrovni používateľa a jadra?
odpoveď:
Toto sú najpopulárnejšie otázky týkajúce sa viacvláknových rozhovorov C ++, ktoré boli položené počas rozhovoru. Áno, medzi nimi existujú zásadné rozdiely. Sú uvedené nižšie.
Užívateľská úroveň | Úroveň jadra |
Sú rýchle v akcii a tvorbe | Jedná sa o pomalý postup a tvorbu |
Nie sú viazaní žiadnym operačným systémom | Sú špecifické pre OS |
Implementácia je na užívateľskej úrovni | Implementácia je na úrovni jadra. |
Q13. Pomenujte funkcie, ktoré sa používajú na vytváranie vlákien?
odpoveď:
Na vytváranie vlákien sa používa funkcia afxbeginthread (obidve druhy). Vytváranie vlákien sa vykonáva v dvoch režimoch - jeden, ktorý ho spustí, a druhý, ktorý sa vytvorí v pozastavenom režime, ktorý je možné obnoviť neskôr.
Q14. Aké sú 6 primitívne synchronizácie dostupné vo viacerých vláknach?
odpoveď:
Sú to nasledujúce -
- mutex
- pripojiť
- Premenná stavu
- prekážky
- Spin Lock
- semafor
Odporúčané články
Toto bol sprievodca zoznamom otázok týkajúcich sa viacvláknových rozhovorov a odpovedí C ++, aby uchádzač mohol ľahko ľahšie zasiahnuť tieto otázky týkajúce sa viacvláknových rozhovorov C ++. Tu v tomto príspevku sme študovali najlepšie otázky týkajúce sa viacvláknových rozhovorov C ++, ktoré sa často kladú pri rozhovoroch. Ďalšie informácie nájdete aj v nasledujúcich článkoch -
- Otázky týkajúce sa viacerých vlákien v jazyku Java
- Otázky týkajúce sa rozhovoru s vláknami
- Otázky týkajúce sa rozhovoru Java Servlet
- QlikView Interview Otázky