가장 많이 읽은 C++ 인터뷰 질문 및 답변 21개 [신입생을 위한]
게시 됨: 2020-12-17오늘날에도 C++은 80년대만큼 인기가 있습니다. 이 범용, 컴파일 및 다중 패러다임(객체 지향, 절차 및 기능) 프로그래밍 언어는 IT 산업, 특히 소프트웨어 개발에서 중요한 역할을 합니다.
전 세계 개발자들은 C++를 사용하여 시스템 소프트웨어, 데이터베이스 소프트웨어, 임베디드 소프트웨어, 엔터프라이즈 애플리케이션, GUI 기반 애플리케이션, 컴파일러, 고급 계산 및 그래픽, 운영 체제, 브라우저, 게임, 클라우드 시스템 등을 구축합니다. 당연히 C++는 여전히 관련성이 높습니다. 프로그래밍 언어.
이 게시물에서 우리는 소프트웨어 개발 분야에서 경력을 쌓고자 한다면 알아야 할 21개의 C++ 인터뷰 질문 목록을 만들었습니다. 이 C++ 인터뷰 질문과 답변은 주제에 대한 얼음을 깨는 데 도움이 될 것입니다!
C++ 인터뷰 질문 및 답변
- "클래스"와 "객체"를 정의합니다.
C++에서 클래스는 다양한 엔터티, 작업 및 기능을 반영하는 사용자 정의 데이터 형식입니다. 클래스에는 해당 기능과 함께 데이터 멤버가 포함됩니다. 이러한 데이터 멤버 및 함수에 대한 액세스는 private, public 및 protected의 세 가지 수정자로 정의됩니다. 클래스는 데이터 유형을 정의하지만 데이터를 정의하는 대신 데이터 구조를 지정할 뿐입니다.
객체는 클래스의 인스턴스입니다. 사람, 장소 또는 사물을 나타낼 수 있는 런타임 엔터티입니다.
개체는 데이터 멤버 및 멤버 함수에서 작동합니다. 여기에는 필드, 메서드 및 생성자가 포함됩니다. 예를 들어 자동차는 객체이지만 바퀴, 디자인, 색상, 브래킷 등과 같은 다양한 기능은 해당 클래스의 인스턴스입니다.

- "액세스 지정자"란 무엇입니까?
액세스 지정자는 클래스의 범위 외부에서 클래스의 멤버(함수 및 변수)에 액세스하는 방법을 결정합니다. C++에는 세 가지 유형의 액세스 지정자가 있습니다.
- Private – private 지정자는 클래스 멤버가 선언된 동일한 클래스 내에서만 액세스할 수 있음을 의미합니다. 이 경우 자식 클래스는 부모 클래스의 private 멤버에 액세스할 수 없습니다.
- Protected – protected 지정자를 사용하면 자식 클래스가 부모 클래스의 보호된 데이터 멤버에 액세스할 수 있습니다.
- Public – "public"으로 선언된 클래스 멤버는 C++ 코드 전체에서 액세스할 수 있습니다.
- 변경 가능한 스토리지 클래스 지정자란 무엇입니까?
가변 스토리지 클래스 지정자는 선언하여 상수 클래스 개체의 멤버를 변경하기 위해 클래스의 비정적 및 비상수 멤버 변수에만 적용됩니다.
- 캡슐화 란 무엇입니까?
캡슐화는 클래스 내에서 데이터 멤버와 해당 기능을 래핑하거나 바인딩하는 것을 말합니다. 이 프로세스는 외부 방법의 액세스를 제한하므로 보안상의 이유로 수행됩니다. 데이터 멤버가 비공개인 경우 해당 멤버 함수만 데이터에 액세스할 수 있습니다.
- 추상화란 무엇입니까?
추상화는 내부 구현을 숨기고 필수 세부 사항만 표시하는 프로세스입니다. 데이터 멤버 및 함수에 대한 액세스는 사용 중인 수정자에 따라 다릅니다. 따라서 public 키워드를 사용하여 멤버를 정의하면 누구나 액세스할 수 있습니다. 그러나 private 키워드가 멤버를 정의하는 경우 외부 메서드를 통해 액세스할 수 없습니다.
- 네임스페이스란 무엇입니까?
네임스페이스는 코드의 논리적 분할을 용이하게 합니다. 다른 네임스페이스를 할당하여 식별자의 명명 충돌을 방지/해결하기 위해 C++ 프로그램에서 사용됩니다. 네임스페이스는 식별자(변수, 클래스 및 함수)가 선언되는 범위를 정의합니다. 따라서 네임스페이스를 사용하는 주요 목적은 코드에서 모호성을 제거하는 것입니다.
- "다형성"을 정의합니다. C++에는 몇 가지 유형의 다형성이 있습니까?
말 그대로 다형성은 여러 형태의 존재를 의미합니다. C++에서 다형성은 동일한 이름으로 여러 기능이 존재하지만 기능이 다양한 경우에 발생합니다.
다형성에는 두 가지 유형이 있습니다.
- C++에서 "재정의"라고도 하는 동적 다형성은 컴파일 시간 대신 런타임에 실행해야 하는 함수 메서드를 결정하는 데 도움이 됩니다. 함수 재정의는 동적 다형성의 훌륭한 예입니다. 함수 재정의에서 자식 클래스는 부모 클래스에 이미 존재하는 메서드를 포함합니다. 결과적으로 자식 클래스는 부모 클래스의 메서드를 재정의합니다. 이 경우 부모 클래스와 자식 클래스는 정의가 다른 동일한 기능을 보유합니다.
- 정적 다형성은 코드 컴파일 시에 구현됩니다(따라서 컴파일 시간 다형성이라고도 함). 메서드 오버로딩은 정적 다형성의 완벽한 예입니다. 메서드 오버로딩을 사용하면 이름은 같지만 기능이 다른 둘 이상의 함수가 있을 수 있습니다.
- "휘발성" 키워드의 목적을 설명하십시오.
"volatile" 함수는 특정 변수가 휘발성임을 선언하는 데 사용됩니다. 이것은 컴파일러가 변수를 외부적으로 변경하도록 지시하여 변수 참조에 대한 컴파일러 최적화를 방지합니다.
읽기: Java 인터뷰 질문 및 답변
- 인라인 함수란 무엇입니까?
함수 정의 전에 접두사로 "inline" 키워드가 있는 모든 함수는 인라인 함수입니다. 주로 함수 호출 오버헤드를 줄이는 데 사용됩니다. 인라인 함수가 호출되면 전체 코드가 인라인 함수 호출의 특정 지점에 삽입되거나 대체됩니다. 컴파일러는 인라인 함수를 매크로로 취급하므로 훨씬 빠르게 실행됩니다. 따라서 작은 인라인 함수를 선언하면 코드의 효율성을 높이는 데 도움이 됩니다.

인라인 함수의 표준 구문은 다음과 같습니다.
인라인 반환 유형 함수 이름(매개변수)
{
// 함수 코드는 여기에 갑니다.
}
- "이" 포인터란 무엇입니까?
C++에서 "this" 포인터는 현재 개체의 메모리 주소를 포함하는 상수 포인터입니다. 모든 비정적 멤버 함수 호출에 숨겨진 인수로 전달됩니다. 또한 이 포인터는 모든 비정적 함수의 본문 내에 지역 변수가 존재합니다.
읽기 : SQL 인터뷰 질문 및 답변
- C++에 문자열 기본 데이터 유형이 있습니까?
C++는 문자열 기본 데이터 유형을 가질 수 없지만 대신 표준 템플릿 라이브러리(STL)의 클래스를 갖습니다.
- 범위 확인 연산자의 기능은 무엇입니까?
범위 확인 연산자는 두 가지 용도로 사용됩니다.
- 전역 변수의 범위를 해결하는 데 도움이 됩니다.
- 함수가 클래스 외부에 정의되면 범위 확인 연산자는 해당 함수를 클래스와 연결합니다.
- 소멸자란?
클래스의 멤버 함수를 소멸자라고 합니다. 이름은 클래스 이름과 같지만 접두사로 물결표 기호(~)가 있습니다. 객체가 범위를 잃을 때마다 소멸자가 자동으로 실행됩니다.
- 키워드 클래스와 키워드 구조체의 차이점을 설명합니다.
키워드 class는 기본적으로 private 멤버를 나타내는 반면 키워드 struct는 기본적으로 public 멤버와 유사합니다.
- 순수 가상 기능을 정의합니다.
순수 가상 기능은 정의가 포함되지 않은 기능입니다. 선언에서 0을 할당하여 순수 가상 함수를 선언하기만 하면 됩니다. C++의 추상 클래스에는 최소한 하나의 순수 가상 함수가 있습니다.
순수 가상 함수의 표준 구문은 다음과 같습니다.
가상 무효 abc()=0; //순수 가상 함수.
확인: 면접에서 돋보이게 하는 15가지 면접 팁
- 클래스 템플릿의 목적은 무엇입니까?
클래스 템플릿은 클래스 및 함수 패밀리를 만드는 데 사용됩니다. 예를 들어, 다양한 유형(int, float 등)을 포함하는 배열을 생성할 수 있는 배열 클래스의 템플릿을 생성할 수 있습니다. 함수에 대한 템플릿을 만들 수도 있습니다. 따라서 add() 함수가 있으면 여러 버전의 add()를 만들 수 있습니다.
- "오버플로 오류"는 무엇을 의미합니까?
오버플로 오류는 수학적 계산의 출력이 시스템에서 할당한 실제 공간보다 클 때 발생하는 산술 오류입니다.
- 삭제와 삭제[ ]는 어떻게 다른가요?
delete 함수는 "new" 연산자를 사용하여 할당된 단일 단위 메모리를 해제하는 반면, delete[ ]는 new[ ] 연산자에 의해 할당된 할당된 메모리 배열을 해제합니다.
- C++에서 vTable 및 vptr의 목적은 무엇입니까? 컴파일러는 이들을 어떻게 처리합니까?
C++에서 vTable은 함수 포인터를 포함합니다. 반면에 vptr은 vTable에 할당된 포인터입니다. 각 클래스에는 vTable이 있지만 각 개체에는 vptr이 있습니다. C++ 컴파일러는 vTable 및 vptr을 효과적으로 사용하고 유지 관리하기 위해 두 위치에 추가 코드를 추가합니다.
각 생성자에서 생성되는 개체의 vptr을 설정하고 클래스의 vTable을 가리킵니다.
다형성 함수 호출이 있는 코드에서. 컴파일러는 기본 클래스 포인터/참조를 사용하여 vptr을 검색하기 위해 다형성 호출이 선언된 모든 위치에 코드를 삽입합니다. vptr을 얻으면 파생 클래스의 vTable에 액세스할 수 있습니다. vTable을 사용하여 파생 클래스 함수 show()에 액세스하고 호출할 수 있습니다.

- C++에서 자동 변수는 어디에 저장됩니까?
모든 지역 변수는 기본적으로 자동 변수이며 스택 메모리에 저장됩니다.
- DLL에서 함수를 어떻게 내보낼 수 있습니까?
DLL에서 함수를 내보내는 방법에는 두 가지가 있습니다.
- DLL의 형식 라이브러리를 사용할 수 있습니다.
- DLL 인스턴스에서 함수를 참조할 수 있습니다.
세계 최고의 대학 에서 소프트웨어 엔지니어링 과정 에 등록하십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
결론
이 C++ 질문과 답변은 면접에서 가장 일반적으로 묻는 질문 중 일부입니다. 몇 가지 질문만 나열했지만 이것은 C++ 인터뷰를 준비하는 방법에 대한 공정한 아이디어를 제공할 것입니다.
전체 스택 소프트웨어 개발에 대해 자세히 알아보려면 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 이그 제 큐 티브 PG 프로그램을 확인하십시오. 과제, IIIT-B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

