메뉴 건너뛰기

통합검색 입력 폼
잡코리아 주요 서비스
끝이 다른 시작 JOBKOREA 알바의 상식 albamon


취업토크 상세

3N 중에 한 곳에 최종 합격한 후기 및 준비했던 내용입니다. (장문 주의)

작성자
취준화이팅이에요
작성일
2021-10-04
조회수
15002
좋아요 수
61
3N 채용 과정에 서버 프로그래머로 최종 합격하였고, 합격에 도움이 되었던 내용들을 적어봅니다.
항목별로 간단한 설명과 제가 준비했던 내용들을 위주로 적어두었습니다.
서버 프로그래머로 취업 준비를 하시는 분들께 도움이 되면 좋겠습니다.


1. 기본 준비 자세
여러분은 게임하시는 것을 좋아하셔서 게임 업계에 오셨지만, 이제는 게임을 만드셔야 하는 분입니다.
회사 입장에서 채용하고 싶은 사람은 게임을 좋아해서 많이 '하는' 사람이 아니라 게임을 '잘 만드는' 사람입니다.

저도 처음에는 게임 프로그래머로서 제가 '연출하고 싶은 장면'이나
'다른 게임에서 인상깊었던 장면'을 면접장에서 구구절절 설명했었는데,
그것을 어떻게 구현할 것이냐고 물어보셨을 때에 제대로 대답할 수 없었습니다.
만드시고 싶은 게임이 있으시다면 그 게임을 어떻게 만드실 것인지,
그러기 위해 무엇을 노력하고 계신지를 설명하실 수 있어야 합니다.
이 점을 명심하시고 방향을 잘 잡고 공부하신다면 어떠한 분야라도 원하시는 바를 이루실 수 있으실 겁니다.


2. C++
게임은 하드웨어의 성능을 최대한 끌어내서 빠르게 작동해야 합니다.
C++은 다른 언어들보다 훨씬 더 속도가 빠르기 때문에 반드시 공부하시기 바랍니다.
특히 C++의 상속, 다형성, STL, rvalue reference, move semantics 와 같은 내용들을 알아두셔야 합니다.
코딩 테스트 및 일반적인 코딩을 할 때에 유용하게 사용될 뿐만 아니라 게임의 속도 또한 좌우하는 것이기 때문입니다.

1) 혼자 연구하는 C/C++
www.soen.kr 에서 책에 쓰여 있는 내용을 공짜로 보시고 예제를 실행해보실 수 있습니다.
C부터 C++까지 기초적인 내용을 정말 자세하게 잘 설명해놓은 책입니다.

2) Effective C++
바이블입니다.

3) https://www.geeksforgeeks.org/c-plus-plus-gq/
C++관련 퀴즈를 풀며 공부하실 수 있는 사이트입니다.
저 같은 경우는 지하철로 이동할 일이 있으면 자주 보며 공부했었습니다.


3. 운영체제
CPU는 회로 집적의 한계로 인해 Core가 증가하는 방향으로 발전했습니다.
이러한 Core들을 효율적으로 활용하기 위해서 멀티 스레드 프로그래밍이 필수적인 상황입니다.
그리고 이러한 멀티 스레드 프로그래밍을 제대로 하려면 운영체제에 대한 지식이 필요합니다.
프로세스, 스레드, 임계 영역, 페이징, 캐쉬, 스케줄링 등에 대해서 자세히 알아두시기 바랍니다.
잘 알아두시면 추후에 Windows API를 사용하실 때에 훨씬 더 이해가 잘 되실겁니다.
시간적 여유가 있으시다면 운영체제와 연관이 되어 있는 컴퓨터 구조 내용들이 있는데,
그러한 부분들도 찾아서 공부하시기 바랍니다.

1) https://ocw.kookmin.ac.kr/2017%EB%85%84-1%ED%95%99%EA%B8%B0/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C 국민대학교의 수업 강의입니다. 운영체제의 역사 및 핵심적인 내용들이 잘 나와 있습니다.

2) Operating System Concepts
유명한 공룡책입니다. 위의 강의와 함께 봐주시면 좋습니다. 저같은 경우는 최신 10th 판을 사서 공부했는데, 위의 강의에서 사용된 서적과는 내용이 좀 차이가 있습니다.
하지만 핵심적인 내용은 변하지 않았으니 해당 서적을 참고하시면 좋을 것 같습니다.


4. 네트워크 관련
1) 게임 서버 프로그래밍 교과서
게임 서버 프로그래밍에 사용되는 기술들을 전체적으로 알려주는 좋은 책입니다.

2) 윤성우의 열혈 TCP/IP 소켓 프로그래밍
저는 이 책을 '온라인 게임 서버프로그래밍'을 보고 나서 알게 되었는데, 이 책을 먼저 보았다면 '온라인 게임 서버 프로그래밍'을 공부할 때에 훨씬 더 수월하게 하였을 것 같습니다.

3) 온라인 게임 서버 프로그래밍
책 내용이 어려운 편이고 중간중간 오타가 있습니다.
하지만 실제 게임 서버 라이브러리를 처음부터 끝까지 만들어 볼 수 있는 제가 아는 유일한 책입니다.
이 책에 적혀 있는 내용을 다 이해하기만 하셔도 정말 많은 것을 배우실 수 있습니다.

http://www.infopub.co.kr/pds/group_pds/bbs.asp?rec_no=862&sub_no=0&dsp=2&lcnt=444&flg=detail&pdsid=1
위 링크에 책에 수록된 전체 소스 코드가 있습니다.
책 자체가 오타가 좀 있어서 위의 전체 코드를 참조하시면서 공부하시는 것을 추천드립니다.

절대로 그냥 복사 붙여넣기해서 포트폴리오로 제출하지 마시고 되도록이면 코드 분석을 해보시고,
디버깅도 해보시고 내용도 조금씩 바꾸시면서 테스트를 해보시기 바랍니다.

4) 멀티플레이어 게임 프로그래밍

5) 모두의 네트워크
설명이 자세하진 않지만 네트워크의 전체적인 통신 과정을 아주 쉽게 설명한 책입니다. 면접 전에 네트워크의 전반적인 내용을 빠르게 확인할 수 있어서 좋았습니다.

위의 책 내용 외에도 OSI Layer마다 통신을 위해 사용되는 프로토콜이 존재하는데,
이러한 프로토콜과 관련된 구체적인 내용들은 네트워크 관련 전공서적들이나 인터넷을 참조하셔서 개략적인 내용을 알아두시면 좋을 것 같습니다.
ex) ARP, 흐름제어, 혼잡제어, DNS 작동 과정, TCP/IP, UDP, 라우팅 프로토콜 등등..

6) https://www.netmanias.com/ko/post/blog/6264/nat-network-protocol-p2p/p2p-nat-nat-traversal-technic-rfc-5128-part-1-relaying-connection-reversal 위 사이트에서 NAT 및 홀 펀칭과 관련된 내용을 자세히 공부하실 수 있습니다.
네트워크 관련해서 전문적인 내용이 잘 나와있는 사이트입니다.


5. 컴퓨터 그래픽스 관련
저는 서버 프로그래머로 취업을 하였기에 이 부분은 그렇게 자세히는 공부하지 못했습니다.
제가 공부한 책들은 참고사항으로만 적어 놓겠습니다.

1) 3D graphics for game programming

2) 게임 프로그래밍 & 컴퓨터 그래픽을 위한 수학 (이 책은 다 보지는 못했습니다..)


6. 코딩 테스트(알고리즘) 관련
기초적인 자료구조나 알고리즘에 대해 알고 계시다면 아래 링크의 문제들을 바로 풀어보시고,
아니시라면 우선 자료구조나 알고리즘과 관련된 내용을 찾아보시며 공부하시기 바랍니다.
맨 위에 적어두었던 www.soen.kr 이라는 사이트에 자료구조에 대해서도 잘 설명되어 있으니 참고하시기 바랍니다.

1) https://programmers.co.kr/learn/challenges 가장 추천드리는 사이트입니다. 문제를 푸셨다면 꼭 다른 분들의 풀이를 봐주시기 바랍니다.
코딩을 정말 잘하시는 분들의 코드를 볼 수 있는데, 그러한 코드를 짜기 위한 사고과정을 연습하실 수 있어서 가장 추천드립니다.

2) https://www.hackerrank.com/interview/interview-preparation-kit 해커 랭크입니다.
N사 같은 경우는 해당 사이트를 기반으로 문제를 많이 내기에 시험을 보시기 전에 모의고사를 푸신다는 느낌으로 문제를 풀어보시면 좋습니다.

3) https://www.acmicpc.net/workbook/view/1152
보통은 인풋은 알아서 주고 함수만 구현하는 문제가 많은데,
가끔 인풋을 받는 부분도 구현해야 하는 코딩 문제들이 나옵니다.
그러한 경우 위의 링크에서 몇 문제를 연습해보시면 좀 더 용이하게 푸실 수 있습니다.

BFS가 주로 많이나오고 가끔씩 시간이 많이 소요되는 시뮬레이션 문제가 나오는데 알아두시면 좋습니다.
삼성 기출문제 같은 경우는 블로그에 예시 답안도 많으니 개인적으로 해당 문제들을 추천드립니다.
문제 내용이 어려운 편인데, 계속 풀다보면 어느 순간 풀리는 때가 오니 포기하지 마시기 바랍니다.


7. 포트폴리오 관련
1) 2D 캐주얼 게임 (Unity)

2) 온라인 FPS 게임 (Unity)
https://www.youtube.com/c/Brackeys/playlists 이 유튜버 분의 강의를 보며 전체적인 부분을 만들었고,
추가로 필요한 세세한 기능들은 따로 찾아보며 추가해서 만들었습니다.

3) IOCP, Event Select 채팅 서버

4) 온라인 게임 서버프로그래밍 책을 참고로 하여 만든 게임 서버 라이브러리
사실 제가 완전히 만들었다기 보단 잘 만드신 코드를 분석하고 실행해보며 해당 코드의 정수를 이해했다는 표현이 좀 더 올바를 것 같습니다.

만든 게임 같은 경우는 실행 화면을 영상으로 찍어서 유튜브에 올렸고,
관련 코드들은 GitHub에 정리하여서 올렸습니다.
Git을 사용할 줄 아는 것은 프로그래머로서 필수적인 것이니 익혀두시기 바랍니다.
Git의 사용법은 아래 링크를 참조하시기 바랍니다.
https://opentutorials.org/course/2708
만약 클라이언트 프로그래머로 지원하신다면 컴퓨터 그래픽스와 관련된 기술을
활용하셔서 어필하실 수 있는 Unreal 엔진을 추천드립니다.





제 주위에는 일반 기업을 다니는 분들만 계셔서 게임 업계 취업과 관련해서 여쭤볼 분이 없었습니다.
혼자 공부하고, 커뮤니티에 질문드리고, 면접에서 떨어지면서 얻은 경험을 바탕으로 위의 내용들을 적었는데,
이 정보들을 바탕으로 저처럼 많은 시행착오를 거치지 마시고 빠르게 원하시는 곳에 취업하시기 바랍니다.

그리고 추가로 말씀드리자면 3N만큼은 아니여도 좋은 기업들이 많이 있습니다.
제가 1년 정도 일했던 회사도 그러한데, 잡 플래닛 같은 곳에 가입하시고 공고가 올라오는 기업들의 리뷰를 확인해보시면서 가능하시다면 취업하셔서 업무를 배우시는 것도 추천드립니다.
업무를 실제로 해보는 것과 해보지 않은 것은 시야의 차이가 많이 생기고,
보통 한 파트에 한 분 이상은 뛰어난 분들이 계시는데,
이러한 분들과는 함께 업무를 하시는 것만으로도 많은 것을 배우실 수 있습니다.

아래 링크는 그렇게 제가 배우게 된 내용들 중 하나인데 참고하시면 좋을 것 같습니다.
https://news.hada.io/topic?id=3539
주저리 주저리 적다보니 글이 길어졌는데 끝까지 읽어주셔서 감사합니다.
취업 준비가 정말 어렵고 힘든데, 그래도 포기하지 마시고 방향을 잘 잡고
노력하셔서 꼭 좋은 결과 얻으시면 좋겠습니다.

환절기인데 감기 조심하시고, 남은 하루도 좋은 하루 보내시기 바랍니다.

감사합니다.


배너



퀵메뉴