21 Najczęściej czytane pytania i odpowiedzi na wywiad w języku C++ [Dla nowicjuszy]
Opublikowany: 2020-12-17Nawet dzisiaj C++ jest tak samo popularny, jak w latach 80-tych. Ten uniwersalny, skompilowany i wieloparadygmatyczny (obiektowy, proceduralny i funkcjonalny) język programowania odgrywa kluczową rolę w branży IT, szczególnie w tworzeniu oprogramowania.
Deweloperzy na całym świecie używają C++ do tworzenia oprogramowania systemowego, oprogramowania bazodanowego, oprogramowania wbudowanego, aplikacji dla przedsiębiorstw, aplikacji opartych na GUI, kompilatorów, zaawansowanych obliczeń i grafiki, systemów operacyjnych, przeglądarek, gier, systemów w chmurze itp. Oczywiście C ++ jest nadal bardzo istotny język programowania.
W tym poście stworzyliśmy listę 21 pytań do rozmowy kwalifikacyjnej C++, które powinieneś znać, jeśli aspirujesz do zbudowania kariery w tworzeniu oprogramowania. Te pytania i odpowiedzi podczas rozmowy kwalifikacyjnej w języku C++ pomogą Ci przełamać lody na ten temat!
Pytania i odpowiedzi dotyczące C++ podczas rozmowy kwalifikacyjnej
- Zdefiniuj „Klasę” i „Obiekt”.
W C++ klasa jest typem danych zdefiniowanym przez użytkownika, który odzwierciedla różne jednostki, akcje i funkcje. Klasa zawiera elementy członkowskie danych wraz z ich funkcjami. Dostęp do tych członków danych i funkcji jest definiowany przez trzy modyfikatory – prywatny, publiczny i chroniony. Chociaż klasy definiują typ danych, określają jedynie strukturę danych zamiast definiowania danych.
Obiekt jest instancją klasy. Jest to jednostka czasu wykonywania, która może reprezentować osobę, miejsce lub rzecz.
Obiekty działają na członkach danych i funkcjach członkowskich. Zawiera pola, metody i konstruktory. Na przykład, chociaż samochód jest przedmiotem, jego różne cechy, takie jak koła, wygląd, kolor, wsporniki itp., są przykładami jego klasy.

- Co to jest „specyfikator dostępu”?
Specyfikator dostępu określa, w jaki sposób można uzyskać dostęp do elementów klasy (funkcji i zmiennych) poza zakresem klasy. C++ ma trzy typy specyfikatorów dostępu
- Private — specyfikator prywatny oznacza, że do członków klasy można uzyskać dostęp tylko w ramach tej samej klasy, w której są zadeklarowane. W takim przypadku klasy podrzędne nie mogą uzyskać dostępu do prywatnych członków klasy nadrzędnej.
- Protected — chroniony specyfikator umożliwia klasom podrzędnym dostęp do chronionych danych członkowskich klasy nadrzędnej.
- Publiczny — do członków klasy, które są zadeklarowane jako „publiczne”, można uzyskać dostęp w całym kodzie C++.
- Co to jest zmienny specyfikator klasy pamięci?
Zmienny specyfikator klasy pamięci ma zastosowanie tylko do niestatycznych i niestałych zmiennych składowych klasy w celu zmiany składowej obiektu klasy stałej przez zadeklarowanie go.
- Co to jest enkapsulacja?
Hermetyzacja odnosi się do zawijania lub wiązania składowych danych i ich funkcji w klasie. Ten proces jest wykonywany ze względów bezpieczeństwa, ponieważ ogranicza dostęp z dowolnej metody zewnętrznej. Jeśli członek danych jest prywatny, tylko jego funkcja członkowska może uzyskać dostęp do danych.
- Czym jest abstrakcja?
Abstrakcja to proces ukrywania wewnętrznych implementacji i wyświetlania tylko niezbędnych szczegółów. Dostęp do członków danych i funkcji zależy od używanego modyfikatora. Tak więc, jeśli do zdefiniowania członków używane jest publiczne słowo kluczowe, każdy może uzyskać do nich dostęp. Jeśli jednak prywatne słowo kluczowe definiuje członków, nie można uzyskać do nich dostępu za pomocą metod zewnętrznych.
- Co to jest przestrzeń nazw?
Przestrzeń nazw ułatwia logiczny podział kodu. Jest używany w programach C++, aby zapobiegać/rozwiązywać konflikty nazw identyfikatorów poprzez przypisywanie im różnych przestrzeni nazw. Przestrzeń nazw definiuje zakres, w którym deklarowany jest identyfikator (zmienne, klasa i funkcje). Dlatego głównym celem korzystania z przestrzeni nazw jest wyeliminowanie niejednoznaczności z kodu.
- Zdefiniuj „Polimorfizm”. Ile rodzajów polimorfizmu istnieje w C++?
Dosłownie polimorfizm oznacza obecność wielu form. W C++ polimorfizm występuje, gdy pod tą samą nazwą istnieje więcej niż jedna funkcja, ale z różnymi funkcjami.
Polimorfizm jest dwojakiego rodzaju:
- Dynamiczny polimorfizm, czyli „nadpisywanie” w C++, pomaga określić, która metoda funkcji musi być wykonana w czasie wykonywania, a nie w czasie kompilacji. Nadpisywanie funkcji jest doskonałym przykładem dynamicznego polimorfizmu. W zastępowaniu funkcji klasa potomna zawiera metodę, która już istnieje w klasie nadrzędnej. W konsekwencji klasa potomna przesłania metodę klasy nadrzędnej. W tym przypadku zarówno klasa nadrzędna, jak i podrzędna pełnią tę samą funkcję z różnymi definicjami.
- Polimorfizm statyczny jest implementowany podczas kompilacji kodu (stąd nazywany jest również polimorfizmem czasu kompilacji). Przeciążanie metod jest doskonałym przykładem polimorfizmu statycznego. Przeciążanie metod pozwala na obecność więcej niż jednej funkcji o tej samej nazwie, ale o różnych funkcjonalnościach.
- Wyjaśnij cel słowa kluczowego „Niestabilny”.
Funkcja „volatile” służy do deklarowania, że dana zmienna jest niestabilna. To kieruje kompilator do zewnętrznej zmiany zmiennej, unikając w ten sposób optymalizacji kompilatora w odniesieniu do zmiennej.
Przeczytaj: Pytania i odpowiedzi dotyczące rozmowy kwalifikacyjnej w języku Java
- Co to jest funkcja wbudowana?
Każda funkcja, której przedrostkiem jest słowo kluczowe „inline” przed definicją funkcji, jest funkcją wbudowaną. Są one używane głównie w celu zmniejszenia obciążenia wywołania funkcji. Po wywołaniu funkcji wbudowanej cały kod zostanie wstawiony lub podstawiony w określonym punkcie wywołania funkcji wbudowanej. Ponieważ kompilator traktuje funkcje wbudowane jako makra, działają one znacznie szybciej. W ten sposób deklarowanie małych funkcji wbudowanych pomaga zwiększyć wydajność kodu.

Standardowa składnia funkcji wbudowanej to:
Nazwa funkcji typu zwracanego w wierszu (parametry)
{
// Tutaj znajduje się kod funkcji
}
- Co to jest „ten” wskaźnik?
W C++ „ten” wskaźnik jest stałym wskaźnikiem, który zawiera adres pamięci bieżącego obiektu. Jest przekazywany jako ukryty argument do wszystkich niestatycznych wywołań funkcji składowych. Ponadto ten wskaźnik istnieje jako zmienna lokalna w ciele wszystkich funkcji niestatycznych.
Przeczytaj : Pytania i odpowiedzi dotyczące wywiadu SQL
- Czy C++ ma prymitywny typ danych typu string?
C++ nie może mieć pierwotnego typu danych typu string, ale raczej ma klasę ze standardowej biblioteki szablonów (STL).
- Jaka jest funkcja operatora rozwiązywania zakresu?
Operator rozpoznawania zakresu służy dwóm celom:
- Pomaga rozwiązać zakres zmiennych globalnych.
- Gdy funkcja jest zdefiniowana poza klasą, operator rozpoznawania zakresu kojarzy tę funkcję z klasą.
- Co to jest destruktor?
Funkcja składowa klasy nazywa się destruktorem. Jego nazwa jest taka sama jak nazwa klasy, ale z symbolem tyldy (~) jako przedrostkiem. Za każdym razem, gdy obiekt traci swój zasięg, destruktory są wykonywane automatycznie.
- Wyjaśnij różnicę między słowem kluczowym class a słowem kluczowym struct.
Słowo kluczowe class domyślnie reprezentuje prywatne elementy członkowskie, podczas gdy słowo kluczowe struct domyślnie przypomina publiczne elementy członkowskie.
- Zdefiniuj funkcję Pure Virtual.
Czysta funkcja wirtualna to taka, która nie zawiera żadnej definicji. Wystarczy zadeklarować czystą funkcję wirtualną, przypisując 0 w deklaracji. Klasy abstrakcyjne w C++ mają co najmniej jedną czysto wirtualną funkcję.
Standardowa składnia czystej funkcji wirtualnej to:
wirtualna pustka abc()=0; //czysta funkcja wirtualna.
Sprawdź: 15 wskazówek dotyczących rozmowy kwalifikacyjnej, aby wyróżnić się podczas rozmowy kwalifikacyjnej
- Jaki jest cel szablonu klasy?
Szablon klasy służy do tworzenia rodziny klas i funkcji. Na przykład, możesz stworzyć szablon klasy tablicy, który pozwoli ci stworzyć tablicę zawierającą różne typy (int, float, itp.). Możesz również utworzyć szablon dla funkcji. Tak więc, jeśli istnieje funkcja add(), możesz utworzyć wiele wersji add().
- Co oznacza „Błąd przepełnienia”?
Błąd przepełnienia to błąd arytmetyczny, który występuje, gdy wynik obliczeń matematycznych jest większy niż rzeczywista przestrzeń przydzielona przez system.
- Czym różnią się usuwanie i usuwanie[ ]?
Funkcja usuwania zwalnia pojedynczą jednostkę pamięci przydzielonej za pomocą operatora „new”, podczas gdy delete[ ] zwalnia tablicę przydzielonej pamięci przydzielonej operatorem new[ ].
- Jaki jest cel vTable i vptr w C++? Jak traktuje je kompilator?
W C++ vTable zawiera wskaźniki do funkcji. Z drugiej strony vptr jest wskaźnikiem przypisanym do tabeli vTable. Podczas gdy każda klasa ma vTable, każdy obiekt ma vptr. Kompilator C++ dodaje dodatkowy kod w dwóch miejscach, aby efektywnie używać i utrzymywać vTable i vptr:
W każdym konstruktorze ustawić vptr tworzonego obiektu i wskazać vTable klasy.
W kodzie posiadającym wywołanie funkcji polimorficznej. Kompilator wstawia kod w każdej lokalizacji, w której zadeklarowano wywołanie polimorficzne w celu wyszukania vptr przy użyciu wskaźnika/odniesienia do klasy bazowej. Po uzyskaniu vptr można uzyskać dostęp do tabeli vTable klasy pochodnej. Możesz użyć vTable, aby uzyskać dostęp i wywołać funkcję show() klasy pochodnej.

- Gdzie w C++ jest przechowywana zmienna automatyczna?
Wszystkie zmienne lokalne są domyślnie zmiennymi automatycznymi i są przechowywane w pamięci stosu.
- Jak wyeksportować funkcję z biblioteki DLL?
Istnieją dwa sposoby eksportowania funkcji z biblioteki DLL:
- Możesz użyć biblioteki typów DLL.
- Możesz odwołać się do funkcji z instancji DLL.
Zapisz się na kursy inżynierii oprogramowania z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.
Wniosek
Te pytania i odpowiedzi w języku C++ to jedne z najczęściej zadawanych pytań podczas rozmów kwalifikacyjnych. Chociaż wymieniliśmy tylko kilka pytań, powinno to dać ci dobre wyobrażenie o tym, jak przygotować się do rozmowy kwalifikacyjnej w języku C++.
Jeśli chcesz dowiedzieć się więcej o tworzeniu oprogramowania z pełnym pakietem, zapoznaj się z programem Executive PG UpGrad i IIIT-B w zakresie tworzenia oprogramowania z pełnym pakietem, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznych szkoleń, ponad 9 projektów i zadania, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.
