[면접 대비] 기술 면접 예상 질문

Kim Yuhyeon·2022년 8월 7일
0

면접

목록 보기
3/5

💻 기술 면접 예상 질문


원본 : 신입 게임 프로그래머 면접 질문

회사에서 신입 프로그래머에게 기술 면접으로 원하는 것은 면접자가 기본기가 쌓여있는지 확인하는 것이기 때문에 최신 기술이나 복잡한 문제를 내는 경우는 드물다.
그렇기 때문에 메모리 구조나 자료구조, 평소에 자신이 짠 코드들을 왜 이렇게 짰는지 정확하게 알고 가는 것이 중요하다.
평소에 듣기만 했거나 이해하지 못한 것들은 솔직하게 "이해는 못하였지만 ~라고 알고있습니다." 라고 답하는 것이 좋다. 괜히 이상한 대답을 하면 큰 감점을 당할 수 있다.
제일 중요한 것은 평소에 프로그래밍할 때 기본기에 대해 충분히 생각하고, 최적화를 고민해서 짠다면, 기술면접은 차분하게 보면 통과할 수 있다.

📚 자료 구조


  • 자료구조를 얼마나 이해하고 있는지
  • 어디서 활용했는지

를 중요하게 보기 때문에

  • 메모리가 어디서 할당되는지
  • 구조는 어떻게 되어있는지

이해하고 가는 것이 중요하다.

❓ vector vs list

📣 대답

vector 은 배열 기반의 구조이고, list 는 구조체 속에 포인터로 이어주는 구조이다.

또한 vector 에는 capacity라고 메모리를 미리 할당 해놓을 수 있어서 바로바로 할당하는 list 와 속도 차이가 날 수 있다.

❔ 추가 질문

  • vectorlist 를 어디서 활용해 보았냐
  • emplace_back push_back 에 대한 차이점
    emplace_back 은 stl안에서 객체를 직접 생성해 주기 때문에 생성자에 들어가는 변수만 넣어주면 된다. 때문에 복사가 일어나지 않는다.
    하지만 push_back 은 객체를 생성하고 컨테이너에 넣어주기 때문에 복사가 일어나게 된다.

❓ c# dictionary, c++ map

📣 대답

dictionary는 해쉬테이블 구조이고, map은 레드블랙 이진트리로 되어있어 탐색 속도에서 차이가 날 수 있다.
dictionarymap보다 빠르지만 메모리를 좀 더 차지하고,
mapdictionary보다 조금 더 느리지만 메모리를 덜 차지한다.

❓ 이진탐색

📣 대답

이진탐색은 중간 데이터와 찾는 데이터를 비교해서 작으면 왼쪽, 크면 오른쪽방향으로 다시 탐색해보는 알고리즘이다.
점점 절반으로 탐색할 데이터가 줄어들기 때문에 기하급수적으로 줄어든다고 볼 수 있다.

❔ 추가 질문

  • 정렬 되어 있는 배열에서 (ex. 1부터 9까지) 어떻게 하면 특정 수를 찾을 수 있을 지
  • 시간복잡도 : O(logN)

🧮 수학


수학을 잘한다는 것은 평소에 논리적이고 이과적인 생각을 많이 한다는 뜻이므로 프로그래머에겐 굉장히 중요하다. 그래서 수학을 물어보는 회사들이 상당히 많다.
(실제로 회사가서 미적분을 다시 공부하는 경우도 많다.)

주로 공업수학에 대해 많이 물어본다.

❓ 삼각함수

  • sin
  • 2sin
  • cos + 1
  • arctan

❓ 행렬

근의 공식

📓 포트폴리오


회사는 신입 프로그래머를 판단할 방법이 많이 없어 서류에 있는 포트폴리오를 주로 보기도 한다.

  • 면접자가 제작한 기능들에 대해서 물어보고
    • 제작한 이유와 생각들을 물어본다.

그래서 면접에 임하기 전에 자신이 제작한 포트폴리오를 보고 코드나 제작한 이유들을 생각해 보면 면접관과 재미있는 대화들을 많이 나눌 수 있을 것이다.

🎮 엔진


최근 유니티 엔진과 언리얼 엔진을 안쓰는 회사는 거의 없다.
그러므로 유니티나 언리얼엔진에 대해 간단하게 몇가지 질문을 할 수 있다.

❓ 오브젝트 풀 - 유니티

📣 대답

c#에서는 가비지 컬렉터로 메모리를 해제하기 때문에 오브젝트를 한꺼번에 생성해놓고 돌려쓰는 것이 효율적이다. 유니티 엔진에서는 매우 기본적인 방식이기 때문에 질문하는 경우가 많다.

❓ 컴포넌트 패턴

📣 대답

유니티, 언리얼에서는 컴포넌트 패턴을 통해 기능들을 붙일 수 있다.
컴포넌트 패턴은 기능을 추가하기 쉽고, 상속 할 때 커플링 문제가 해결되기 때문에 엔진에서 자주쓰는 패턴이다.
한번 제작하거나 이해하고 가면 플러스 점수가 될 수 있을 것이다.

❓ C++ vs C# - 유니티

📣 대답

유니티에서는 C#스크립트를 사용하고 있기 때문에 C++과는 다른점이 많다.
대표적인 이유로 가비지 컬렉터가 있다.

C++에서는 가비지 컬렉터가 없고 포인터가 있기 때문에 할당을 해주면 반드시 해제를 해줘야되고,
C#에서는 가비지 컬렉터가 알아서 해제를 해주기 때문에 해제를 안해줘도 된다.

C#에서는 포인터가 없고 class로 생성하게 된다면 Reference(참조)형 타입이 된다는 특징이 있다. 그래서 참조 접근을 많이하며 처음에 구조체를 만들 때 (struct인지 class인지)신중해야 한다.

자료 : class(C# 참조)

🗝️ 알고리즘


💡 참고 포스팅

0개의 댓글