2022. 11. 23. 18:03ㆍ게임 클라이언트 기술면접 질문들
기술면접에 대해 구글링을 하다보면 블로그마다 기술면접에서 물어보았던 질문들을 작성해 놓는다.
나는 이것을 찾아보면서 QnA형식으로 답변을 작성 할려고한다.(답변은 최대한 줄일 수 있게 노력해보자)
제가 틀린 부분도 있을 수 있으니 다른 곳과 비교해 보며 참고하세요
질문을 가져온 곳 https://cho22.tistory.com/59
1. virtual, abstract, interface에 대해 설명해봐라.
잘 정리된 글 https://kangworld.tistory.com/186
Virtual
- virtual의 가장 큰 특징은 선택적인 재정의(override)가 가능하는 것이다.
- virtual이 붙은 메서드와 속성, 인덱서는 재정의할 수 있지만 필수는 아니며 virtual 키워드가 포함된 클래스는 그 자체로도 완벽한 기능을 제공한다.
abstaract
- 클래스 내부에서 abstract를 사용하려면 클래스 정의부에 abstract 키워드를 붙여줘야 한다.
- abstract 키워드가 붙으면 그 자체로는 불완전해서 파생 클래스에서 반드시 재정의 해야 한다.
- 단, abstract 클래스 내부에 일반 메서드와 일반 멤버 변수를 정의할 수 있다
- abstract 키워드는 인스턴스화할 수 없다.
Interface
- interface는 가장 높은 추상성을 제공한다.
- 필드로 메서드, 프로퍼티 인덱서만 가질 수 있으며 abstract가 아닌 필드는 정의할 수 없다.
- 접근 제한자를 사용할 수 없으며 모든 필드는 public이 적용된다.
- abstract와 interface의 가장 큰 차이는 interface는 다중 상속이 가능하다.
- interface는 상속의 개념보단 기능을 확장하는 개념이다.
- 서로 관계가 없는 클래스도 동일한 interface를 구현할 수 있다.
- 서로 관계가 없는 클래스도 interface를 구현함으로써 관계가 형성되는데 이는 다형성으로 연결된다.
위에서 나오는 indexer(Indexer)란 무엇일까? 아래 링크에 잘 정리되어 있다.
인덱서(Indexers)는 클래스의 멤버로 클래스의 값을 배열처럼 접근할 수 있도록 해주는 문법이다.
https://developer-talk.tistory.com/323
2. 코루틴에 대해 설명해봐라.
https://docs.unity3d.com/kr/2018.4/Manual/Coroutines.html
https://blog.naver.com/dj3630/221459387675
https://eunjin3786.tistory.com/515
코루틴이란? 어떠한 작업을 처리할 때 필요에 따라시간 간격을 두고 작업을 처리할 수 있도록 도와주는 함수
코루틴은 반환 타입이 IEnumerator 이고 body 어딘가에 yield return 를 포함해야한다.
3. 코루틴과 invoke의 차이에 대해 설명해봐라.
https://mentum.tistory.com/489
https://chameleonstudio.tistory.com/37
https://coding-of-today.tistory.com/137
둘 다 시간을 지연시키는 기능을 한다. 하지만 차이점으론
unity에서 Gameobject가 off 상태에선 코루틴은 작동하지 않지만 , 인보크는 작동한다.
인보크는 지연시간 외의 파라미터를 받지 않지만 코루틴은 여러 인자를 받을 수 있다.
4. 모바일 게임은 저사양 기기에서 돌아가는것도 중요한데 최적화를 위해 했었던 일들에 대해 설명해봐라.
https://blog.unity.com/kr/technology/optimize-your-mobile-game-performance-expert-tips-on-graphics-and-assets
위에 글 참고하기
나는 오브젝트 풀을 제외하곤 사용해본것이 없다.
5. 프로세스와 스레드에 대해 설명해봐라 .
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
프로세스는 운영체제로부터 자원을 할당받은 작업의 단위이고
스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위.
7. 스레드와 코루틴의 차이를 설명해봐라.
https://angangmoddi.tistory.com/224
https://velog.io/@haero_kim/Thread-vs-Coroutine-%EB%B9%84%EA%B5%90%ED%95%B4%EB%B3%B4%EA%B8%B0
8. C# 과 C++의 가장큰 차이는 뭔가.
내가 생각할 때 가장 큰 차이는 역시 GC(갈비지 컬렉터)인 것 같다.
c/c++은 메모리를 사용자가 할당 및 해제를 직접해줘야하는데 반해
C#은 GC가 메모리의 해제를 담당해준다.
메모리의 관리하는 차이로 인해 속도에서 차이가 난다.
그외에도 검색하면 엄청많다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=io044&logNo=220070411535
9. GC에 대해 설명해봐라.
9.1 세대별 GC
9.2GC최적화를 위해 할수있는일은 무엇이 있을지 설명해봐라.
9.3 GC의 장점과 단점에 대해 설명해봐라.
https://luv-n-interest.tistory.com/922
GC란 메모리 관리 기법중의 하나로 , 프로그램이 동적으로 할당했던 메모리 영역 중에서
필요없게 된 영역을 해제하는 기능이다.
12.박싱 언박싱
https://yeko90.tistory.com/entry/c-%EB%B0%95%EC%8B%B1-%EC%96%B8%EB%B0%95%EC%8B%B1-%EA%B0%9C%EB%85%90
13.delegate 와 event
https://geukggom.tistory.com/210
C#의 컬렉션 (리스트-큐-스택-해시테이블-딕셔너리-arraylist)
C# CLR(공통 언어 런타임) , CIL(공통 중간언어)
https://guslabview.tistory.com/185
'게임 클라이언트 기술면접 질문들' 카테고리의 다른 글
게임개발자 기술면접 정리 (0) | 2023.11.27 |
---|