전체 페이지뷰

2014년 11월 18일 화요일

게임회사 면접시 자주나오는 질문.

c++ 알고리즘

1. virtual 함수에 대하여 설명하여라


2. 소멸자에 virtual을 쓰는 이유는 무엇인가


3. 포함과 상속의 차이점에 대해서 설명하여라


4. 메모리 단편화를 해결할 수 있는 기법에 대하여 아는대로 설명하여라.


5. 멀티 코어를 활용할 수 있는 프로그래밍 기법들에 대해서 아는대로 나열하고 설명하여라


6. STL에서 erase와 remove 의 차이점은?


7. List 클래스를 직접 구현하고, 멤버를 추가/삭제 하는 함수를 구현하여라.


컴퓨터 그래픽스

1. 타켓이 플레이어의 정면으로부터 몇도(각도)의 위치에 있는지 계산하여라.


2. 쿼터니언은 어떤 경우에 사용하는가? 그리고 사용하는 이유는 무엇인가?


3. 컬링 기법들을 아는대로 나열하고 설명하여라.


4. 그림자를 생성하는 기법들을 아는대로 나열하고 설명하여라



해답)
1. 클래스에 virtual 함수를 선언하면 vtable이 생성된다. 클래스의 virtual  함수들은 이 vtable에 매핑이 된다. 자식클래스가 부모클래스의 virtual 함수를 오버라이딩 하면 자식 클래스의 vtable에 오버라이딩 함수가 매핑된다. 다형성을 사용하여 자식 클래스가 부모 클래스로 형변환이 되었을 경우, virtual로 선언된 함수들은 vtable에서 가져오기 때문에 자식 클래스가 오버라이딩한 함수를 제대로 호출할 수 있게 된다.

2. 다형성을 사용하여 자식 클래스가 부모 클래스로 형변환을 하고 삭제를 한 경우, virtual로 소멸자를 선언 하지 않았다면 vtable을 참조하지 않고 부모의 소멸자만을 호출하게 된다. 이런 경우, 만약 자식 클래스에서 메모리를 추가 할당한 경우 메모리 누수가 발생한다.

3. 파생 클래스가 부모 클래스와 is-a 관계가 성립할때는 상속. 클래스 2개가 has-a 관계가 성립할때는 포함. is-a 관계가 성립하지 않음에도 단지 편의때문에 상속을 남발해서는 절대 안된다.

4.










http://www.slideshare.net/agebreak/0410-10197035?related=2 참고위치
추후작성