가장 많이 읽은 C++ 인터뷰 질문 및 답변 21개 [신입생을 위한]

게시 됨: 2020-12-17

오늘날에도 C++은 80년대만큼 인기가 있습니다. 이 범용, 컴파일 및 다중 패러다임(객체 지향, 절차 및 기능) 프로그래밍 언어는 IT 산업, 특히 소프트웨어 개발에서 중요한 역할을 합니다.

전 세계 개발자들은 C++를 사용하여 시스템 소프트웨어, 데이터베이스 소프트웨어, 임베디드 소프트웨어, 엔터프라이즈 애플리케이션, GUI 기반 애플리케이션, 컴파일러, 고급 계산 및 그래픽, 운영 체제, 브라우저, 게임, 클라우드 시스템 등을 구축합니다. 당연히 C++는 여전히 관련성이 높습니다. 프로그래밍 언어.

이 게시물에서 우리는 소프트웨어 개발 분야에서 경력을 쌓고자 한다면 알아야 할 21개의 C++ 인터뷰 질문 목록을 만들었습니다. 이 C++ 인터뷰 질문과 답변은 주제에 대한 얼음을 깨는 데 도움이 될 것입니다!

C++ 인터뷰 질문 및 답변

  1. "클래스"와 "객체"를 정의합니다.

C++에서 클래스는 다양한 엔터티, 작업 및 기능을 반영하는 사용자 정의 데이터 형식입니다. 클래스에는 해당 기능과 함께 데이터 멤버가 포함됩니다. 이러한 데이터 멤버 및 함수에 대한 액세스는 private, public 및 protected의 세 가지 수정자로 정의됩니다. 클래스는 데이터 유형을 정의하지만 데이터를 정의하는 대신 데이터 구조를 지정할 뿐입니다.

객체는 클래스의 인스턴스입니다. 사람, 장소 또는 사물을 나타낼 수 있는 런타임 엔터티입니다.

개체는 데이터 멤버 및 멤버 함수에서 작동합니다. 여기에는 필드, 메서드 및 생성자가 포함됩니다. 예를 들어 자동차는 객체이지만 바퀴, 디자인, 색상, 브래킷 등과 같은 다양한 기능은 해당 클래스의 인스턴스입니다.

  1. "액세스 지정자"란 무엇입니까?

액세스 지정자는 클래스의 범위 외부에서 클래스의 멤버(함수 및 변수)에 액세스하는 방법을 결정합니다. C++에는 세 가지 유형의 액세스 지정자가 있습니다.

  • Private – private 지정자는 클래스 멤버가 선언된 동일한 클래스 내에서만 액세스할 수 있음을 의미합니다. 이 경우 자식 클래스는 부모 클래스의 private 멤버에 액세스할 수 없습니다.
  • Protected – protected 지정자를 사용하면 자식 클래스가 부모 클래스의 보호된 데이터 멤버에 액세스할 수 있습니다.
  • Public – "public"으로 선언된 클래스 멤버는 C++ 코드 전체에서 액세스할 수 있습니다.
  1. 변경 가능한 스토리지 클래스 지정자란 무엇입니까?

가변 스토리지 클래스 지정자는 선언하여 상수 클래스 개체의 멤버를 변경하기 위해 클래스의 비정적 및 비상수 멤버 변수에만 적용됩니다.

  1. 캡슐화 란 무엇입니까?

캡슐화는 클래스 내에서 데이터 멤버와 해당 기능을 래핑하거나 바인딩하는 것을 말합니다. 이 프로세스는 외부 방법의 액세스를 제한하므로 보안상의 이유로 수행됩니다. 데이터 멤버가 비공개인 경우 해당 멤버 함수만 데이터에 액세스할 수 있습니다.

  1. 추상화란 무엇입니까?

추상화는 내부 구현을 숨기고 필수 세부 사항만 표시하는 프로세스입니다. 데이터 멤버 및 함수에 대한 액세스는 사용 중인 수정자에 따라 다릅니다. 따라서 public 키워드를 사용하여 멤버를 정의하면 누구나 액세스할 수 있습니다. 그러나 private 키워드가 멤버를 정의하는 경우 외부 메서드를 통해 액세스할 수 없습니다.

  1. 네임스페이스란 무엇입니까?

네임스페이스는 코드의 논리적 분할을 용이하게 합니다. 다른 네임스페이스를 할당하여 식별자의 명명 충돌을 방지/해결하기 위해 C++ 프로그램에서 사용됩니다. 네임스페이스는 식별자(변수, 클래스 및 함수)가 선언되는 범위를 정의합니다. 따라서 네임스페이스를 사용하는 주요 목적은 코드에서 모호성을 제거하는 것입니다.

  1. "다형성"을 정의합니다. C++에는 몇 가지 유형의 다형성이 있습니까?

말 그대로 다형성은 여러 형태의 존재를 의미합니다. C++에서 다형성은 동일한 이름으로 여러 기능이 존재하지만 기능이 다양한 경우에 발생합니다.

다형성에는 두 가지 유형이 있습니다.

  • C++에서 "재정의"라고도 하는 동적 다형성은 컴파일 시간 대신 런타임에 실행해야 하는 함수 메서드를 결정하는 데 도움이 됩니다. 함수 재정의는 동적 다형성의 훌륭한 예입니다. 함수 재정의에서 자식 클래스는 부모 클래스에 이미 존재하는 메서드를 포함합니다. 결과적으로 자식 클래스는 부모 클래스의 메서드를 재정의합니다. 이 경우 부모 클래스와 자식 클래스는 정의가 다른 동일한 기능을 보유합니다.
  • 정적 다형성은 코드 컴파일 시에 구현됩니다(따라서 컴파일 시간 다형성이라고도 함). 메서드 오버로딩은 정적 다형성의 완벽한 예입니다. 메서드 오버로딩을 사용하면 이름은 같지만 기능이 다른 둘 이상의 함수가 있을 수 있습니다.
  1. "휘발성" 키워드의 목적을 설명하십시오.

"volatile" 함수는 특정 변수가 휘발성임을 선언하는 데 사용됩니다. 이것은 컴파일러가 변수를 외부적으로 변경하도록 지시하여 변수 참조에 대한 컴파일러 최적화를 방지합니다.

읽기: Java 인터뷰 질문 및 답변

  1. 인라인 함수란 무엇입니까?

함수 정의 전에 접두사로 "inline" 키워드가 있는 모든 함수는 인라인 함수입니다. 주로 함수 호출 오버헤드를 줄이는 데 사용됩니다. 인라인 함수가 호출되면 전체 코드가 인라인 함수 호출의 특정 지점에 삽입되거나 대체됩니다. 컴파일러는 인라인 함수를 매크로로 취급하므로 훨씬 빠르게 실행됩니다. 따라서 작은 인라인 함수를 선언하면 코드의 효율성을 높이는 데 도움이 됩니다.

인라인 함수의 표준 구문은 다음과 같습니다.

인라인 반환 유형 함수 이름(매개변수)

{

// 함수 코드는 여기에 갑니다.

}

  1. "이" 포인터란 무엇입니까?

C++에서 "this" 포인터는 현재 개체의 메모리 주소를 포함하는 상수 포인터입니다. 모든 비정적 멤버 함수 호출에 숨겨진 인수로 전달됩니다. 또한 이 포인터는 모든 비정적 함수의 본문 내에 지역 변수가 존재합니다.

읽기 : SQL 인터뷰 질문 및 답변

  1. C++에 문자열 기본 데이터 유형이 있습니까?

C++는 문자열 기본 데이터 유형을 가질 수 없지만 대신 표준 템플릿 라이브러리(STL)의 클래스를 갖습니다.

  1. 범위 확인 연산자의 기능은 무엇입니까?

범위 확인 연산자는 두 가지 용도로 사용됩니다.

  • 전역 변수의 범위를 해결하는 데 도움이 됩니다.
  • 함수가 클래스 외부에 정의되면 범위 확인 연산자는 해당 함수를 클래스와 연결합니다.
  1. 소멸자란?

클래스의 멤버 함수를 소멸자라고 합니다. 이름은 클래스 이름과 같지만 접두사로 물결표 기호(~)가 있습니다. 객체가 범위를 잃을 때마다 소멸자가 자동으로 실행됩니다.

  1. 키워드 클래스와 키워드 구조체의 차이점을 설명합니다.

키워드 class는 기본적으로 private 멤버를 나타내는 반면 키워드 struct는 기본적으로 public 멤버와 유사합니다.

  1. 순수 가상 기능을 정의합니다.

순수 가상 기능은 정의가 포함되지 않은 기능입니다. 선언에서 0을 할당하여 순수 가상 함수를 선언하기만 하면 됩니다. C++의 추상 클래스에는 최소한 하나의 순수 가상 함수가 있습니다.

순수 가상 함수의 표준 구문은 다음과 같습니다.

가상 무효 abc()=0; //순수 가상 함수.

확인: 면접에서 돋보이게 하는 15가지 면접 팁

  1. 클래스 템플릿의 목적은 무엇입니까?

클래스 템플릿은 클래스 및 함수 패밀리를 만드는 데 사용됩니다. 예를 들어, 다양한 유형(int, float 등)을 포함하는 배열을 생성할 수 있는 배열 클래스의 템플릿을 생성할 수 있습니다. 함수에 대한 템플릿을 만들 수도 있습니다. 따라서 add() 함수가 있으면 여러 버전의 add()를 만들 수 있습니다.

  1. "오버플로 오류"는 무엇을 의미합니까?

오버플로 오류는 수학적 계산의 출력이 시스템에서 할당한 실제 공간보다 클 때 발생하는 산술 오류입니다.

  1. 삭제와 삭제[ ]는 어떻게 다른가요?

delete 함수는 "new" 연산자를 사용하여 할당된 단일 단위 메모리를 해제하는 반면, delete[ ]는 new[ ] 연산자에 의해 할당된 할당된 메모리 배열을 해제합니다.

  1. C++에서 vTable 및 vptr의 목적은 무엇입니까? 컴파일러는 이들을 어떻게 처리합니까?

C++에서 vTable은 함수 포인터를 포함합니다. 반면에 vptr은 vTable에 할당된 포인터입니다. 각 클래스에는 vTable이 있지만 각 개체에는 vptr이 있습니다. C++ 컴파일러는 vTable 및 vptr을 효과적으로 사용하고 유지 관리하기 위해 두 위치에 추가 코드를 추가합니다.

각 생성자에서 생성되는 개체의 vptr을 설정하고 클래스의 vTable을 가리킵니다.

다형성 함수 호출이 있는 코드에서. 컴파일러는 기본 클래스 포인터/참조를 사용하여 vptr을 검색하기 위해 다형성 호출이 선언된 모든 위치에 코드를 삽입합니다. vptr을 얻으면 파생 클래스의 vTable에 액세스할 수 있습니다. vTable을 사용하여 파생 클래스 함수 show()에 액세스하고 호출할 수 있습니다.

  1. C++에서 자동 변수는 어디에 저장됩니까?

모든 지역 변수는 기본적으로 자동 변수이며 스택 메모리에 저장됩니다.

  1. DLL에서 함수를 어떻게 내보낼 수 있습니까?

DLL에서 함수를 내보내는 방법에는 두 가지가 있습니다.

  • DLL의 형식 라이브러리를 사용할 수 있습니다.
  • DLL 인스턴스에서 함수를 참조할 수 있습니다.

세계 최고의 대학 에서 소프트웨어 엔지니어링 과정 에 등록하십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

결론

이 C++ 질문과 답변은 면접에서 가장 일반적으로 묻는 질문 중 일부입니다. 몇 가지 질문만 나열했지만 이것은 C++ 인터뷰를 준비하는 방법에 대한 공정한 아이디어를 제공할 것입니다.

전체 스택 소프트웨어 개발에 대해 자세히 알아보려면 upGrad & IIIT-B의 전체 스택 소프트웨어 개발 이그 제 큐 티브 PG 프로그램을 확인하십시오. 과제, IIIT-B 동문 자격, 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

풀 스택 개발자 되기

지금 소프트웨어 공학 석사 지원