[2025/07/18]TIL

오수호·2025년 7월 18일

TIL

목록 보기
44/60

면접예상질문 정리

오늘도 면접예상질문들을 정리하는 시간을 가져보았다.

  1. 객체지향 프로그래밍의 속성 중 하나인 다형성과 이를 활용한 설계의 장점에 대해 설명해주세요.

    객체지향 - 다형성(Polymorphism)

    다형성은 같은 타입(기반 클래스나 인터페이스)으로 서로 다른 구현체를 처리할 수 있게 해주는 개념이다.

    예를 들어, IEnemy 인터페이스를 구현한 다양한 적 클래스가 있을 때, 아래처럼 공통 로직에서 다르게 동작하게 만들 수 있다:

    public interface IEnemy {
       void Attack();
    }
    
    public class Orc : IEnemy {
       public void Attack() => Debug.Log("Orc Attack!");
    }
    
    public class Goblin : IEnemy {
       public void Attack() => Debug.Log("Goblin Attack!");
    }
    
    // 사용 예시
    void PerformAttack(IEnemy enemy) {
       enemy.Attack(); // 다형성 적용
    } 

    이렇게 하면 새로운 적을 추가할 때 기존 코드를 거의 수정하지 않고도 확장할 수 있다 (OCP 원칙 적용).

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

    override vs overload

    Override: 부모 클래스의 메서드를 자식 클래스에서 재정의
    Overload: 같은 이름의 메서드를 인자 형식이나 개수에 따라 여러 개 정의

    public class Base {
       public virtual void Speak() => Debug.Log("Base");
    }
    
    public class Child : Base {
       public override void Speak() => Debug.Log("Child"); // override
    }
    
    public class OverloadExample {
       public void Print(string msg) => Debug.Log(msg);
       public void Print(int num) => Debug.Log(num); // overload
    }
  3. 확장 메서드에 대해 설명하고 어떻게 활용했는지 알려주세요.

    확장 메서드 (Extension Method)

    public static class Vector3Extensions {
       public static Vector3 Horizontal(this Vector3 v) {
           return new Vector3(v.x, 0, v.z);
       }
    }
    
    // 사용
    Vector3 pos = new Vector3(1, 2, 3);
    Vector3 groundPos = pos.Horizontal();

    UI 스크립트나 Vector, String 관련 편의 기능에서 자주 활용했다.

  4. 콜백이란 무엇인가요? 콜백을 사용해본 경험이 있을까요?

    콜백(Callback)

    콜백은 특정 작업이 끝난 후 실행할 로직을 전달해줄 때 사용했다.

    public void FlipCard(Action onComplete) {
       StartCoroutine(FlipRoutine(onComplete));
    }
    IEnumerator FlipRoutine(Action onComplete) {
       // 애니메이션 수행
       yield return new WaitForSeconds(0.5f);
       onComplete?.Invoke(); // 콜백 호출
    }
    
    
    람다식으로 전달하면 사용도 간결해져서 중첩 없이 로직을 구성할 수 있었다.
    
  5. 델리게이트(delegate; 대리자)란 무엇인가요?

    델리게이트(delegate)

    델리게이트는 메서드를 참조할 수 있는 "함수 포인터" 개념이다. 특히 Unity에서는 Action, Func, event 키워드와 함께 콜백 구조나 옵저버 패턴 구현에 자주 사용된다.
    UI 버튼이나 상태 변화 등에 외부에서 이벤트를 구독해두면, Player 내부 로직을 건드리지 않고도 다양한 기능 확장이 가능하다.

    public class Player {
       public event Action OnJump;
    
       public void Jump() {
           Debug.Log("점프!");
           OnJump?.Invoke(); // 구독된 메서드들 실행
       }
    }


profile
게임개발자 취준생입니다

0개의 댓글