본문 바로가기

Computer Science

게임 개발자 면접 보면서 받았던 질문들 모음

현재는 게임 회사에 취직해서 다니고 있지만 올해 초만해도 열심히 구직을 하고 있던 상황이었다. 대학 졸업과 동시에 취직하는게 목표였던지라 4학년 1학기 때부터 공부하면서 면접보러 다니고, 탈락하면 다시 면접에서 받았던 질문을 모아서 준비하고, 포트폴리오 강화하고 하는 형식으로 계속 반복하여 올해 초에 나름 괜찮은 게임 회사에 취직에 성공했다. 받았던 질문들을 조금 공유해보려고 글을 쓰게 되었다.


1. 게임 회사에서 들었던 기본 질문(생각보다 준비 안해가는 사람들이 많은 질문)

- 자기소개 

- 지원 동기

- 자신의 장단점(일반적인 부분 / 업무적인 부분)

- 입사후 포부

- 자신의 미래 모습(5,10년후)

- 회사가 나를 뽑아야 하는 이유

- 어떻게 공부를 해왔는지

 

기본적인 질문이었는데, 막상 준비안해서 난감했던 적이 있다. 개인적으로 난감했던 질문은 "회사가 왜 날 뽑아야하는가" 였는데 지금 생각해보면 이걸 왜 준비 안해갔는지 의문이 생길 정도로 너무 당연했던 부분이 아닐까한다.


2. 게임 회사에서 들었던  기본 CS 질문들

- Virtual을 쓰는 이유 (소멸자 관련 내용과 그로 인해서 얻을 수 있는 효과를 중심으로 이야기함)

- Abstruct 함수와 InterFace클래스를 왜 쓰는가

- 객체지향의 특징

- 멀티 프로세스와 멀티 스레드의 차이점

- 가상 메모리

- 스마트 포인터 or GC (이 부분은 메모리 누수를 어떻게 없애는지에 대한 질문이랑 섞여 나옴)

- 알고 있는 정렬 알고리즘의 종류(시간 복잡도와 개념들 정리해가는게 좋음)

- 해시가 뭔지 설명(해시가 뭔지만 설명하지 말고 개념 > 문제점 > 문제점을 해결하기 위한 방식 설명)

- 자기가 쓰고 있는 언어에서 컨테이너가 어떤 형식으로 구현되어 있는지 (Ex. C+에서의 맵 - 레드 블랙 트리)

- override 랑 overload의 차이점

- vector와 list의 차이점

 

받았던 질문 중에서 가장 심오했던 질문의 경우에는 해시관련 질문이었다. "해시가 뭔지 아냐"는 질문을 받았을 때, 해시에 대한 개념을 이야기 했고 해시의 이론상 문제점 그리고 그 문제점을 처리하기 위해 Closed Chain이랑 Open Adress 방식이 있다는 방법을 설명했다. 그렇게 꼬리를 물리면서 C+ 컨테이너의 Map에 대한 질문이 나왔는데 레드 블랙 트리까지 꼬리물기 질문이 나왔다. 대답은 다 했는데, 레드 블랙 트리의 개념까지만 알고 그 이상은 몰라서 도중에 "거기 까지는 모르겠습니다. 하면서 정중하게 대답드렸다."

 

개인적으로 꼬리물기를 당했다는 부분이 나쁘게 아니라고 생각이 되는데, 이유는 꼬리물기를 당했다는 건 기본적인 개념은 OK인데 여기서 어디까지 더 아는지를 질문하는 형식이라고 생각되기 때문이다.

 

만약 꼬리물기를 열심히 당하다가 끝무렵에 모른다고 대답을 했을 경우 면접관은 "이것도 모르나?" 라는 생각을 할 수도 있지만 내가 면접관이라고 한다면 "이 친구는 이런 부분까지 아는걸 보니 기본적인 CS는 다 알고 있겠네?" 라는 생각부터 하지 않을까 한다. 현업으로 일하면서 정말 쓸데없는 지식들이 많았구나라는 생각을 하지만 열심히 공부해서 깊은 지식까지 알고 있다는건 그 사람의 성실성을 볼 수 있는게 아닐까 한다. (반박시 님이 맞음)


3. 클라이언트 관련 받았던 질문

- 코루틴이 무엇인지(개념을 말하는건 좋은데 개념만 말하기 보다는 아래에 내용과 섞어서 차이점까지 말하면 최고)

- 스레드와 코루틴의 차이점(메인, 서브, 코 루틴의 설명과 동기와 비동기 관련 차이점 말하면 훌륭하다고 생각)

- GC가 무엇인지 장단점(지금은 Unreal 개발자로 일하고 있는데, 어떤 형식의 GC가 있는지 알아둬도 나쁘지 않음)

- C++와 C#의 차이점(보통 둘다 다룰 수 있다고 한다면 꼭 나오는 질문인거 같다.)

- iterator 가 무엇인지

- 쉐이더 어떤거 사용해봤는가

- 정적 변수 및 함수는 어떤 부분 때문에 사용하는가

- 사용해본 디자인 패턴은 어떤게 있고 어떻게 적용시켰는가

- 유니티 엔진의 파이프라인 관련 질문(지인의 경험)

- 델리게이트 (종류 특징)

- 프로퍼티 (무엇이고 어떤 기능 있고 등)

 

포트폴리오 강화하면서 디자인 패턴들을 적용시키고 코드를 개선하는 작업을 많이 했는데, 운좋게도 그런 질문이 나와서 자신있게 대답할 수 있었다. 패턴이 여러가지이기 때문에 자신이 만든 프로젝트에서 적용시킬 수 있는 부분이 있다면 한두개 쯤은 적용시켜두는것도 좋은것 같다. (새로운걸 만드는 것보다 자신의 프로젝트에 패턴을 적용시키고 그에 따른 보고서 형식을 만들면 강화된 포폴을 만들 수 있지 않을까 싶다.)

 

유니티 엔진 파이프라인 같은 경우에는 지인이 이름 있는 게임을 운영 중인 게임 회사의 면접을 보러갔다가 질문받았다고 들어서 이 부분은 추가적으로 넣어봤다.


4. 게임 회사에서 추가적으로 받았던 질문 혹은 겪었던 상황(2차 면접 포함)

- 정렬 알고리즘 손코딩

- 그냥 주는 문제 손코딩

- 코딩 테스트 준비하면서 풀었던 문제 중 기억에 남는 문제 있냐고 질문 받고 그 문제를 그 자리에서 변형해서 질문받음

- "게임 기획자 기획인 너무 노답인데, 게임 개발자 입장에서 어떻게 할 것인가" 에 대한 질문

- "지인이 회사 게임이 똥망겜이라고 하는데 어떻게 반응할 것인지" 에 대한 질문

- 지금까지 배웠던 부분이 현업에서 쓸모 있는지에 대한 질문(압박 면접)

- 동아리관련 활동, 문화생활, 책 읽고 있는거 있는지 질문

- 우리회사 게임 해봤는지에 대한 질문

- 게임을 좋아하는지(너무 당연한 질문인데, 게임 해본게 없으면 참 대답하기 어려운 질문. 실제로 싫어하는 사람도 있음)

- 꼬리물기 질문 

 

가장 어려웠던 질문은 압박면접이 아니었나 싶다. 압박 면접의 의도는 알았지만 엄청나게 열심히 달려왔는데, 지금까지 겪으면서 열심히 달려왔던 부분을 부정하면서 "현업에서 쓸모 있는지 모르겠다. 내가 보기에는 다 쓸모없다. " 등의 이야기를 하니까 확실히 기분이 나쁘기는 했다. 물론 면접 끝나고 나갈 때, "열심히 해왔던 부분이 맞는거에요!" 라는 느낌의 마지막 말을 해줬기에 화가 풀렸지만 열심히 살았던 부분에 대해 부정을 하는건 확실히 화가났던것 같다. 


지금은 회사에 취업한 상태이기 때문에, 취업 준비할 때 공부했던 CS가 얼마나 필요할지는 모르겠지만 적어놨던 글을 옮기면서 한번씩 체크해보면 다시 상기도 되고 지식의 폭도 다시 넓어지지 않을까 한다.