클라 cs 면접 질문 풀이 및 추가 문제
- 작성자
- liliiiliiilil
- 작성일
- 2022-06-18
- 조회수
- 7771
- 좋아요 수
- 23
저번에 쓴거 어떤 취준생이 버러지 같이 시비 털어서 그만 쓸랬는데
추가 문제 원하는 사람이 있길래 추가 문제도 쓸 겸 풀이도 첨부함.
1. C++에서 class와 structure의 차이점, c#에서 class와 structure의 차이점을 각각 설명해보세요.
모든 면접 질문은 다 의도를 가지고 있음. 그래서 의도 파악이 항상 중요하지. 이 질문은 보통
다렉 포폴이나 언리얼 포폴이 있는 사람이 유니티 플젝에 지원 했을 경우 혹은
다렉 언리얼 포폴과 유니티 포폴이 전부 있는 사람들에게 제일 처음 내던지는 질문임.
아주 쉬운 질문을 내던지면서 긴장도 풀겸 간단하게 대답해봐라~ 라는 표면적인 의도가 있긴 하지만
핵심 질문의 c# 에서 있음. c++ 에서의 클래스와 구조체 차이점은 모르는 사람 없을꺼임.
c++에서는 구조체 내에도 함수를 선언할 수 있기 때문에 겉으로 보기에는 차이가 없지만
접근 제어 지시자를 명시하지 않았을 경우 각각 클래스는 private, 구조체는 public을 디폴트 값으로
가진다는 것임. 그 외에도 깊게 들어가면 여러 차이점이 있지만 취준생 수준에서 원하는 대답은 이정도임.
그 다음이 중요함. 그럼 c# 에서는? 여기서부터 대답도 많이 갈리고 잘 모르는 애들도 나오기 시작함.
그리고 면접자의 대답에 따라 다음 꼬리 질문이 각기 다른 방향으로 감.
일단 가장 원하는 대답은 제일 쉽고 많이들 알고 있는 값 타입과 참조 타입 이라는 대답.
c# 구조체는 값 타입, c# 클래스는 참조 타입 이라는 점을 언급해야함.
c++과 c#의 가장 큰 차이점이기도 하고 c#을 공부할 때 무조건 알고 있어야 하는게 바로
c#은 객체가 무슨 타입인지에 따라 타입종류가 결정 되어 있다는 점임.
만약 이 대답을 했다면 다음 질문은 이거임.
1-1. 그럼 만약에 프로젝트에서 몬스터라는 임의의 클래스를 구조체로 변경 했을 때 예상되는 문제점은 어떤게 있을까요???
1번 문제에 대해서은 여기까지 쓰겠음.. 쓰다보니까 이 글 겁나 길어질꺼 같음......
2. 가상함수테이블과 가상함수포인터의 동작 방식을 설명해보세요.
이 질문은 다렉 포폴 밖에 없는 친구들한테 하는 질문이었음. c# 경험이 없는데도 유니티 플젝에 지원하는
신입들이 꽤나 있어서 c++밖에 질문할 수가 없어서 생각보다 c++을 다양하게 물어봐야함..
특히나 이 질문은 다른 질문에서 꼬리 질문으로 오는 케이스가 많음. 오버로딩 오버라이딩 질문에서
출발해서 가상화를 거쳐서 오는 케이스라던가 다형성이란 성질에 대해서 이야기 하다가
이 질문까지 오는 케이스 등이 있을꺼임.
무튼 간단하게만 풀이하자면 결국은 가상화를 하면 가상함수테이블이란게 생성이 되서 여러 정보가 저장되고
이 가상함수 테이블은 사실 가상함수포인터를 모아둔 배열이다~
라는 정도만 알고 있으면 충분함.
3.(2번답이괜찮으면) RTTI에 대해 설명해보고 가상함수테이블과의 관계에 대해 설명해보세요.
위 질문의 꼬리 질문이자 캐스팅 질문으로 넘어가기 위한 질문 혹은 캐스팅 질문에서 넘어오는 질문이기도 함.
공부 좀 열심히 한 사람들은 알꺼임. 크게 어려운 질문은 아닌데 생각보다 모르는 애들이 꽤나 많음.
일단 먼저 풀이부터 하자면, RTTI 는 Run Time Type Information 이고 단어 그대로 해석만 해도 이해가 됨.
"런타임 때 타입 정보" 즉, 런타입에서 객체가 무슨 타입인지에 대한 정보를 말하는거임. 그래서 이게 왜??
이게 왜 중요한지는 위쪽에서도 언급된 다형성 때문임. 아마 다들 다형성에 대해서는 알꺼고 질문과 무관한
내용이라서 따로 설명은 생략하겠음. 무튼 이 RTTI랑 가상함수 테이블이 왜 나오냐? 이 RTTI가 하필이면
가상함수테이블에 저장이 된다는거임. 그래서 혹시나 객체가 virtual이 쓰여진 적이 없는 객체 (비다형성 객체
라고도 함) 라면 가상함수 테이블이 애초에 존재가 하지 않고 RTTI 정보가 없음. 그래서 RTTI 정보를 사용하는
케이스에서 정상적으로 동작을 하지 않는 문제가 생김. 이걸 물어보는게 사실 다음 꼬리 질문임.
물론 순서는 반대가 될 수 있음. 다음 질문은 그 유명한 c++ 캐스팅 질문이라 그 질문 후에 이 질문이 연달아
발생하기도 함. 아무튼 이 RTTI 정보는 c++캐스팅 문법에서 쓰임.
3-1. c++ 캐스팅 문법에 대해 설명해주세요.
질문이 꼬리에 꼬리를 무는 이유는 말하다 보면 여러 문법이 당연하게 이야기 될 수 밖에 없고 그걸 하나하나
물어보면서 면접자가 과연 공부를 얼마나 깊이 있게 했는지를 파악하는거임. 그게 다 기본기니까...
질문이 2개 밖에 없어서 또 다른 질문을 몇개 추가 해볼까 함... 위쪽에서 언어에 대한 질문을 많이 했으니까
이번엔 자료구조와 그래픽스 쪽으로 해보겠음. 자료구조는 조금 깊게 연달아 해볼 예정이고 그래픽스는
질문 하나만 하고 꼬리 질문도 없을 예정임. 이유는 실제 면접에서 그렇게 진행함. 그래픽스를 깊게 물어볼
필요도 많이 없을 뿐 잘 대답하는 사람조차 없음... 기본만이라도 잘 아는지를 확인 하기 위한 단 한개의 질문임.
1. 만약에 프로젝트에서 몬스터라는 임의의 클래스를 구조체로 변경 했을 때 예상되는 문제점은 어떤게 있을까요??? (c#에서)
2. c++ 캐스팅 문법에 대해 설명해주세요.
3. STL에 대해 설명해주세요. ( c#의 경우 컬렉션 )
4. 렌더링 파이프라인에 대해 설명해주세요.
추가 문제 원하는 사람이 있길래 추가 문제도 쓸 겸 풀이도 첨부함.
1. C++에서 class와 structure의 차이점, c#에서 class와 structure의 차이점을 각각 설명해보세요.
모든 면접 질문은 다 의도를 가지고 있음. 그래서 의도 파악이 항상 중요하지. 이 질문은 보통
다렉 포폴이나 언리얼 포폴이 있는 사람이 유니티 플젝에 지원 했을 경우 혹은
다렉 언리얼 포폴과 유니티 포폴이 전부 있는 사람들에게 제일 처음 내던지는 질문임.
아주 쉬운 질문을 내던지면서 긴장도 풀겸 간단하게 대답해봐라~ 라는 표면적인 의도가 있긴 하지만
핵심 질문의 c# 에서 있음. c++ 에서의 클래스와 구조체 차이점은 모르는 사람 없을꺼임.
c++에서는 구조체 내에도 함수를 선언할 수 있기 때문에 겉으로 보기에는 차이가 없지만
접근 제어 지시자를 명시하지 않았을 경우 각각 클래스는 private, 구조체는 public을 디폴트 값으로
가진다는 것임. 그 외에도 깊게 들어가면 여러 차이점이 있지만 취준생 수준에서 원하는 대답은 이정도임.
그 다음이 중요함. 그럼 c# 에서는? 여기서부터 대답도 많이 갈리고 잘 모르는 애들도 나오기 시작함.
그리고 면접자의 대답에 따라 다음 꼬리 질문이 각기 다른 방향으로 감.
일단 가장 원하는 대답은 제일 쉽고 많이들 알고 있는 값 타입과 참조 타입 이라는 대답.
c# 구조체는 값 타입, c# 클래스는 참조 타입 이라는 점을 언급해야함.
c++과 c#의 가장 큰 차이점이기도 하고 c#을 공부할 때 무조건 알고 있어야 하는게 바로
c#은 객체가 무슨 타입인지에 따라 타입종류가 결정 되어 있다는 점임.
만약 이 대답을 했다면 다음 질문은 이거임.
1-1. 그럼 만약에 프로젝트에서 몬스터라는 임의의 클래스를 구조체로 변경 했을 때 예상되는 문제점은 어떤게 있을까요???
1번 문제에 대해서은 여기까지 쓰겠음.. 쓰다보니까 이 글 겁나 길어질꺼 같음......
2. 가상함수테이블과 가상함수포인터의 동작 방식을 설명해보세요.
이 질문은 다렉 포폴 밖에 없는 친구들한테 하는 질문이었음. c# 경험이 없는데도 유니티 플젝에 지원하는
신입들이 꽤나 있어서 c++밖에 질문할 수가 없어서 생각보다 c++을 다양하게 물어봐야함..
특히나 이 질문은 다른 질문에서 꼬리 질문으로 오는 케이스가 많음. 오버로딩 오버라이딩 질문에서
출발해서 가상화를 거쳐서 오는 케이스라던가 다형성이란 성질에 대해서 이야기 하다가
이 질문까지 오는 케이스 등이 있을꺼임.
무튼 간단하게만 풀이하자면 결국은 가상화를 하면 가상함수테이블이란게 생성이 되서 여러 정보가 저장되고
이 가상함수 테이블은 사실 가상함수포인터를 모아둔 배열이다~
라는 정도만 알고 있으면 충분함.
3.(2번답이괜찮으면) RTTI에 대해 설명해보고 가상함수테이블과의 관계에 대해 설명해보세요.
위 질문의 꼬리 질문이자 캐스팅 질문으로 넘어가기 위한 질문 혹은 캐스팅 질문에서 넘어오는 질문이기도 함.
공부 좀 열심히 한 사람들은 알꺼임. 크게 어려운 질문은 아닌데 생각보다 모르는 애들이 꽤나 많음.
일단 먼저 풀이부터 하자면, RTTI 는 Run Time Type Information 이고 단어 그대로 해석만 해도 이해가 됨.
"런타임 때 타입 정보" 즉, 런타입에서 객체가 무슨 타입인지에 대한 정보를 말하는거임. 그래서 이게 왜??
이게 왜 중요한지는 위쪽에서도 언급된 다형성 때문임. 아마 다들 다형성에 대해서는 알꺼고 질문과 무관한
내용이라서 따로 설명은 생략하겠음. 무튼 이 RTTI랑 가상함수 테이블이 왜 나오냐? 이 RTTI가 하필이면
가상함수테이블에 저장이 된다는거임. 그래서 혹시나 객체가 virtual이 쓰여진 적이 없는 객체 (비다형성 객체
라고도 함) 라면 가상함수 테이블이 애초에 존재가 하지 않고 RTTI 정보가 없음. 그래서 RTTI 정보를 사용하는
케이스에서 정상적으로 동작을 하지 않는 문제가 생김. 이걸 물어보는게 사실 다음 꼬리 질문임.
물론 순서는 반대가 될 수 있음. 다음 질문은 그 유명한 c++ 캐스팅 질문이라 그 질문 후에 이 질문이 연달아
발생하기도 함. 아무튼 이 RTTI 정보는 c++캐스팅 문법에서 쓰임.
3-1. c++ 캐스팅 문법에 대해 설명해주세요.
질문이 꼬리에 꼬리를 무는 이유는 말하다 보면 여러 문법이 당연하게 이야기 될 수 밖에 없고 그걸 하나하나
물어보면서 면접자가 과연 공부를 얼마나 깊이 있게 했는지를 파악하는거임. 그게 다 기본기니까...
질문이 2개 밖에 없어서 또 다른 질문을 몇개 추가 해볼까 함... 위쪽에서 언어에 대한 질문을 많이 했으니까
이번엔 자료구조와 그래픽스 쪽으로 해보겠음. 자료구조는 조금 깊게 연달아 해볼 예정이고 그래픽스는
질문 하나만 하고 꼬리 질문도 없을 예정임. 이유는 실제 면접에서 그렇게 진행함. 그래픽스를 깊게 물어볼
필요도 많이 없을 뿐 잘 대답하는 사람조차 없음... 기본만이라도 잘 아는지를 확인 하기 위한 단 한개의 질문임.
1. 만약에 프로젝트에서 몬스터라는 임의의 클래스를 구조체로 변경 했을 때 예상되는 문제점은 어떤게 있을까요??? (c#에서)
2. c++ 캐스팅 문법에 대해 설명해주세요.
3. STL에 대해 설명해주세요. ( c#의 경우 컬렉션 )
4. 렌더링 파이프라인에 대해 설명해주세요.