면접 질문 모음

C# 문법

  1. 객체란 무엇인가요? 클래스와 어떤 연관이 있나요?
  2. 생성자에 대해 간단하게 설명해주세요.
  3. 접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요.
  4. static 한정자에 대해 설명해주세요.
  5. SOLID 원칙에 대해 설명해주세요.
  6. 객체지향 프로그래밍의 속성 중 하나인 다형성과 이를 활용한 설계의 장점에 대해 설명해주세요.
  7. override와 overload에 대해 설명해주세요.
  8. 확장 메서드에 대해 설명하고 어떻게 활용했는지 알려주세요.
  9. 콜백이란 무엇인가요? 콜백을 사용해본 경험이 있을까요?
  10. 델리게이트(delegate; 대리자)란 무엇인가요?
  11. C#의 event란 무엇인가요?
  12. Unity에서 사용하는 델리게이트 혹은 이벤트에는 어떤 것이 있나요?
  13. 참조 형식과 값 형식에 대해 설명해주세요.
  14. 메모리에서 스택과 힙의 차이점에 대해 설명해주세요.
  15. 1번과 2번 질문의 답안을 기반으로 struct와 class의 차이점에 대해 설명해주세요.
  16. 얕은 복사와 깊은 복사의 차이점은 무엇인가요?
  17. 박싱과 언박싱이 일어나는 과정을 메모리 관점에서 설명해주세요.
  18. 클래스를 다른 클래스로 상속하기 위한 방법은 무엇인가요?
  19. 클래스 상속에서 다이아몬드 문제(diamond problem)가 발생하는 이유와 이를 해결하는 방법에 대해 설명해주세요.
  20. 인터페이스란 무엇인가요?
  21. 인터페이스와 추상클래스의 차이는 무엇인가요?
  22. 가비지 컬렉터란 무엇인가요?
  23. 가비지 컬렉터의 장점과 단점에 대해 설명해주세요.
  24. 가비지 컬렉터의 세대 개념에 대해 설명해주세요.
  25. 박싱, 언박싱을 사용할 때 주의해야 할 점은 무엇일까요?
  26. 오브젝트 풀을 사용하면 메모리 관리에 도움이 되는 이유가 무엇일까요?
  27. 제네릭이란 무엇인가요?
  28. 람다식(Lambda Expression)이 무엇인지 설명해주세요.
  29. LINQ란 무엇인가요?
  30. 리플렉션(Reflection)이 뭔지, 사용을 해봤다면 어떤 이유에서 사용했는지 설명해주세요.

Unity 문법

  1. Unity 생명주기(Unity Life Cycle)에 대해서 설명해주세요.
  2. MonoBehaviour 클래스의 주요 메서드와 그 기능에 대해 설명해주세요.
    • MonoBehaviour 클래스에서 Start와 Awake의 차이점은 무엇이며, 이를 적절히 사용하는 방법에 대해 설명해주세요.
  3. Update, FixedUpdate, LateUpdate의 차이점에 대해 설명해주세요.
  4. Time.deltaTime이란 무엇이며, 사용하는 이유에 대해 설명해주세요.
  5. 코루틴의 동작원리와 사용해본 예시를 함께 설명해주세요.
  6. Invoke와 코루틴의 차이에 대해 설명해주세요.
  7. 코루틴과 멀티쓰레딩은 어떤 차이가 있는지 설명해주세요.
  8. 유니티 최적화 기법은 어떤 것들이 있나요?
    • 최적화를 해본 적이 있나요? 없다면 어떤 최적화가 있는지 설명해주세요.
    • 최적화에서 가장 중요한 부분은 무엇인가요?
    • 최적화를 위해서 적용해본 텍스쳐 포맷이 있나요?
  9. 드로우콜에 대해서 설명하고, 최적화하는 방식에 대해 알고 있는 것이 있으면 설명하세요.
  10. Find 함수 사용을 자제해야 하는 이유에 대해 설명해주세요.
  11. Update에서 GetComponent와 그 계열의 캐싱을 지양해야하는 이유를 설명하세요.
  12. CSV/JSON 등 데이터 저장 포맷에 대해 설명하고, 활용에 적절한 상황을 설명해주세요.
  13. 특정 데이터를 JSON으로 활용하기 위해 해야하는 작업은 무엇인가요?
  14. Unity에서 필드를 직렬화하려면 어떻게 해야하는지 설명해주세요.
  15. Unity에서 멀티스레딩을 구현하기 위한 방법에 대해 설명해주세요.
  16. CPU와 GPU의 작동 방법은 어떤 차이가 있는지 설명해주세요.
  17. 월드 스페이스 (World Space) 와 로컬 스페이스 (Local Space)의 차이에 대해 설명해주세요.
  18. 벡터의 내적과 외적을 어느 상황에 사용할 수 있는지 설명해주세요.
  19. 쿼터니언을 사용하는 이유에 대해 설명해주세요.
  20. 네트워크 프로토콜 (IP, TCP, UDP)에 대해 설명해주세요.
    1. TCP와 UDP의 차이를 설명해주세요.
  21. 렌더링 파이프라인에 대해 설명해주세요.
  22. 3D 공간에 있는 오브젝트들이 화면에 표현되는 픽셀로 표시되기까지의 과정을 설명해보세요.
  23. 셰이더를 활용해본 경험이 있을까요? 어떻게 활용했는지 설명해주세요.

자료구조 & 알고리즘

  1. LinkedList의 특성을 설명해주세요.
    1. LinkedList는 언제 사용하면 좋은 자료구조인가요? 반대로 언제 사용하기 불리할까요?
    2. LinkedList를 본인의 프로젝트에 적용해본 경험을 말해주세요.
  2. Stack의 특성을 설명해주세요.
    1. Stack은 언제 사용하면 좋은 자료구조인가요? 반대로 언제 사용하기 불리할까요?
    2. Stack을 본인의 프로젝트에 적용해본 경험을 말해주세요.
  3. Queue의 특성을 설명해주세요.
    1. Queue는 언제 사용하면 좋은 자료구조인가요? 반대로 언제 사용하기 불리할까요?
    2. Queue를 본인의 프로젝트에 적용해본 경험을 말해주세요.
  4. Tree의 순회(Traversal) 방법에 대해 설명해주세요.
  5. DFS와 BFS에 대해 설명해주세요.
    1. DFS와 BFS를 본인의 프로젝트에 활용한 경험이 있다면 설명해주세요.
  6. 행동 트리 (Behaviour Tree) 에 대해 설명해주세요.
  7. 길찾기 알고리즘에 대해 알고 있는 것이 있나요?
  8. 각 길찾기 알고리즘의 차이점은 무엇인가요?
  9. A* 알고리즘에 대해 설명해주세요.
  10. 해당 알고리즘들을 프로젝트에 적용해본 경험이 있나요?

기타

  1. 게임 개발 학습 과정에서 자신이 가장 재미있었거나 자신 있게 설명할 수 있는 부분이 있다면 설명해주세요.
  2. 포트폴리오에서 본인이 담당한 부분이 무엇인가요?
  3. 만약 본인이 개발한 것을 다시 개발한다면, 어떻게 개선할 것인지 설명해주세요.
  4. 본인이 활용하는 디버그 방법을 설명해보세요.
  5. 협업하면서 가장 어려웠던 점이 무엇인가요?
  6. 구현하면서 기술적으로 어려웠던 부분을 어떻게 해결하였나요?
  7. Git Repository를 팀원들과 공동으로 작업하면서 발생했던 문제점이 있다면 무엇이었는지, 어떻게 해결하였는지 이야기해주세요.

'기술면접질문' 카테고리의 다른 글

기술 면접 질문과 답변(1)  (0) 2024.12.09

면접관의 기술면접 의도
1.개념(정의) : 너가 이 주제에 대해 개념을 잘 알고 있느냐?
2.구현방식 : 물어본 주제가 어떤식으로 동작되는지 알고 있느냐?
3.장점과 단점 or 특징 : 해당 주제의 장단점을 알고 어떡해 사용되는지 알고 있느냐?
4.실용적인 예시 : 실제로 사용해본적이 있는가? 없다면 언제 사용해야되는지 알고 있는가?


1.객체란 무엇인가요? 클래스와 어떤 연관이 있나요? 

개념 : 객체는 오브젝트를 의미하며 런타임시 실제로 동작하게되는 하나의 단위라고 생각합니다.

구현 방식 : C++이나 C#에서는 new라는 키워드를 사용하여 동적 할당을 할 수 있고 , 자료형을 선언하여 정적으로도 생성하여 사용 할 수 있습니다.

장점과 단점 or 특징: 하나의 기능 및 동작을 추상화하여 객체 안에 작성하여 사용 함으로 하나의 객체로 수 십개의 똑같은 객체를 만들어 사용 할 수 있습니다.

실용적인 예시 : 클래스는 객체를 만드는 설계도로 , 해당 클래스에 구현 코드를 작성한 뒤 new 키워드나 정적으로 생성하여 어러 객체를 사용 할 수 있습니다. 

 

 

4.static 한정자에 대해 설명해주세요.

static은 전역변수의 위험성을 보완하기 위한 한정자입니다.

static은 클래스간 공유 상태를 관리 하거나 인스턴스(객체)에 의존하지 않는 멤버를 선언하는데

사용되는 한정자입니다.

static 한정자가 붙은 필드나 메서드는 컴파일시 제일 먼저 생성되며,

static 멤버는 프로그램 실행 시(즉, 클래스가 로드될 때) 메모리에 할당되며, 런타임에 클래스가 처음 참조되거나

로드 될때 초기화 됩니다.
어느 클래스에서든지 호출이 가능해집니다.

해당 클래스의 정적멤버로서 ,명시적으로 클래스 이름을 통해 접근하여 호출이 가능해짐 

 

static이 사용되는 주요 사례 -> 유틸리티메서드 , 싱글톤 패턴에 사용된다고 언급하기 

 

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

객체지향 프로그래밍(OOP) 및 설계의 다섯 가지 기본 원칙을 정리한것을 SOLID원칙이라고 합니다.

S는 SRP(single responsibley principle )로 , 단일 책임 원칙을 의미하며

하나의 클래스에 하나의 책임을 가진다는 의미입니다.

O는 OCP(Open-Close principle)로, 개방-폐쇄 원칙을 의미하며

확장에는 개방을 , 변경에는 폐쇠적으로 설계를 해야된다는 의미입니다.

L은 LSP(Liskov substitition principle)로, 리스코프 치환 원칙을 의미하며,

다형성에 관련된 원칙으로 상속,인터페이스 설계에 적용됩니다. 

또한 부모-자식의 상속관계에서 자식클래스는 언제나 부모클래스로 치환되어 사용이 가능해져야 합니다.

ISP : 인터페이스 분리 원칙 (Interface segregation principle)
인터페이스의 단일 책임 , SPR는 클래스의 단일책임, ISP는 인터페이스의 단일책임을 의미
SPR도 책임의 범위에 대해 분리기준이 있듯이 , 인터페이스를 분리하는 기준은 상황에 따라 다름, 
핵심은 관련 있는 기능끼리 하나의 인터페이스로 모으되 지나치게 커지지 않도로 크기에 제한을 두라는 의미
ISP는 SPR를 만족하면 성립되는가? -> 반드시 그렇다고 할수 없다 
ex)게시판 인터페이스로 글쓰기 읽기 수정 삭제 권한이 있을때 해당 인터페이스는 관리자에 상속해서 사용하지만
일반 사용자가 상속해서 사용하게되면 글삭제 권한이 생기기에 ISP를 만족 할수 없다.
인터페이스를 설계할 때는 클라이언트 중심으로 설계하여 변경 가능성을 최소화해야 한다" , 
나중에 수정사항이 생겨서 또 인터페이스를
분리하는 행위를 하지 말아야되는것이 ISP원칙의 주의해야 할 점이다. 

DIP 원칙이란 객체에서 어떤 Class를 참조해서 사용해야하는 상황이 생긴다면, 
그 Class를 직접 참조하는 것이 아니라 그 대상의 상위 요소(추상 클래스 or 인터페이스)로 참조하라는 원칙
이 때 객체들은 나름대로의 원칙을 갖고 정보를 주고 받아야 하는 약속이 있다. 
여기서 나름대로의 원칙이란 추상성이 낮은 클래스보다 추상성이 높은 클래스와 통신을 한다는 것을 의미하는데 이것이 DIP 원칙

 

 

 

'기술면접질문' 카테고리의 다른 글

기술 면접 리스트  (0) 2024.12.12

+ Recent posts