어디였더라? 어느 시니어 엔진 프로그래머가 엔진 그래픽스 프로그래머들 면접 볼때 자주 물어보는 질문들 올려줬는데

그때 그거가지고 정리하고 질문들에 대해서 나름 답변 적어둔듯.


1.가상 소멸자는 언제 사용해야 하나요?

->기본 클래스 포인터를 사용해서 파생 클래스 객체 삭제할때 필요함.

기본 클래스의 소멸자가 가상함수가 아니면 파생 클래스의 소멸자가 호출되지 않아서 메모리 누수가 발생할 수 있음.


2.힙에 메모리를 할당하는 것과 스택에 할당하는 것의 차이점은 무엇인가요?

->스택은 자동 메모리 관리 하지만 빠르고 제한됨

힙은 동적 크기를 지원하지만 속도가 느림.


3.어떤 C++11 및 C++14 기능을 사용하고 있나요?

->

C++11 기능:

1.스마트 포인터

2.람다 함수

3.자동 타입추론(auto)

4.범위기반 for 루프

5. std::thread 같은 멀티 쓰레딩

6. constexpr 


C++14 기능

1. 제네릭 람다(자동으로 auto 매개변수 지원)

2. std::make_unique.

3. 이중 리터럴


4.템플릿은 어떤 용도로 사용되나요?

->데이터 타입 의존적이지 않은 코드 작성


5.인라인 키워드에 대해 설명해주세요.

-> inline 키워드는 함수 호출 오버 헤드를 줄이기 위해, 해당 함수를 컴파일 타임 코드로 확장함.(간단한 함수에 성능 향상 용도로씀)


6.리틀 엔디안과 빅 엔디안은 무엇인가요?

-> 리틀 엔디안은 최하위 바이트가 가장 낮은 메모리에, 빅 엔디안은 최상위 바이트가 가장 높은 메모리에(둘다 순서가 반대임)


7.상수 정합성이란 무엇인가요?

-.>Const 키워드가 일관 적용되는지


8.가상 함수 호출과 관련된 오버헤드는 무엇인가요?

-vtable을 통해서 이루어지기에 추가적인 메모리를 필요로함. vtable을 참조하는 과정이 필요하기때문에 일반 함수호출보다 느림


9.C++에서 포인터의 크기는 무엇인가요?(즉, 포인터에 대한 sizeof의 결과)

-> 32비트의 경우 4바이트, 64비트의 경우 8바이트


이런식으로 해외에 자주 면접질문들 모아가지고 정리한 다음 답변을 나름 생각해보면


그 업계내에서 자주 쓰이는 키워드들이 뭔지 알 수 있더라.


유니티 공부할때도 유니티 면접에 자주 쓰이는 질문들 검색해서 목록 만들고 그걸로 어느정도 공부하고 뼈대잡음