2. • 이 문제들은 신입 개발자 대상으로 한 문제들입니다.
• 어떤 특정 회사의 기출 문제가 아님을 밝혀둡니다.
• 기술 필기 시험에 자주 나오는 문제들이 중심입니다.
• 이런 문제가 나오지 않는다고 해도 발표자를 원망해
서는 안됩니다. =ㅅ=
3.
4. 1. virtual 함수에 대해서 설명하여라
2. 소멸자에 virtual을 쓰는 이유는 무엇인가?
3. 포함과 상속의 차이점에 대해서 설명하여라
4. 메모리 단편화(fragmentation)을 해결 할 수 있는 기
법에 대해서 아는 대로 설명하여라.
5. 5. 멀티 코어를 활용할 수 있는 프로그래밍 기법들에 대
해서 아는 대로 나열하고 설명하여라
6. STL에서 erase와 remove의 차이점은?
7. List 클래스를 직접 구현하고, 멤버를 추가/삭제 하는
함수를 구현하여라.
6.
7. 1. 타겟이 플레이어의 정면으로부터 몇도(각도)의 위
치에 있는지 계산하여라.
2. 쿼터니언은 어떤 경우에 사용하는가? 그리고 사용
하는 이유는 무엇인가?
3. 컬링 기법들을 아는대로 나열하고 설명하여라
4. 그림자를 생성하는 기법들을 아는대로 나열하고 설
명하여라
8.
9. • 클래스에 virtual 함수를 선언하면 vtable이 생성된다.
• 클래스의 virtual 함수들은 이 vtable에 매핑이 된다.
• 자식 클래스가 부모 클래스의 virtual 함수를 오버라이딩 하면
자식 클래스의 vtable에 오버라이딩 함수가 매핑된다.
• 다형성을 사용하여 자식 클래스가 부모 클래스로 형변환이
되었을 경우, virtual로 선언된 함수들은 vtable에서 가져오기
때문에 자식 클래스가 오버라이딩한 함수를 제대로 호출할 수
있게 된다.
10. • 다형성을 사용하여 자식 클래스가 부모 클래스로 형
변환을 하고 삭제를 한 경우, virtual로 소멸자를 선언
하지 않았다면 vtable을 참조하지 않고 부모의 소멸자
만을 호출하게 된다.
• 이런 경우, 만약 자식 클래스에서 메모리를 추가 할
당한 경우 메모리 누수가 발생한다.
11. • 파생 클래스가 부모 클래스와 is-a 관계가 성립할때
는 상속
• 클래스 2개가 has-a 관계가 성립할때는 포함
• is-a 관계가 성립하지 않음에도 단지 편의때문에 상
속을 남발해서는 절대 안된다.
12. • 메모리 풀링
• FreeList
• 프레임 기반 메모리 할당 기법
• Windows Low-Fragmentation Heap API
13. • 멀티 스레드
• 멀티 프로세스
• OpenMP
• C++ 0x PPL(Parallel Patterns Library)
• Intel TBB (Threading Building Blocks)
14. • erase - iterator에 해당하는 하나의 요소만을 삭제한
다. Capacity가 실제로 감소한다.
• remove – 해당 범위중에 해당 값과 일치하는 모든 요
소를 삭제한다. Capacity가 감소하지는 않는다.
15.
16. • 플레이어 정면 벡터를 A
• 플레이어에서 타겟 위치까지의 벡터를 B
• 각도 = acos(dot(A,B))
• 방향까지 정확히 구하기 위해선 외적을 사용해야 한
다.
17. • 회전각에 대한 보간(= 구면 보간)이 필요한 경우 행
렬보다 계산이 빠르고 간단하다.
• 회전 행렬에 의해서 두축의 회전값이 겹칠때 발생하
는 문제(짐벌락)을 해결할 수 있다.
18. • Backface Culling – 폴리곤의 후면 제거
• Frustum Culling – 시야 절두체 외 제거
• Occlusion Culling – 가려진 폴리곤 제거
PVS (Potential Visibility Sets
• BSP, PVS (Potential Visibility Sets) – 구역별로 보일 수
있는 구역 지정 컬링
• 기타 공간 처리 기법들
19. • 원형 그림자
•Projected Shadow – 투영 그림자
• Shadow Map – 깊이 버퍼맵(쉐도우맵) 사용
• Volume Shadow – 쉐도우 볼륨을 생성하고, 스텐실
버퍼를 사용