Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

게임회사 기술면접 질문 & 답변

4.677 visualizaciones

Publicado el

경력직으로 게임회사 기술 면접 보면서 받은 질문에 대한 답변들 정리하여 공유합니다.

Publicado en: Ingeniería

게임회사 기술면접 질문 & 답변

  1. 1. 게임회사 기술면접 질문 & 답변 작성일자 : 2020-02-16 작성자 : 황대영
  2. 2. 목차 • 제 소개 • 기술면접 1 • 기술면접 2 • 기술면접 3 • 기술면접 4
  3. 3. 제 소개 • 게임 회사 4년 • SI 회사 1년 넘게 • 게임회사 경력직 프로그래머를 대상으로 합니다. • 결과적으로 게임회사 모두 탈락하였으나, 기술면접 질문이 어떤 것이 나오는지 공유하는 것이 좋다고 생각하여 작성하였습니다.
  4. 4. 기술면접 1
  5. 5. 기술면접 • 50분 소요
  6. 6. • 어떤 자료구조와 알고리즘을 써봤는지 설명해 주세요. 진행한 프로젝트에서. • Queue에 다음 나올 블록들을 담는다. FIFO 얘기하니까 끄덕끄덕하더라 • 예전에는 다양한 자료구조를 사용했는데, 요즘은 Dictionary를 거의 남용한다. • 그럼 Dictionary 장단점에 대해서 설명해 보세요. • 장점 : 사용하기 편리하다. Key와 Value. 관리하기도 편하다. • 단점 : Key를 주로 string 으로 많이 썼는데. 어떤 Key인지 정의부를 추적하기 힘들다.  의아 한 표정 나옴..
  7. 7. • 단독 개발을 했나요 ? 아니면 팀작업을 했나요 ? 클라이언트 1명 말고. • 주로 혼자서 클라 개발하고, 서버는 다른 개발자 • 디브로스, 모모에서는 3, 4명 클라 개발자. • 면접관의 회사가 팀작업을 하기 때문. • MVC 패턴으로 게임 개발해 보셨나요 ? • 있다. MVC 패턴에 대해서 간략히 설명함. • 분업을 위해서 존재한다고 생각해서 팀원들과 협업하려고 했다. • 그러나 팀원들이 MVC를 몰라서 쓰지 못했다.
  8. 8. • 맵툴 등 툴을 개발해 본 적이 있냐? • 없다. 그러나 포트폴리오로 OGRE 엔진을 이용한 모델 뷰어를 개발했다. • 그럼 모델 뷰어를 개발했으면 애니메이션 가져오는 거에 대해서 설명할 수 있냐? • 기억이 안난다. OGRE엔진에 TorchLight라는 게임 그래픽 리소스를 그대로 가져와서 OGRE엔 진을 이용해 애니메이션 재생만 하면 돌아가더라.
  9. 9. • 최적화를 어떤 걸 해봤는지 2가지만 이야기 해보세요. • Cocos2d-x 라는 게임 엔진으로 sprite batching 작업을 했다. • 그 당시에는 batching이 자동으로 되지 않아서 • SpriteBatch 클래스를 상속 받았다. • DB insert & 압축 해제 하는 작업이 만건 단위였는데 1시간  5분으로 단축했다. • C# 병렬 프로그래밍으로 했는데, 단순히 Paralle.ForEach() 로 해결하였다. Critical Section과 같 은 병렬 프로그래밍 기법을 쓰지 않아서 굉장히 만족스럽고 편했다.
  10. 10. • 게임로프트에서 기술 지원 업무는 어떤 걸 했냐 ? • (게임 개발이 아닌 기술 지원 업무를 했는데 어떤 도움이 됬냐?) • 주로 API 문서 번역 • 해외 개발자와 의사소통 (메일, 메신저) • 국내 사업팀과 주로 의사소통 • 사업팀과 얘길 하다가 보니까 게임 개발을 바라보는 시각이 좀 달라졌다.
  11. 11. • C#과 C++ 중에서 어떤 걸로 선호하냐 ? • 저는 C++을 하다가 유니티 엔진으로 개발하면서 C#을 지금까지 쭈욱 사용했습니다. • C#을 더 선호하는 이유는 • 생산성이 높다. • 편리하다. (예: 헤더 파일 없죠..) • C#이 너무 편하니깐 C++이 불편하게 느껴지더라.
  12. 12. • 팀장님이나 주위 사람들에게 잘한다고 우쭈쭈 해준 칭찬 받았던 회사 두 군데만 얘기해 보세요. • 첫번째, 제가 모바일 개발팀 첫번째 멤버여서 메인 클라이언트를 맡았습니다. • 어쩌다 보니 메인, 게임 프레임워크를 다 만들었습니다. • 팀장님들이 잘 한다고 칭찬을 했습니다. • R&D를 잘 하는거 같아서 팀장님이 R&D를 계속 시켰습니다. • R&D 좋았구요. • 단점은 개발 진행 속도가 느리다는거.
  13. 13. • 유니티에서 에셋 관리를 어떻게 하시나요 ? • 저는 인디게임이나 큰 볼륨의 게임을 개발하지 않았습니다. • 리소스 관리는 네이밍 하는 정도만 했습니다. • 그럼 텍스처를 런타임에 변경하거나 씬 전환할 때 메모리에 미리 불러들여서 하는 작업을 해봤나 요 ? • 아니요. • 그럼 ScriptableObject가 뭔지 아시나요 ? • 아니요. 안 써봤습니다. 모릅니다. • 면접관이 그 자리에서 답답했는지 설명을 해줌….ㅋㅋ • MonoBehaviour 상속 받거나 아무것도 상속 받지 않는 클래스 사용
  14. 14. • 그럼 오브젝트 풀링은 직접 구현해 보셨나요 ? • 아뇨. 저는 저보다 잘 만든 걸 가져다 썼습니다. • 만들어 본적이 없습니다. • 왜 엔진 프로그래머가 아닌 클라이언트 프로그래머로 지원 변경 하셨나요 ? • 하고 싶은거랑, 내가 잘 할 수 있는걸 구분 하려고 원래 하던 클라로 지원했습니다. • DirectX 책 안 본지도 오래 되었구요.
  15. 15. • 그럼 DirectX 책은 언제 마지막으로 봤어요 ? 그리고 기억에 남는 건 뭔가요 ? • 2016년에 봤습니다. • 제가 유니티로 게임 개발할 때 쓴 Billboard 만 기억납니다.
  16. 16. 기술면접 2
  17. 17. • 기술면접이라기 보다 실무진 면접에 가까웠습니다. • 면접 시간 : 50분 • 면접관 : 중앙에 앉은 분이 개발팀장님, 그리고 개발자 분 2명
  18. 18. 자기 소개 시간 • 경력 위주로 어떤 기술 스택을 쌓았는지 설명해 주세요. • “윈도우 어플리케이션”을 개발했다면 그것과 관련된 설명을 부각시켜 주세요. • => 이력서에 거짓말이 없는지 확인
  19. 19. 어플리케이션 개발할 의사 질문 • 저희는 어플리케이션 개발팀인데 게임이 아닌데도 지원 의사가 있냐 ? • 네, 저는 새로운 기술을 배우는 것을 좋아합니다.
  20. 20. • 반박 : 그런데 왜 게임회사를 1년 넘은 곳이 지금 회사 밖에 없나요 ? • 답변 : 저의 기술력을 키우기 위해 이직한 면도 없지 않아 있습니다. 그리고 불가피하게 퇴사한 경 우도 있습니다.
  21. 21. • 오픈소스로 개발해 본 적이 있나요 ? 엔진 말고 라이브러리를 들어주세요. • 답변 : 유니티 에셋스토어의 에셋을 제외하고는 기억이 나지 않습니다.
  22. 22. 주량 / 흡연 • 말씀이 별로 없으신데 (조용한 편인데) 술은 얼마나 드세요 ? • 소주 주량이 어떻게 되세요 ? • 흡연은 하시나요 ? • 소주 1병 반 마시고 술자리를 좋아하지 혼술은 안 좋아합니다. • 흡연은 합니다.
  23. 23. • C++ 본인이 생각하기에 얼마나 잘 한다고 생각하세요 ? • 상 / 중 / 하로 구분하자면 ? • 저는 중이라고 생각합니다. 왜냐하면 C++ 로 개발 안 해본지 8년이 지났고, 모던 C++이라고 해서 계속 버전업이 되었기 때문에 잘 하는 건 아닙니다.
  24. 24. • STL 은 본인이 생각하시기에 얼마나 잘 다루세요 ? • 상 중 하로 나누어주세요. • 중하에 속한다고 생각합니다. 왜냐하면 너무 오래전에 써봐서 기억이 안 납니다.
  25. 25. • 그럼 본인이 생각하기에 자신이 잘 하는 점 딱 한가지만 이야기 해보세요. • 제 자랑 생략…
  26. 26. • 다른 언어나 라이브러리 배우는데 부담감이 없으신가요 ? • 네, 없습니다. 제 경력을 보시면 아시겠지만 저는 항상 새로운 기술을 익혀서 출시한 경험이 있습니 다. 제 목표는 기술력 향상이라서 그렇습니다.
  27. 27. • 최종적으로 본인이 개발하고 싶은 게임이나 컨텐츠가 있나요 ? • 답변 : 네, 현실세계같은 가상현실을 구축하는 것이 저의 꿈입니다.
  28. 28. • 주로 이력서에 관해 궁금한 것들을 물어봤습니다.
  29. 29. • DB insert, 압축해제 하는 시간을 1시간 => 5분으로 단축시켰는데 이게 가능한 건가요 ? • 답변 : 네, 관공서 직원분들이 야간 늦게까지 일을 해야 되었는데 5분으로 단축 되어서 정시 퇴근할 수 있게 되었다고 합니다. • 저는 Parallel.ForEach() 문을 사용해서 병렬 처리를 할 수 있었습니다.
  30. 30. • 아 그러면 코드 몇 줄 추가해서 시간을 그렇게나 시간 단축시킬 수 있던건가요 ? • 답변 : 실제로는 그렇지 않습니다. 실제로는 코드 자체가 for 문이 중첩되어 있고 복잡하여서 실행 순서를 변경하고 코드를 Parallel.ForEach에 돌아가게끔 코드 변경이 꽤 있었습니다.
  31. 31. • 게임학과를 졸업했는데 공부를 잘 하셨겠네요 ? 그리고 부모님은 반대하지 않던가요 ? • 이력을 다 기억하는거 보니까 기억력도 좋으시고 머리가 좋으신가봐요 ? • 답변 : 아뇨, 저희 부모님은 자유방임이라 상관 안 하셨어요. • 매일 이력서를 보고 수정하다보니 외운 것 뿐입니다.
  32. 32. • 60 FPS이 나온다고 했는데 최적화를 할 때 어떻게 하셨나요 ? • 답변 : cocos2d-x는 제가 개발할 당시 sprite batching이 자동으로 지원되지 않았습니다. 그래서 저 는 SpriteBatch라는 클래스를 상속받아서 60 FPS 까지 끌어올릴 수 있었습니다.
  33. 33. • 그렇다면 언제 기술적으로 힘든 경험이 있으신가요 ? • 답변 : 제가 2년간 고향에서 쉬면서 개발은 전혀 안 하고 있었습니다. 그러다가 다시 게임회사에 취 업했는데 Unity로 처음 개발해 보아서 따라가기가 힘들었습니다. 머리가 완전히 포맷된 기분이었습 니다. 제가 왜 쉬었나 후회되기도 하구요.
  34. 34. • 처음부터 출시까지 다 개발한 경험이 있나요 ? • 답변 : 네, 있습니다. 이력에 있는 내용을 다 설명함..
  35. 35. 면접 후기 • 결론부터 말씀드리자면, 느낌적인 느낌은 좋았습니다. • 왜냐하면 프로그램팀 팀장님을 제외하고는 표정이 좋았습니다. • 잘 웃고. 긴장한 저를 풀어주려고. • 프로그램팀 팀장님 한숨을 쉬셨습니다. • 왜냐하면 제 이력이 구멍이 많고 짧기 때문입니다.
  36. 36. 기술면접 3
  37. 37. 기술면접 3 개요 • 시간 : 1시간 50분 • 면접관 : 대표님, 프로그램팀 팀장님 • 기술 면접과 인성 면접 동시에 • 포트폴리오 소스코드를 보여주면서 얘기했습니다.
  38. 38. 멘붕 포인트 • 이전 회사 대표님이 맡고있는 회사의 자회사에 대표님과 면접을 보았습니다. • 게임 회사 좁구나… • 이전 회사를 개인 건강이 좋지 못해서 퇴사했다. (목 디스크) • 당황했습니다. • “혹시 팀장님을 잘 따를 수 있나요 ?"
  39. 39. 기술 면접 • OGRE엔진을 사용할 당시, 물리엔진을 사용한적이 있나요 ? • 답변 : Newton이라는 물리엔진을 사용했습니다. • 그렇다면, 물리엔진 사용한 것이 기억나는 코드가 있나요 ? • 답변 : Collider, Rigidbody를 게임 오브젝트에 붙일 때 코딩을 해야 하는데, 유니티에서는 클릭 한 번으로 끝난다.
  40. 40. 기술 면접 • 수학이 3D에서는 필수인데 수학 공식 등을 이용해서 하는 것을 적용해 본 기억이 있나요 ? • 답변 : 네, 있습니다. 하지만 저는 구글 검색을 통해서 수학 공식을 이용했습니다. • 그렇다면, 검색은 주로 어느 사이트에서 하시나요 ? • 답변 : 주로 구글 검색을 하고, stackoverflow / Unity Forum 검색
  41. 41. 기술 면접 • 충돌을 구현할 때 수학이 필요한데 어떤 개발을 하였는지 설명을 구체적으로 해줄 수 있나요 ? • 답변 : 정확한 수학 공식이 생각나는 것은 아니지만, 한 가지 이슈 때문에 오랫동안 붙들고 있었습 니다. 당구 게임을 예로 들자면, 당구공이 모서리의 틀을 뚫고 지나가는 버그가 있었습니다. • 아, 그럼 총알을 쏘면 벽을 뚫고 지가나는 현상을 말하는 건가요 ? • 답변 : 아뇨, 그것과는 다른 것입니다. 모서리는 벽돌처럼 타일들로 구성이 되어 있어서 각각의 타 일이 당구공 보다 크면 뚫고 지나가는 버그가 있을 수 있습니다.
  42. 42. 기술 면접 • Cocos2d-x 엔진에 비해 Unity의 장단점을 말씀해 주세요. • 답변 : cocos2d-x 엔진은 당시 에디터라는 개념이 없습니다. Unity에서는 Scene View에서 게임 오 브젝트나 GUI를 배치할 수 있습니다. 그러나 cocos2d-x 엔진은 실행을 해봐야 제대로 배치되었나 확인할 수 있는 불편한 점이 있습니다. • 단점은 대부분의 기술을 다 지원해 주기 때문에 프로그래머가 개발할 수 있는 영역의 크기가 좁아 지고 있습니다. 엔진 단에서 많은 것을 해주다 보니 편한 것에 익숙해지는 단점이 있습니다.
  43. 43. 기술 면접 • 디버깅은 어떤 방식으로 하나요 ? • 답변 : 일단 의심되는 부분이 있으면 breakpoint를 걸어두고 디버깅을 합니다. • 그리고 버그 리스트를 작성해서 이중 빨리 끝낼 수 있는 버그들부터 우선 처리해 버립니다. • 좀 쉬다가 하루의 시간을 투자해야 될 버그에 집중합니다. • 로그를 찍기도 합니다.
  44. 44. 기술 면접 • 게임 개발 사이클에 대해서 설명하고, 어떤 것을 추구하는지 말씀해 주세요. • 답변 : 저는 폭포수 모델과 애자일 방식 둘 다 해보았습니다. 폭포수 모델로 게임을 개발할 때에는 • 상세 기획서 분석 • 명사는 변수로 동사는 함수로 추출하여 class diagra을 작성합니다. • 작업 세분화를 통해 일정 산출물을 냅니다. • 실제 구현에 들어가고 디버깅과 출시를 위한 준비를 합니다. • 회사 마다, 그리고 팀 마다 개발 사이클이 다 다릅니다. 그래서 어떤 것이 좋다고 말하기는 어렵지 만, 저는 폭포수 모델을 선호합니다. 왜냐하면 재미있고 깔끔하니까요.
  45. 45. 기술 면접 • MVC 패턴은 웹 개발할 때 쓰이는데 게임 개발할 때도 쓰셨네요 ? MVC 패턴에 대해 설명해 주세요. • 답변 : 웹 개발을 하시던 분이 MVC 패턴으로 게임 개발한 것을 보았고, View의 경우 다른 프로그래 머와 협업하는 것을 보았습니다. 그래서 저도 MVC 패턴을 이용해서 개발자 분과 협업을 준비하였 습니다. 그러나 너무 복잡해진다는 이유로 클래스 하나에 MVC 패턴 일을 모았습니다.
  46. 46. 기술 면접 • 저희 팀은 클라이언트 / 서버 구분 없이 둘 다 개발하는 편입니다. 클라이언트 비중이 크구요. 이에 대해서 어떻게 생각하나요 ? • 답변 : 저 자신도 지금 인디 게임을 개발하면서 서버의 필요성을 느끼고 있습니다. 그리고 서버 쪽 을 배워보고 싶다는 의욕도 있습니다. 그래서 저는 둘 다 해도 크게 개의치 않습니다.
  47. 47. 기술 면접 • TPS 게임을 포트폴리오로 준비하였는데, 총알 발사해서 적 캐릭터가 맞았다는 판단은 어떻게 하나 요 ? • 답변 : 유니티에서 제공하는 ray casting 을 사용했습니다. • 인공지능은 어떻게 구현하셨나요 ? • 답변 : 유니티에서 제공하는 Navigation AI를 사용했습니다. 바닥에 파란색 바탕의 메쉬가 깔리는 것을 확인할 수 있습니다.
  48. 48. 기술 면접 • 클래스 상속에 대해서 어떻게 생각하시나요 ? 장단점에 대해서 말씀해 주세요. • 답변 : 예전에는 상속을 남용했는데, 요즘은 필요한데만 쓰고 있습니다. 왜냐하면 상속을 쓰면 코드 분석이 어려워지고 복잡해 보이더라구요. 장점은 부모가 가진 기능과 속성을 이용할 수 있습니다. • 그렇다면, 단점을 해결하기 위해서 어떻게 하시나요 ? • 답변 : 클래스의 멤버변수로 다른 클래스를 포함시킵니다. • Public class Car • { • Public Engine m_Engine; • Public Tire m_Tire; • Public Seat m_Seat; • }
  49. 49. 기술면접 4
  50. 50. 면접 개요 • 시간 : 50분 • 클라이언트 개발팀 3명이 면접관 (실무 면접) • 4번째 면접이다 보니 말빨이 늘고 있음ㅋㅋ • 우리는 실력은 뛰어난데 협업 안 하는 사람과는 일 안 한다. • 모바일 MMORPG 개발사, 개발팀 65명 • 게임 개발은 4년간 해서 다 되었고, 현재 라이브 상태
  51. 51. 기술 면접 • MVC 패턴을 적용했다고 했는데 게임 개발에서 장단점을 얘기해 보세요. (Model – View – Controller) • 답변 : 장점은 클래스 하나에 하나의 책임을 두어서 분업해서 개발을 할 수 있다. • 단점은 클래스가 너무 많아져서 분석하거나 협업하기가 오히려 어려워진다.
  52. 52. 인성 면접 • 게임회사에서 특별히 기억에 남거나 잘 했다고 생각한 회사는 어디인가요 ? 거기에서 동료분들이 당신을 어떻게 평가 하던가요? • 답변 : 오만한 때가 있었습니다. 개발 실력으로 사람을 평가하고 말의 뉘앙스나 말투에 그게 드러났 을 것 같습니다. 그래서 저를 싫어했을 수도 있습니다. • 그렇다고 해서 관계가 나쁘지 않았습니다. 저도 조용하고 열심히 하는 스타일이라 팀원들이 잘 따 라와줬습니다.
  53. 53. 기술 면접 • Unity에서 Hierarchy를 구성해서 GUI를 개발할 때 UI 디자이너와 어떤 어려움이 있었나요 ? • 답변 : UI 디자이너분이 프리팹을 만들어서 저에게 주었기 때문에 저는 크게 어려운 점이 없었습니 다. • 몇 가지 규칙을 정해놓으면 제가 프리팹에 손 댈 일이 거의 없습니다.
  54. 54. 기술 면접 • Unity에서 제공하는 에셋 번들을 사용해 본 적이 있나요 ? • 답변 : 아뇨, 없습니다. 제가 한 게 아니라 당시 메인 클라이언트 프로그래머가 했습니다.
  55. 55. 기술 면접 • 최근에 최적화와 관련되어 기억나는 것이 있나요 ? • 답변 : 압축 해제  DB insert 하는데 1시간  5분으로 단축했습니다. • 병렬 처리를 했습니다. Parallel.ForEach
  56. 56. 인성 면접 • 저희는 일을 잘 하거나 개발을 잘 하는데 팀원들과 협업을 못 하는 사람을 채용하지 않습니다. 본인 의 장단점을 이야기 해보세요. • 답변 : 저는 새로운 것을 배우는 것을 좋아하고, 정리하는 것도 좋아합니다. 주말이나 퇴근해서 공 부도 하고 인디 게임 개발합니다. • 단점은 이렇게 무리하다가 건강이 안 좋아질 수 있다는 점입니다.
  57. 57. 인성 면접 • 술이나 담배 하세요 ? 결혼 하셨나요 ? • 답변 : 네, 둘 다 합니다.
  58. 58. 인성 면접 • 대기업에는 왜 지원 안 했나요 ? • 답변 : 제 짧막한 이력으로는 서류 심사에서 바로 떨어질 것 같아서 지원하지 않았습니다.
  59. 59. 기술 면접 • 네이티브 언어를 얼마나 다뤄보았나요 ? 그리고 네이티브 언어로 개발할 일이 많습니다. 이에 대해 거부감은 없나요 ? 안드로이드 : Java, iOS : Objective-C • 답변 : 없습니다. 저는 새로운 것을 배우는 것을 좋아라 하기 때문입니다.
  60. 60. 기술 면접 • Jenkins와 같은 빌드 시스템을 다뤄 보았나요 ? • 답변 : 아니요. 잠깐 공부만 하고 해보지 않았습니다. 회사에서도 담당자가 따로 있어서 제가 할 일 은 없었습니다.
  61. 61. • 감사합니다.

×