BirdHead
2024. 12. 12. 10:02
2024. 12. 12. 10:02
면접 질문 모음
C# 문법
- 객체란 무엇인가요? 클래스와 어떤 연관이 있나요?
- 생성자에 대해 간단하게 설명해주세요.
- 접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요.
- static 한정자에 대해 설명해주세요.
- SOLID 원칙에 대해 설명해주세요.
- 객체지향 프로그래밍의 속성 중 하나인 다형성과 이를 활용한 설계의 장점에 대해 설명해주세요.
- override와 overload에 대해 설명해주세요.
- 확장 메서드에 대해 설명하고 어떻게 활용했는지 알려주세요.
- 콜백이란 무엇인가요? 콜백을 사용해본 경험이 있을까요?
- 델리게이트(delegate; 대리자)란 무엇인가요?
- C#의 event란 무엇인가요?
- Unity에서 사용하는 델리게이트 혹은 이벤트에는 어떤 것이 있나요?
- 참조 형식과 값 형식에 대해 설명해주세요.
- 메모리에서 스택과 힙의 차이점에 대해 설명해주세요.
- 1번과 2번 질문의 답안을 기반으로 struct와 class의 차이점에 대해 설명해주세요.
- 얕은 복사와 깊은 복사의 차이점은 무엇인가요?
- 박싱과 언박싱이 일어나는 과정을 메모리 관점에서 설명해주세요.
- 클래스를 다른 클래스로 상속하기 위한 방법은 무엇인가요?
- 클래스 상속에서 다이아몬드 문제(diamond problem)가 발생하는 이유와 이를 해결하는 방법에 대해 설명해주세요.
- 인터페이스란 무엇인가요?
- 인터페이스와 추상클래스의 차이는 무엇인가요?
- 가비지 컬렉터란 무엇인가요?
- 가비지 컬렉터의 장점과 단점에 대해 설명해주세요.
- 가비지 컬렉터의 세대 개념에 대해 설명해주세요.
- 박싱, 언박싱을 사용할 때 주의해야 할 점은 무엇일까요?
- 오브젝트 풀을 사용하면 메모리 관리에 도움이 되는 이유가 무엇일까요?
- 제네릭이란 무엇인가요?
- 람다식(Lambda Expression)이 무엇인지 설명해주세요.
- LINQ란 무엇인가요?
- 리플렉션(Reflection)이 뭔지, 사용을 해봤다면 어떤 이유에서 사용했는지 설명해주세요.
Unity 문법
- Unity 생명주기(Unity Life Cycle)에 대해서 설명해주세요.
- MonoBehaviour 클래스의 주요 메서드와 그 기능에 대해 설명해주세요.
- MonoBehaviour 클래스에서 Start와 Awake의 차이점은 무엇이며, 이를 적절히 사용하는 방법에 대해 설명해주세요.
- Update, FixedUpdate, LateUpdate의 차이점에 대해 설명해주세요.
- Time.deltaTime이란 무엇이며, 사용하는 이유에 대해 설명해주세요.
- 코루틴의 동작원리와 사용해본 예시를 함께 설명해주세요.
- Invoke와 코루틴의 차이에 대해 설명해주세요.
- 코루틴과 멀티쓰레딩은 어떤 차이가 있는지 설명해주세요.
- 유니티 최적화 기법은 어떤 것들이 있나요?
- 최적화를 해본 적이 있나요? 없다면 어떤 최적화가 있는지 설명해주세요.
- 최적화에서 가장 중요한 부분은 무엇인가요?
- 최적화를 위해서 적용해본 텍스쳐 포맷이 있나요?
- 드로우콜에 대해서 설명하고, 최적화하는 방식에 대해 알고 있는 것이 있으면 설명하세요.
- Find 함수 사용을 자제해야 하는 이유에 대해 설명해주세요.
- Update에서 GetComponent와 그 계열의 캐싱을 지양해야하는 이유를 설명하세요.
- CSV/JSON 등 데이터 저장 포맷에 대해 설명하고, 활용에 적절한 상황을 설명해주세요.
- 특정 데이터를 JSON으로 활용하기 위해 해야하는 작업은 무엇인가요?
- Unity에서 필드를 직렬화하려면 어떻게 해야하는지 설명해주세요.
- Unity에서 멀티스레딩을 구현하기 위한 방법에 대해 설명해주세요.
- CPU와 GPU의 작동 방법은 어떤 차이가 있는지 설명해주세요.
- 월드 스페이스 (World Space) 와 로컬 스페이스 (Local Space)의 차이에 대해 설명해주세요.
- 벡터의 내적과 외적을 어느 상황에 사용할 수 있는지 설명해주세요.
- 쿼터니언을 사용하는 이유에 대해 설명해주세요.
- 네트워크 프로토콜 (IP, TCP, UDP)에 대해 설명해주세요.
- TCP와 UDP의 차이를 설명해주세요.
- 렌더링 파이프라인에 대해 설명해주세요.
- 3D 공간에 있는 오브젝트들이 화면에 표현되는 픽셀로 표시되기까지의 과정을 설명해보세요.
- 셰이더를 활용해본 경험이 있을까요? 어떻게 활용했는지 설명해주세요.
자료구조 & 알고리즘
- LinkedList의 특성을 설명해주세요.
- LinkedList는 언제 사용하면 좋은 자료구조인가요? 반대로 언제 사용하기 불리할까요?
- LinkedList를 본인의 프로젝트에 적용해본 경험을 말해주세요.
- Stack의 특성을 설명해주세요.
- Stack은 언제 사용하면 좋은 자료구조인가요? 반대로 언제 사용하기 불리할까요?
- Stack을 본인의 프로젝트에 적용해본 경험을 말해주세요.
- Queue의 특성을 설명해주세요.
- Queue는 언제 사용하면 좋은 자료구조인가요? 반대로 언제 사용하기 불리할까요?
- Queue를 본인의 프로젝트에 적용해본 경험을 말해주세요.
- Tree의 순회(Traversal) 방법에 대해 설명해주세요.
- DFS와 BFS에 대해 설명해주세요.
- DFS와 BFS를 본인의 프로젝트에 활용한 경험이 있다면 설명해주세요.
- 행동 트리 (Behaviour Tree) 에 대해 설명해주세요.
- 길찾기 알고리즘에 대해 알고 있는 것이 있나요?
- 각 길찾기 알고리즘의 차이점은 무엇인가요?
- A* 알고리즘에 대해 설명해주세요.
- 해당 알고리즘들을 프로젝트에 적용해본 경험이 있나요?
기타
- 게임 개발 학습 과정에서 자신이 가장 재미있었거나 자신 있게 설명할 수 있는 부분이 있다면 설명해주세요.
- 포트폴리오에서 본인이 담당한 부분이 무엇인가요?
- 만약 본인이 개발한 것을 다시 개발한다면, 어떻게 개선할 것인지 설명해주세요.
- 본인이 활용하는 디버그 방법을 설명해보세요.
- 협업하면서 가장 어려웠던 점이 무엇인가요?
- 구현하면서 기술적으로 어려웠던 부분을 어떻게 해결하였나요?
- Git Repository를 팀원들과 공동으로 작업하면서 발생했던 문제점이 있다면 무엇이었는지, 어떻게 해결하였는지 이야기해주세요.