[내배캠] 면접 질문 모음 4~8

Sungchan Ahn(안성찬)·2024년 12월 9일

내일배움캠프

목록 보기
78/104
  1. static 한정자에 대해 설명해주세요.

    static 한정자는 필드 및 프로퍼티, 메서드, 클래스 등에 붙는 한정자이다.
    필드 및 프로퍼티, 메서드 등 클래스의 멤버에 붙는 경우, 해당 클래스의 인스턴스가 아니라 클래스 자체에 속해 인스턴스를 생성하지 않고도 해당 멤버에 접근할 수 있게 한다. 필드 및 프로퍼티의 경우 해당 클래스가 처음 사용될 때 한 번 초기화 된 후 계속 같은 메모리를 사용한다.
    클래스에 붙는 경우, 해당 클래스는 인스턴스화 할 수 없기 때문에 클래스 이름을 사용하여 정적 클래스의 멤버에 접근한다. 정적 멤버만 포함할 수 있고 생성자를 포함하지 않는다.

  2. SOLID 원칙에 대해 설명해주세요.

    SOLID 원칙은 객체지향 프로그래밍의 5대 원칙을 뜻한다. 각 원칙의 첫 이니셜로 만든 단어이다. SOLID 원칙을 통해 객체지향 설계의 핵심인 낮은 결합도와 높은 응집도를 유지할 수 있다.

    • 단일 책임 원칙 (SRP : Single Responsibility Principle)
      하나의 클래스는 최소한의 기능(하나의 기능)만을 가져야 한다.
      만약 클래스가 수행하는 기능이 여러 개라면 메서드 간, 클래스 간의 강한 결합을 가질 가능성이 높아진다.
    • 개방 폐쇄 원칙 (OCP : Open/Closed Principle)
      확장에는 개방(Open), 변경(수정)에는 폐쇄(Closed)되어 있어야 한다.
      확장(추가)할 때 기존의 코드를 변경하지 않아도 되게 끔 프로그램을 작성해야 한다.
    • 리스코프 치환 원칙 (LSP : Liskov’s Substitution Principle)
      자식 타입 객체는 부모 타입 객체에서 가능한 행위를 수행할 수 있어야 한다.
      자식 타입 객체는 부모 타입 객체로 언제든 대체할 수 있어야 한다.
    • 인터페이스 분리 원칙 (ISP : Interface Segregation Principle)
      인터페이스를 사용하는 클라이언트를 기준으로 분리함으로써, 클라이언트의 목적과 용도에 적합한 인터페이스 만을 제공하는 것이다. 여러 기능을 하는 범용 인터페이스 하나를 만드는 것이 아니라 특정 클라이언트를 위한 인터페이스 여러 개로 나누어 구현함으로써 꼭 필요한 기능만 수행할 수 있도록 한다.
    • 의존관계 역전 원칙 (DIP : Dependency Inversion Principle)
      자주 변경되는 저수준 모듈에 의존하는 것이 아니라 변하기 어려운 추상화된 고수준 모듈 의존하는 원칙이다. 어떤 클래스가 다른 클래스가 필요한 경우 해당 클래스를 직접적으로 의존하는 것이 아니라 추상클래스나 인터페이스에 의존해야 한다.
  3. 객체지향 프로그래밍의 속성 중 하나인 다형성과 이를 활용한 설계의 장점에 대해 설명해주세요.

    다형성은 하나의 객체가 여러 형태를 가지는 것을 의미한다. 상속 받아 만들어진 여러 자식 클래스를 통해 다형성을 보여줄 수 있다. 다형성을 활용하면 부모 클래스에서 상속 받아 여러 자식 클래스에서 서로 다르게 구현한 기능을 부모 클래스를 통해 일괄적으로 처리할 수 있기 때문에, 코드가 간결해지고 재사용성이 높아진다.

  4. override와 overload에 대해 설명해주세요.

    override는 부모 클래스에서 정의된 메서드를 자식 클래스에서 재정의하는 것을 의미한다. 같은 메서드가 부모와 자식 클래스에서 서로 다른 기능을 수행하여 다형성을 구현할 수 있다.
    overload는 매개변수의 타입과 수를 다르게 지정하여 동일한 이름의 메서드를 구현하는 것을 의미한다. 메서드, 생성자를 오버로딩하여 상황에 따라 다른 동작을 수행할 수 있도록 하여 코드의 유연성을 높일 수 있다.

  5. 확장 메서드에 대해 설명하고 어떻게 활용했는지 알려주세요.

    확장 메서드는 기존의 클래스나 구조체를 변경하지 않고, 새로운 메서드를 추가할 수 있는 기능이다. 이 메서드는 static 클래스 안에서 정의되며 메서드의 첫 번째 매개변수로 this 키워드를 사용한다.
    확장 메서드를 활용하여 코드를 간결하게 유지하고 재사용성을 높일 수 있다. 또한 기존의 클래스를 수정하지 않고도 기능을 확장할 수 있다.

profile
게임 개발 기록

0개의 댓글