21 자주 묻는 OOP 인터뷰 질문 및 오늘 알아야 할 답변

객체 지향 프로그래밍 인터뷰 질문은 프로그래머와 개발자가 프로그래밍 세계의 핵심 개념에 대한 지식을 향상시키는 데 도움이 될 수 있습니다.

OOP는 프로시저와 함수 대신 객체와 클래스에 중점을 둔 가장 필요하고 필요한 프로그래밍 패러다임 중 하나입니다.

일부 OOP 기반 프로그래밍 언어는 Objective-C, Java, Ada, Perl, Python, C++ 등입니다.

주요 기업은 패턴뿐만 아니라 객체 지향 접근 방식에 능숙한 개발자를 찾습니다.

따라서 이러한 면접 과정에 출두할 계획이라면 OOP 개념에 대한 깊은 이해가 있어야 합니다.

면접과 시험을 준비하는 데 도움이 되도록 자주 묻는 OOP 면접 질문과 답변을 살펴보겠습니다.

객체 지향 프로그래밍(OOP): 개요

OOP는 객체를 중심으로 하는 프로그래밍 패러다임입니다. 여기에서 객체는 클래스 템플릿에 지정된 일부 동작 및 특성을 포함하는 클래스와 같은 실제 인스턴스로 간주됩니다.

예를 들어 자동차를 생각해보자. OOP 모델에 따르면:

  • 개체: 자동차. 소유하고 있는 자동차와 같은 모든 유형 또는 모델이 될 수 있습니다.
  • 클래스: BMW, Chevrolet, Kia, Audi 등과 같은 자동차의 모델 또는 유형입니다.
  • 특성: 자동차의 색상, 자동차의 섀시 번호, 엔진 유형, 기어 유형 등.
  • 행동: 기어 변경 방법, 자동차 시동 방법 등.

여기서 특성은 속성, 속성 또는 데이터라고도 하는 반면 동작은 프로그래밍 언어에서 프로시저, 메서드 또는 함수로 알려져 있습니다.

그럼, OOP 면접에서 자주 묻는 질문부터 시작하겠습니다.

OOP라는 용어는 무엇을 의미합니까?

답변: 객체 지향 프로그래밍(OOP)은 프로시저와 함수 대신 객체와 클래스를 기반으로 하는 프로그래밍 모델입니다. 개별 개체는 클래스로 정렬됩니다. OOP는 다형성, 은닉, 상속 등과 같은 개념과 프로그래밍 패러다임으로 실제 개체를 설명합니다.

OOP는 코드와 데이터를 함께 묶습니다. 개체는 특정 특성과 동작을 가진 클래스를 통해 정의된 실제 개체인 반면 클래스는 특정 개체의 패턴으로 정의됩니다. 사용자 정의 데이터 유형이라고도 합니다.

여기에는 모바일 애플리케이션과 함께 설계 및 제조를 위한 프로그램이 포함됩니다. 예를 들어, 제조 시스템 시뮬레이션 소프트웨어에 OOP를 사용할 수 있습니다.

OOP가 아닌 다른 프로그래밍 패러다임은 무엇입니까?

답변: 프로그래밍 패러다임은 각 언어의 기능에 따라 프로그래밍 언어를 분류하는 방법입니다. 프로그래밍 패러다임에는 두 가지 유형이 있습니다.

  • 명령형 프로그래밍 패러다임: 논리를 실행하고 제어 흐름을 정의하는 방법에 중점을 둡니다. 여기에는 절차적 프로그래밍 패러다임, 객체 지향 프로그래밍(OOP) 및 병렬 프로그래밍이 포함됩니다.
  • 선언적 프로그래밍 패러다임: 제어 흐름이 아닌 프로그램에서 실행할 항목에 초점을 맞추고 논리를 정의합니다. 여기에는 논리적 프로그래밍 패러다임, 기능적 프로그래밍 패러다임 및 데이터베이스 프로그래밍 패러다임이 포함됩니다.

OOP와 SOP의 차이점은 무엇입니까?

답변: 다음 표를 통해 OOP와 SOP의 차이점을 이해해 보겠습니다.

  Windows에서 매핑된 드라이브를 삭제하는 방법

객체지향 프로그래밍 구조지향 프로그래밍프로시저와 함수가 아닌 객체에 기반을 둔 프로그래밍 모델로, 프로그램이 기능으로 구분되는 논리적 구조를 프로그램에 제공합니다. 상향식 접근 방식을 따릅니다. 하향식 접근 방식을 따릅니다.데이터 은닉 또는 캡슐화를 제공합니다.데이터 은닉을 제공하지 않습니다.복잡한 문제를 해결할 수 있습니다.중간 문제를 해결할 수 있습니다. 코드를 다시 사용할 수 있으므로 중복성이 낮습니다. 코드 재사용성을 지원하지 않습니다. 더 유연합니다.덜 유연합니다. 주요 관심사는 데이터입니다. 주요 관심사는 프로그램의 논리적 구조입니다.

OOP의 주요 기능은 무엇입니까?

답변: OOP의 주요 기능은 다음과 같습니다.

  • 계승
  • 캡슐화
  • 추출
  • 다형성
  • 메서드 재정의
  • 메소드 오버로딩
  • 사물
  • 클래스
  • 생성자와 소멸자

상속, 다형성 및 캡슐화는 이러한 기능을 비 OOP 언어와 구별하는 OOP의 기본 요소입니다.

캡슐화 란 무엇입니까?

답변: 캡슐화는 작업을 수행하고 동일한 캡슐을 사용자에게 제공하는 데 필요한 캡슐 내부에 클래스, 변수, 메서드 등을 넣는 방법입니다. 간단히 말해서 필요한 모든 방법과 데이터가 모여 있고 불필요한 세부 사항은 사용자에게 숨겨져 있습니다.

다른 방법으로도 정의할 수 있습니다.

  • 데이터 바인딩: 캡슐화는 메서드와 함께 데이터 멤버를 클래스로 또는 전체적으로 바인딩하는 프로세스입니다.
  • 데이터 은닉: 캡슐화는 객체의 구성원에 대한 액세스 제한 등과 같은 불필요한 정보를 숨기는 프로세스입니다.

다형성이란 무엇입니까?

답변: 다형성을 구성하는 두 단어로 용어를 분리하여 다형성을 이해합시다.

“Poly”는 “많은”을 의미합니다.

“Morph”는 “모양”을 의미합니다.

따라서 다형성은 다른 모양을 가진 객체로 설명할 수 있습니다.

OOP에서는 일부 데이터, 개체, 메서드 또는 코드가 여러 컨텍스트 또는 상황에서 다르게 동작하는 프로세스라고 합니다. OOP 모델에는 두 가지 유형의 다형성이 있습니다.

  • 런타임 다형성
  • 컴파일 시간 다형성

즉, 단일 인터페이스에 대한 여러 정의입니다. 예를 들어 ‘속도’라는 메소드로 구성된 ‘차량’이라는 클래스가 있습니다. 차량마다 속도가 다르기 때문에 속도를 정의하는 것은 불가능합니다. 따라서 이것은 다양한 차량에 대한 다양한 정의의 하위 클래스에서 정의할 수 있습니다.

정적 다형성이란 무엇입니까?

답변: 정적 다형성은 컴파일 시간 다형성이라고도 합니다. 해당 값을 기반으로 해당 연산자 또는 기능과 객체를 연결할 수 있는 기능입니다. 이것은 연산자 오버로딩 또는 메서드 오버로딩을 통해 달성할 수 있습니다.

여기에서 메소드는 유사한 이름을 사용하지만 각 이름의 매개변수는 다릅니다. 개체는 유사한 트리거에 대해 다르게 동작합니다. 따라서 동일한 클래스에서 여러 메서드가 구현됩니다.

동적 다형성이란 무엇입니까?

답변: 동적 다형성은 런타임 다형성이라고도 합니다. 실행 또는 런타임 중에 함수의 실제 통합이 해결되는 OOP의 다형성 유형을 나타냅니다. 메서드 재정의를 통해 달성할 수 있습니다.

예를 들어, 두 개의 클래스, 즉 bike와 Yamaha가 생성되고 Yamaha 클래스는 run() 메서드를 재정의하는 bike 클래스를 확장합니다. 하위 클래스 메서드는 상위 클래스 메서드를 재정의하므로 런타임에 호출됩니다.

수업이란 무엇입니까?

답변: 클래스는 멤버 데이터라고 하는 일부 값을 포함하는 청사진 또는 템플릿으로 정의할 수 있습니다. 여기에는 기능 또는 동작으로 알려진 몇 가지 규칙도 포함됩니다. 객체를 생성하면 클래스에 정의된 함수와 데이터를 자동으로 가져옵니다.

그러나 클래스는 객체에 대한 청사진 또는 템플릿입니다. 클래스를 기반으로 요구 사항에 따라 많은 개체를 디자인할 수 있습니다. 예를 들어 처음에는 자동차 템플릿이 생성됩니다. 그 후, 자동차의 템플릿을 기반으로 다양한 자동차 유닛이 설계됩니다.

  Nexus 6P 및 Nexus 5X에서 세로 모드를 얻는 방법

개체란 무엇입니까?

답변: 개체는 템플릿에 정의된 동작 및 멤버의 인스턴스를 포함하는 클래스의 인스턴스로 정의할 수 있습니다. 개체는 사용자가 상호 작용하는 실제 엔터티이지만 클래스는 해당 개체의 청사진일 뿐입니다.

따라서 객체는 특정 자동차 모델과 같이 일부 특성 또는 동작을 가지며 공간을 소비합니다.

클래스와 구조의 차이점은 무엇입니까?

답변: 표를 통해 이것을 이해합시다.

클래스 구조 클래스는 참조 유형입니다. 구조는 값 유형입니다. 힙 메모리에 할당됩니다. 스택 메모리에 할당됩니다. 할당은 큰 참조 유형에서 저렴합니다. 할당은 참조 유형보다 값 유형에서 저렴합니다. 무한한 기능을 가지고 있습니다. 기능이 제한되어 있습니다. 클래스는 큰 프로그램에 사용됩니다. 구조는 작은 프로그램에 사용됩니다. 여기에는 생성자와 소멸자가 포함됩니다. 매개변수화된 생성자 또는 정적 생성자가 포함됩니다. 인스턴스를 생성할 때마다 new() 키워드를 사용합니다. 키워드가 있거나 없이 인스턴스를 쉽게 생성할 수 있습니다. 클래스는 다른 클래스에서 상속할 수 있습니다. 구조는 상속할 수 없습니다. 클래스의 데이터 멤버는 보호될 수 있습니다. 구조의 데이터 멤버는 보호될 수 없습니다. 함수 멤버는 추상이거나 virtualFunction 멤버는 추상 또는 가상일 수 없습니다. 클래스의 두 가지 다른 변수에는 유사한 개체의 참조가 포함될 수 있습니다. 각 변수에는 자체 복사본이 포함되어 있습니다.

상속이란 무엇입니까?

답변: 상속은 클래스가 다른 클래스의 주요 속성을 상속할 수 있도록 하는 OOP의 기능 중 하나입니다. 예를 들어 ‘vehicle’이 클래스라면 ‘car’, ‘bike’ 등은 ‘ vehicle’ 클래스의 키 속성을 상속할 수 있는 다른 클래스입니다.

이 기능은 중복 코드를 제거하는 데 도움이 됩니다. 따라서 코드의 크기를 줄입니다. 간단히 말해서 상속은 부모 클래스에서 자식 클래스로 속성을 받는 것으로 정의됩니다. 여기에서 ‘vehicle’은 상위 클래스이고 ‘car’ 또는 ‘bike’는 위 예제의 하위 클래스입니다.

이렇게 하면 동일한 코드를 다시 작성하거나 프로세스에서 시간을 낭비하지 않고 한 클래스의 프로그래밍 코드를 다른 클래스에서 재사용할 수 있습니다.

다양한 상속 유형은 무엇입니까?

답변: OOP 모델에는 다음과 같은 다양한 유형의 상속이 사용됩니다.

  • 단일 상속: 단일 클래스가 단일 기본 클래스의 공통 기능을 상속하는 상속을 정의합니다.
  • 다중 상속: 단일 클래스가 둘 이상의 클래스를 상속할 때 그림이 나타납니다.
  • 다중 수준 상속: 이것은 클래스가 다른 클래스의 하위 클래스인 다른 클래스에서 상속됨을 의미합니다.
  • 계층적 상속: 하나의 클래스에 여러 개의 하위 클래스가 있는 상속을 나타냅니다.
  • 하이브리드 상속: 다단계 상속과 다중 상속의 조합입니다.

상속의 한계는 무엇입니까?

답변: 상속의 일부 제한 사항은 다음과 같습니다.

  • 그것은 프로그램을 실행하는 데 필요한 노력과 시간을 증가시킵니다. 한 클래스에서 다른 클래스로 자주 점프해야 하고 시간이 오래 걸리기 때문입니다.
  • 부모 클래스는 자식 클래스와 함께 매우 밀접하게 연결되어 있어 유연성이 떨어집니다.
  • 주의 깊게 통합해야 합니다. 그렇지 않으면 불충분하거나 잘못된 결과를 초래할 수 있습니다.
  • 프로그램을 한 번만 수정해도 부모 클래스와 자식 클래스 모두에서 코드가 변경될 수 있습니다.

추상화란 무엇입니까?

답변: 추상화는 OOP의 요소 중 하나입니다. 추상화의 핵심 역할은 복잡성을 처리하는 것입니다. 이것은 사용자로부터 원치 않는 세부 정보를 숨김으로써 수행됩니다. 이를 통해 사용자는 숨겨진 복잡성에 대해 생각하지 않고 추상화 위에 복잡한 논리를 구현할 수 있습니다.

예를 들어, 커피 애호가라면 커피 머신을 사용하여 커피 한 잔을 만들기 위해 얼마나 많은 우유, 커피 원두, 각설탕을 추가해야 하는지 알아야 합니다. 그 기계의 작동 원리에 대해 생각할 필요가 없습니다. 커피 머신은 알 필요가 없는 숨겨진 복잡성이지만 커피를 만드는 과정은 필수입니다.

  인기 있는 Bi 도구의 자세한 비교: Cognos 대. Tableau

추상화에는 두 가지 유형이 있습니다.

  • 데이터 추상화
  • 프로세스 추상화

생성자 란 무엇입니까?

답변: 생성자는 이름이 클래스 이름과 유사한 클래스 또는 구조의 특수 메서드입니다. 객체 초기화에 필요한 목적을 제공합니다. 또한 클래스에 개체를 할당하는 메서드와 멤버 데이터를 인스턴스화하는 데 도움이 됩니다.

생성자를 생성할 때 염두에 두어야 할 몇 가지 사항이 있습니다.

  • 클래스 이름과 동일하게 이름이 지정됩니다.
  • 추상적이거나 최종적이거나 정적일 수 없습니다.
  • 반환 유형 변수가 없습니다.

C++의 다양한 유형의 생성자는 무엇입니까?

답변: C++에는 주로 세 가지 유형의 생성자가 있습니다.

  • 기본 생성자: 정의에 매개변수나 인수가 없는 생성자. 이 유형의 생성자는 데이터 멤버 또는 변수를 실제 값으로 초기화하는 데 사용됩니다.
  • 매개변수화된 생성자: 선언 및 정의에 인수 또는 매개변수를 포함합니다. 둘 이상의 매개변수가 매개변수화된 생성자를 통해 전달할 수 있습니다. 여러 생성자의 차이점을 알기 위해 오버로딩하는 데 사용됩니다.
  • 복사 생성자: 유사한 클래스의 다른 개체를 사용하여 개체를 초기화하는 멤버 함수입니다. 또한 단일 개체에서 다른 개체로 데이터를 복사하는 데 도움이 됩니다.

소멸자 란 무엇입니까?

답변: 소멸자는 객체를 파괴하는 동안 자동으로 호출되는 메서드입니다. 특정 작업을 구현합니다.

  • 객체 초기화 시 이전에 할당된 힙 공간 복구
  • 데이터베이스 연결 및 파일 닫기
  • 네트워크 리소스 및 리소스 잠금 해제
  • 다양한 하우스키핑 작업 수행

즉, 소멸자는 생성자에 의해 초기화된 객체를 파괴합니다. 클래스 이름과 이름이 같지만 앞에 (~) 기호가 오는 특수 멤버 함수입니다. 소멸자는 단방향 함수이므로 오버로드될 수 있습니다.

가비지 컬렉션(GC)이란 무엇입니까?

답변: GC(가비지 컬렉션)는 Java 및 C#과 같은 프로그래밍 언어에 내장된 메모리 복구 요소입니다. GC 지원 프로그래밍 언어에는 프로그램 내에서 더 이상 필요하지 않은 메모리 공간을 자동으로 해제하는 적어도 하나의 가비지 수집기가 포함되어 있습니다.

가비지 수집은 프로그램이 여전히 메모리 할당량 내에 있음을 확인합니다. 개발자가 프로그램의 메모리를 수동으로 관리하는 것을 방지하여 메모리 관련 버그를 최소화합니다.

예외 처리란 무엇입니까?

답변: 예외 처리는 컴퓨터 프로그램이 실행되는 동안 예기치 않은 이벤트에 응답하는 방법입니다. 프로그래머는 시스템이나 프로그램이 충돌하는 것을 방지하기 위해 원치 않는 이벤트(예외)를 “처리”해야 합니다. 이 방법이 없으면 예외가 프로그램의 일반적인 작동을 방해하고 비효율적이거나 위험을 초래할 수 있습니다.

try/catch 블록이란 무엇입니까?

답변: Try 또는 catch는 프로그램 실행 중 코딩 또는 데이터 오류로 인한 예외 처리를 나타내는 키워드입니다.

  • try 블록은 예외가 발생하는 코드 블록입니다.
  • catch 블록은 try 블록 예외를 처리하고 catch합니다.

try 및 catch 문은 C++를 비롯한 다양한 프로그래밍 언어에서 자주 사용됩니다. C#, 자바, SQL, 자바스크립트. 모든 try 문은 실행을 처리하기 위해 catch 문과 일치합니다. 다음은 try 및 catch 문에서 기억해야 할 몇 가지 사항입니다.

  • try 블록 다음에 catch 블록이 옵니다.
  • try 블록 뒤에는 적어도 하나의 catch 블록이 옵니다.
  • try 블록 다음에 또 다른 try 블록이 오고 그 다음에 catch 블록이 옵니다.

결론

OOP는 프로그래머가 알아야 할 필수 개념입니다. 그것을 철저히 배우면 OOP 개념을 사용하는 언어로 잘 프로그래밍하는 데 도움이 될 것입니다.

인터뷰나 테스트를 준비 중이라면 위의 인터뷰 질문과 답변이 클래스, 객체, 캡슐화, 다형성, 상속, 추상화 등과 같은 OOP 개념에 대한 이해를 새롭게 하는 데 도움이 될 것입니다. 이렇게 하면 자신 있게 면접에 임하고 성공적으로 통과하여 경력을 쌓을 수 있습니다.

이러한 SQL 인터뷰 질문 중 일부를 볼 수도 있습니다.