게임 서버프로그래머 경력 이직 면접 정리 (주니어)
최근에 이직 준비를 하면서 코테를 여럿 보았는데 성적이 되게 나쁘지 않았다.
그래서 그런지 면접도 회사에서 쓰던 지식으로 보면 되겠지?라는 안일한 마음으로 갔다가 처참하게 머리가 터졌다.
신입 면접 때 다 대답했던 내용인데, 거의 절반 이상의 내용을 제대로 말하지 못하였고,
서버 프로그래머로써 나의 단점을 말할 때 서버 경험이 부족하다고 말하는 대참사가 벌어졌다.
그래서 어느 정도 정리를 하고 이직을 성공할 때까지 이 포스트를 최신화하도록 할 것이다.
이직 완료해서 더 이상 최신화는 없음.
대충 느낀건 경력 면접에 두 가지 타입이 있는 것 같다.
1. 스피드 퀴즈 쇼 타입 : 실제 재직 중에 전혀 사용하지 않고, 직전에 외우지 않으면 절대 기억 날 수 없는 그런 면접용 지식들까지도 왕창 물어보고 모르면 즉석 해서라도 만들어보라고 요청하는 형태라서 면접에서 뇌 정지 오지 않고, 빠르게 대답할 수 있는지? 가 중요한 순발력 싸움인 것 같았다. 난 면접이나 발표에서 즉석으로 말하는 게 너무 고통스러운 타입이라 너무 힘겨웠던 타입. ㅇ-<-<
2. 경력 읊기 타입 : 프로세스와 스레드의 차이 같이 뻔하고 재미없는 질문들은 하나도 없었고, 진짜 회사에서 어떤 일을 했고, 어떤 기술을 써서 어떻게 구현했고, 뭐가 힘들었고, 어떤 식으로 극복했는지 같이 프로젝트를 어떻게 진행했는지 뜯어보는 타입. 관련 질문은 준비를 하나도 안 했는데도 모두 내 경험에서 나온 이야기들이라 무난하게 대답할 수 있었고 문제 복기를 철저히 하는 편이라 나한테 너무 편했다.
3. 1+2 타입 : 스피드 퀴즈 쇼 타입 문제를 경력에서 어떻게 썼는지 섞는 느낌으로 다수 물어보셨다. 그나마 경험을 토대로 말하는거라 덜 힘들었음. (안 써본 것도 많았다.)
코테
생성자 소멸자 복사생성자 순서
데드락이 걸리는 코드를 제시하고 이유와 해결 방안 제시
영문으로 된 함수 설명을 보고 용도에 맞게 사용하기
BFS
외판원 문제
난이도 하 DP
DFS + 힘들게 가지치기
해시
시뮬레이션
면접
1분 자기소개
알고있는 모든 정렬 알고리즘의 시간 복잡도
Dictinary 내부 동작 원리
-> 해시 테이블 구현 방법
-> 버킷 개수를 어느 정도로 분포하게 둘 것 인가?
-> 버킷이 너무 많아질 기준이 무엇일까?
-> 스트링 해싱을 어떻게 할 것인가?
IOCP 설명. 왜 쓰는가?
DB (논) 클러스터 인덱스
DB 트랜잭션 처리에 대해서
DB 외래 키
대칭키 / 비대칭키 암호화
C# Thread vs Task vs Event
ELK 구상 시나리오
데드락 설명
IDL
패킷 프로토콜
최근에 본 책이나 관심 있는 분야
회사에서 한 일을 나열해보세요.
현재 재직 중인 프로젝트의 유저 동기화 기법
작업한 내용 구현 내용
레디스를 활용해서 무엇을 했는지?
서버 프로그래머로써의 장점과 단점
Docker 써보았는지?
Zabbix, Grapana 용도가 무엇인지?
그냥 HTTP 안 쓰고 REST 쓰는 이유?
HTTPS?
배포 방법
두 배열의 중복 여부를 조사하는 방법
정렬된 맵을 사용할만한 곳이 있을까?
쉐어드 포인터의 종류와 쓰임새
인터페이스와 추상 클래스의 차이와 어떨 때 쓸 수 있을지.
string을 가변에 대해. (왜 쓰는지, 주의할 점)
C# GC의 작동 원리
-> rooted object?
-> 압축?
-> 세대?
-> 튜닝?
퀘스트 시스템을 설계해보아라.
뮤텍스 세마포어 크리티컬 섹션
Overlapped IO?
스택 오버플로우 나는 이유와 스택에 쌓이는 게 무엇인지?
씨샵 클래스 구조체 차이
박싱이 일어나면 안 좋은 이유를 구체적으로,.
C# Dispose 패턴을 왜 썼냐?
Action Func Event 차이?
C# 리스트 꽉 찼을 때 어떻게 되는지?
Concurrent Dictinary 구현 원리 아는지?
C++ C# Template 차이.
C# Template, 매크로가 팔다리가 없는 이유.
static, dynamic cast 차이.
부모의 생성자에서 가상 함수를 호출했을 때 벌어지는 일.
RTTI 끄면 가상 함수 어떻게 되는지
const, constexpr 차이
dic, sorted dic 차이
lvalue, rvalue, xvalue 등등
rb 트리
콘텐츠 설계 과정
주사위로 1/18 계산하기.
이직 사유
본인 단점 극복했는지
레디스가 빠른 이유
레디스 랭킹 알고리즘
레디스 캐시 서버 동기화 어떻게 했나요
동접 대략 얼마인가요
서버 병목이 어디인가요
작업한 내용 중 가장 문제가 많았던 작업
제일 힘들었던 작업
-> 다시 하라고 해도 힘들 것 같은지
제일 즐거웠던 작업
튜닝 어떻게 했는지
보통 서버에 어떤 문제가 발생했었고 어떻게 고쳤는지
트러블 슈팅 어떻게 했는지
치팅 검증 어떻게 하는지
당신이 한 도전이 무엇인가
최근 관심 있는 이슈
면접 대비 (실제로 나오진 않음)
스레드와 프로세스의 차이와 장단에 대해서 설명하기.
32비트 64비트 컴퓨터의 차이
프로그램이 실행되면 내부에서 어떤 일들이 벌어지는데 설명
C언어 소스가 exe 파일이 되기까지의 과정 (C#으로도 공부하면 더 좋을 듯.)
C# 코드가 실행되는 과정
Ps. 신입 때 받았던 질문은 여기 있는데 이 쪽은 더더욱 알고 있어야 할 듯. https://developstudy.tistory.com/62
하 진짜 신입 때도 말하던 거의 대부분을 못 말한 내가 너무 화나고 이직 성공할 때까지 당분간 계속 생각나서 이불 킥 할 것 같다..