[0410 박민근] 기술 면접시 자주 나오는 문제들

25
기기 기기기 기기 기기기 기기기 기기 (http://cafe.naver.com/devrookie ) 10. 04. 10 기 ( 기기기기 )

Upload: -

Post on 20-Dec-2014

2.699 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: [0410 박민근] 기술 면접시 자주 나오는 문제들

기술 면접시 자주 나오는 문제들

데브루키 (http://cafe.naver.com/devrookie)2010. 04. 10박민근 ( 알콜코더 )

Page 2: [0410 박민근] 기술 면접시 자주 나오는 문제들

• 이 문제들은 신입 개발자 대상으로 한 문제들입니다 .

• 어떤 특정 회사의 기출 문제가 아님을 밝혀둡니다 .

• 기술 필기 시험에 자주 나오는 문제들이 중심입니다 .

• 이런 문제가 나오지 않는다고 해도 발표자를

원망해서는 안됩니다 . = ㅅ =

NOTE

Page 3: [0410 박민근] 기술 면접시 자주 나오는 문제들

[ 문제편 ]C++ / 알고리즘

Page 4: [0410 박민근] 기술 면접시 자주 나오는 문제들

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

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

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

4. 메모리 단편화 (fragmentation) 을 해결 할 수 있는

기법에 대해서 아는 대로 설명하여라 .

Page 5: [0410 박민근] 기술 면접시 자주 나오는 문제들

5. 멀티 코어를 활용할 수 있는 프로그래밍 기법들에

대해서 아는 대로 나열하고 설명하여라

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

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

하는 함수를 구현하여라 .

Page 6: [0410 박민근] 기술 면접시 자주 나오는 문제들

[ 문제편 ]3D 그래픽스

Page 7: [0410 박민근] 기술 면접시 자주 나오는 문제들

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

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

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

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

Page 8: [0410 박민근] 기술 면접시 자주 나오는 문제들

[ 해답편 ]

Page 9: [0410 박민근] 기술 면접시 자주 나오는 문제들

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

• 클래스에 virtual 함수를 선언하면 vtable 이 생성된다 .

• 클래스의 virtual 함수들은 이 vtable 에 매핑이 된다 .

• 자식 클래스가 부모 클래스의 virtual 함수를 오버라이딩 하면 자식 클래스의 vtable 에 오버라이딩 함수가 매핑된다 .

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

Page 10: [0410 박민근] 기술 면접시 자주 나오는 문제들

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

• 다형성을 사용하여 자식 클래스가 부모 클래스로 형변환을 하고 삭제를 한 경우 , virtual 로 소멸자를 선언하지 않았다면 vtable 을 참조하지 않고 부모의 소멸자만을 호출하게 된다 .

• 이런 경우 , 만약 자식 클래스에서 메모리를 추가 할당한 경우 메모리 누수가 발생한다 .

Page 11: [0410 박민근] 기술 면접시 자주 나오는 문제들

3. 포함과 상속의 차이점을 설명하여라

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

Page 12: [0410 박민근] 기술 면접시 자주 나오는 문제들

4. 메모리 단편화를 해결할 수 있는 기법들

• 메모리 풀링• FreeList

• 프레임 기반 메모리 할당 기법• Windows Low-Fragmentation Heap API

Page 13: [0410 박민근] 기술 면접시 자주 나오는 문제들

5. 멀티 코어를 활용할 수 있는 프로그래밍 기법

• 멀티 스레드• 멀티 프로세스• OpenMP

• C++ 0x PPL(Parallel Patterns Library)

• Intel TBB (Threading Building Blocks)

Page 14: [0410 박민근] 기술 면접시 자주 나오는 문제들

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

• erase - iterator 에 해당하는 하나의 요소만을 삭제한다 . Capacity 가 실제로 감소한다 .

• remove – 해당 범위중에 해당 값과 일치하는 모든 요소를 삭제한다 . Capacity 가 감소하지는 않는다 .

Page 15: [0410 박민근] 기술 면접시 자주 나오는 문제들

7. List 클래스를 직접 구현하여라

Page 16: [0410 박민근] 기술 면접시 자주 나오는 문제들

8. 타겟 위치와의 각도 계산

• 플레이어 정면 벡터를 A

• 플레이어에서 타겟 위치까지의 벡터를 B

• 각도 = acos(dot(A,B))

• 방향까지 정확히 구하기 위해선 외적을 사용해야 한다 .

Page 17: [0410 박민근] 기술 면접시 자주 나오는 문제들

9. 쿼터니언은 언제 사용하는가 ?

• 회전각에 대한 보간 (= 구면 보간 ) 이 필요한 경우 행렬보다 계산이 빠르고 간단하다 .

• 회전 행렬에 의해서 두축의 회전값이 겹칠때 발생하는 문제 ( 짐벌락 ) 을 해결할 수 있다 .

Page 18: [0410 박민근] 기술 면접시 자주 나오는 문제들

10. 컬링 기법들

• Backface Culling – 폴리곤의 후면 제거• Frustum Culling – 시야 절두체 외 제거• Occlusion Culling – 가려진 폴리곤 제거• BSP, PVS (Potential Visibility Sets) – 구역별로 보일 수 있는 구역 지정 컬링• 기타 공간 처리 기법들

PVS (Potential Visibility SetsPVS (Potential Visibility Sets

Page 19: [0410 박민근] 기술 면접시 자주 나오는 문제들

11. 그림자를 생성하는 기법들

• 원형 그림자 •Projected Shadow – 투영 그림자• Shadow Map – 깊이 버퍼맵 ( 쉐도우맵 ) 사용• Volume Shadow – 쉐도우 볼륨을 생성하고 ,

스텐실 버퍼를 사용

Page 20: [0410 박민근] 기술 면접시 자주 나오는 문제들

[ 토론편 ]

자신이 본 기술 면접중에 어떤 질문들이

기억에 남는가요 ?

Page 21: [0410 박민근] 기술 면접시 자주 나오는 문제들

[ 추천도서 ]

Page 22: [0410 박민근] 기술 면접시 자주 나오는 문제들

Effect C++ & More Effect C++

Page 23: [0410 박민근] 기술 면접시 자주 나오는 문제들

Effective STL

게임 프로그래머를 위한자료구조와 알고리즘

Page 24: [0410 박민근] 기술 면접시 자주 나오는 문제들

RealTime Rendering

DirectX 9 셰이더 프로그래밍

Page 25: [0410 박민근] 기술 면접시 자주 나오는 문제들

Head First Object-Oriented Anal-ysis & Design   ( 세상을 설계하는 객체지향 방법론 )

Head First Design Patterns   (( 스토리가 있는 패턴 학습법 ))