본문 바로가기

Technical9

[Technical Organize] 기술면접_요약정리 래리페이지 구글의 공동 창업자, 현 최고 경영자 세계 최고의 검색엔진 구글을 개발 이제 겨우 44살이라는 젊은 나이임에도 이미 세상에 막대한 영향을 끼쳤고 앞으로도 더 많은 부분에 혁신을 일으킬 수 있는 잠재력을 가지고 있다. 젊은 시절 구글을 설립할때의 불가능할 것 같던 목표였던 세상의 모든 웹사이트를 백업한다는 목표를 결국 이뤄냈다. 이와 같은 실천력과 집념을 본받고 싶다. 자료구조ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 연결리스트 배열보다 데이터에 참조하는 속도가 느림, 데이터 추가, 삭제 간편, 메모리 낭비가 없음 이중연결리스트 이전 노드와 다음 노드의 주소를 모두 저장 원형연결리스트 마지막 노드의 링크가 첫번째 노드의 주소를 가르킴 스택 (stack) 삽입(pu.. 2022. 12. 28.
[Technical Organize] 기술면접_자료구조&알고리즘 문제. 시간복잡도란 알고리즘을 구성하는 명령어들이 몇번이나 실행됬는지 센 결과(frequency count) + 각 명령어의 실행시간(execution time) 을 곱한 합계를 의미함 그러나 각 명령어의 실행시간은 특정 하드웨어 혹은 프로그래밍 언어에 따라서 그 값이 달라질 수 있기 때문에 알고리즘의 일반적인 시간 복잡도는 명령어의 실제 실행시간을 제외한 명령어의 실행 횟수만을 고려하게 된다. 시간의 복잡도는 크게 세가지로 나눌 수 있다. 최상의 경우, 최악의 경우, 평균 => 이래서 표기법도 3개가 존재하는것이다. 시간과 공간은 반비례 하는 경향이 있다. 요즘은 공간보다는 시간이 우선이다! 정의 : 프로그램을 실행시켜 완료하는데 걸리는 시간을 의미한다. 어떤 프로그램의 실행 시간을 추정하기 위해서는 .. 2022. 12. 28.
[Technical Organize] 기술면접_수학&논리 문제. 기저벡터란 "벡터 공간에서 각각의 축방향을 가리키는 단위 벡터" 라고 한다. 간단해서 좋다. 조금 더 복잡한 정의를 찾아 보았다. 기저 벡터란 n차원 공간에서 임의의 벡터를 표현할 수 있는 기준이 되는 벡터이다. 위의 정의도 결론은 n차원에서 임의의 벡터를 표현하기 위한 기준이 되는 벡터란다. 결국 축방향을 가리키는 단위 벡터라는 말이다. 문제. aabb에 대하여 설명하시오. 축 정렬된 바운딩 박스. 물체가 회전하거나 애니메이션 되면 경계상자를 다시 만들어야 한다. 정적 오브젝트에 많이 사용된다. 문제. OBB에 대하여 설명하시오. 방향성이 있는 바운딩 박스. 축에 정렬된 방향으로 고정되어 있지 않고 물체가 회전하는 것에 따라 같이 회전한다. AABB보다 좀 더 세밀한 충돌이 가능하다. 한 번의 .. 2022. 12. 28.
[Technical Organize] 기술면접_디자인패턴 문제. C++을 이용하여 Decorator 패턴을 템플릿으로 구현하고 추상적 캐릭터 게임 클래스를 구현해 Decorator의 사용 예를 들어라 Decorator 패턴은 특정 객체에 기능을 추가하거나 삭제하는데 있어서 객체에 영향을 미치지 않고, 기능을 추가하는 형태를 취하는 디자인 패턴 중 하나이다. 즉 추가된 기능이 기존의 객체를 꾸며주면서 추가된 기능도 수행함과 동시에 기존의 객체가 가진 기능도 수행되면서 마치 새로운 기능이 추가되는 것처럼 보이도록 만들어 주는 것이다. 기능들 사이의 관계는 참조 연결고리를 통해 연결해 줌으로써 기능의 추가와 삭제를 가능토록했다. 문제. 싱글톤에 대해서 아는 대로 설명. 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(Static), 그 해당 메.. 2022. 12. 28.
[Technical Organize] 기술면접_DirectX 문제. 버텍스 소팅은 어떻게 하였는가? 버텍스 버퍼 = 점들의 위치를 저장한 것이라 보면 된다. ( 0, 0, 0 ) ( 1, 1, 0 ) 같은 버텍스를 가지고 있는 주머니인 것이다. 인덱스 버퍼 = 인덱스 버퍼는 정점을 저장하기 위한 버텍스 버퍼와 마찬가지로 정점의 인덱스를 보관하기 위한 전용 버퍼를 말한다 인덱스를 사용하는 이유 -정점을 여러 번 나열하는 것보다 메모리 소모량이 적다. -자주 사용되는 정점을 캐시에 저장해서 성능 상 유리하다. 문제. 알파블렌딩에 대해서 설명하시오. 이미지위에 또다른 이미지를 덧씌울때 마치 투명하게 비치는 효과를 내기위해 컴퓨터의 색상표현값 RGB 에 A라는 새로운 값을 각 픽셀에 할당하여 배경 RGB값과 그 위의 그려질 RGB값을 혼합하여 표시하는 방법 문제. 알파테.. 2022. 12. 28.
[Technical Organize] Effective C++_#define #defnie 상수는 다음과 같은 단점이 있다. 1) 전처리기에서 처리된다. 즉 컴파일러에서 제어할 수 없으니 데이터 타입 검증이 되지 않는다. 특히 매크로 인자의 경우, #define은 인자의 타입을 지정하지 않기 때문에 의도하지 않은 결과를 만들어내기도 한다. 예를 들면, 소수로 (float)받으려는 의도였는데, 호출하는 쪽에서 정수 (int)로 입력해서, 4/3이 1의 결과가 나오는 일이다. 왠만하면, 컴파일러가 이해할 수 있는 형태로 코드를 작성하는게 안전하다. 2) 매번 코드가 복사되기 때문에, 실행 코드 크기가 늘어난다. 매크로 함수는 모두 치환으로 바뀌기 때문에 inline함수와 유사하게 동작한다. 다만, 이를 의도한 거라면 차라리 inline을 쓰는게 낫다. #define 매크로는 인자 개.. 2022. 12. 28.
[Technical Interview] 게임 클라이언트 면접 복기_3 과거 면접 때, 답변 복기 (중복되는 것들도 있을 수 있음) - 프로젝트별 자랑 니어오토마타 – 애니메이션 툴, 스키닝, 행렬중점, 충돌뼈 충돌체를 달아 세밀한 충돌처리 스틱스 – 엔진의 구조를 직접 만듬, 렌더러를 통해 렌더링 제어, 절두체컬링, 캣멀롬라인의 카메라, 레이픽킹, 네비메쉬 휴 – AABB를 통해 충돌하고 레이어로 나눠 충돌최적화, DX에서 해주는 뷰스페이스변환이나 투영변환, 월드변환등을 직접구현.. 스자이공부와 카메라 역행렬 등 직접 연산을 해보고 그에 따른 최적화를 어떻게 하면 좋을지 생각하면서 코딩, 스탠실버퍼를 써서 거울효과 또다른월드 구현 - 메쉬를 어떻게 화면에 띄웠나 DX 내부적으로 메쉬의 정보를 담는 구조체 테이블이 있는데 그 구조체에 담을 정보를 X파일로부터 로드한다. X파.. 2022. 12. 27.
[Technical Interview] 게임 클라이언트 면접 복기_2 과거 면접 때, 답변 복기 (중복되는 것들도 있을 수 있음) - 본인을 색으로 표현하자면 어떤 색인가요 뭐라했던지 기억이 안남.. - C++에서 캐스팅의 종류와 역할 Static cast - C 스타일 캐스터와 똑같은 의미와 형변환 능력을 가지고 있는, 가장 기본적인 캐스트 연산자이다. Dynamic cast - 런타임에 (동적으로) 상속 계층 관계를 가로지르거나 다운캐스팅시 사용되는 캐스팅 연산자이다. Const cast - 상수성(const)을 없애는 데 사용된다. Reinterpret cast - 어떠한 포인터 타입도 어떠한 포인터 타입으로든 변환이 가능하다. 어떠한 정수 타입도 어떠한 포인터 타입으로 변환이 가능하고, 그 역(포인터 타입->정수 타입)도 가능하다. - 가상소멸자를 사용하는 이유 클.. 2022. 12. 27.
[Technical Interview] 게임 클라이언트 면접 복기_1 과거 면접 때, 답변 복기 (중복되는 것들도 있을 수 있음) - 코드 짤 때 중요사항이 있다면? 4가지 사항을 얘기하고 설명했다. 가독성 : 코드가 얼마나 읽기 쉬운가?, 사용한 이름은 적절한가?, 함수의 길이가 너무 길어서 보기 힘들지는 않는가? 무결성 : 버그가 없는가?, 버그가 예상되는 코드는 없는가?, 방어적으로 코드를 짰는가? 유연성 : 나중에 기획이 변경되었을때 쉽게 변경할 수 있는가?, 동시에 변경해야 하는 부분이 흩어져있지 않는가? 재사용성 : 코드가 잘 설계되어 있는가?, 관계있는 부분끼리 잘 모여있는가? 1. 디자인 패턴 싱글턴 : 이펙트, 사운드 관리, 전체적인게임관리? > 문제 : 네트워크 동기화 문제 생길 수 있다. 옵저버 : 스타크래프트 ui출력 부분에 사용 > 사용한 이유 : .. 2022. 12. 27.