대략 7~8년 전 봄 이야기임 


게임회사 존나 큰 회사 (N사) 기술면접 보러감 


직무는 게임 서버개발


경력 3년 이상 이라고 기준 그어놨는데, 그냥 씹고 지원함, 운좋게 기술면접 보자함

(그때 경력 1년 10개월 ㅇㅇ, 퇴사 날짜가 아다리가 잘맞아 경력 2년 찍고 이직함 ㅇㅇ )

간단한 이야기 하고 바로 본론으로 넘어감 


면접관 : 일단 코딩 문제 몇개 있는데 이거 풀어보세요 

(간단한 문제였음, 문자열 순서 뒤바꾸는 문제랑 링크드 리스트 문제)


화이트보드에 쓱쓱 품. 


면접관 : 다 맞으셨고요, 기술 관련해서 몇개 물어볼께요. SQL 쓰셨죠? 

나 : 네

면접관 : 그러면 인덱스에 대해서 설명해주세요 

나 : 네, 화이트보드좀 쓸께요... (그림 그리기 시작)클러스터드 인덱스랑 넌 클러스터드 인덱스가 있는데 이게 MSSQL 내부에서는 트리구조로 가는데 

      이러이러한 원리 때문에 클러스터드는 상대적으로 select 가 빠른데 인덱스값 잘못 넣어서 insert 하면 정렬때문에 지랄나고 ....


면접관 : 네, 잘 들었습니다. 다음으로 C++ 에 virtual 함수에 대해 설명해주세요 

나: 화이트보드 다시 쓸께요, (또 그림그리기 시작) C++ 에서 다형성이 발생할때는 상위 클래스의 포인터로 하위 클래스의 객체를 생성할 수 있는데 

     이때 함수를 호출하면 상위 클래스 함수가 호출 되는데 이게 왜이러냐면, C++ 컴파일러는 컴파일을 할때 변수는 메모리위치를 저장하고 함수는 엔트리포인트를 저장하는데 

     어쩌구 저쩌구 해서 이런 문제가 생기니까 주절주절 그래서 virtual 키워드를 붙여서 가상함수로 선언하면 이 함수는 이제 호출될때 버추얼 테이블에서 실제 함수 주소를 찾아...뭐라뭐라


면접관 : 다음으로 넘어갈께요 IOCP 에 대해서 설명해주세요 

나: 다시 화이트보드 쓸께요, IOCP 를 설명 하려면 Overlapped IO 부터 설명을 해야 하는데

     윈속 IO 모델이 아주 기본으로는 동기 통신이라, 비동기 통신을 지원하기위해 윈속 2.x 대부터 overlappedIO 를 지원하는데 

     이걸 사용해서 IO 가 일어나는 상황을 그림으로 그려보면...


면접관 : 더이상 설명은 됐고요, 그럼 IOCP 를 왜쓸까요?

나 : IO 작업이 완료되었다는 통지를 받는법이 있는데 쓰레드를 블럭시키는 방법, eventselect, completion routine 은 모두 한개의 쓰레드에서 처리할 수 있는 소켓에 제한이 있는데 

       IOCP 는 아시다시피 쓰레드 풀을 효율적으로 쓸 수 있어서 주저리주저리...


면접관 : 메모리 단편화가 뭐고 이걸 해결하기 위해서는 어떻게 해야할까요?

나 : 실제 메모리는 100MB 가 남아있지만, 메모리 상황을 자세히 보면 이게 10MB 씩 10개로 나뉘어져 있는 상황이 메모리 단편화고, 저라면 메모리 풀을 만들어서 쓰겠다..(이건 틀린거 같았음..)


면접관 : 시간 다 되었네요, 수고하셨습니다. 

나 : 감사합니다.(ㅅㅂ 운이 좋았네, 더이상 아는것도 없었는데.)


두시간 있다가 합격통지받음 ㅇㅇ 


참고로 내가 답했던거, 게임회사 가려고 포트폴리오 만들면서 공부했던거임


첫 회사 기술면접에서도 저거랑 거의 비슷한 질문했고, 거의 똑같이 설명했음. 


이력서에 기술관련해서 뭘 쓸 때, 스케치북 하나에 해당 기술의 아키텍쳐를 그려보고, 제대로 설명 할 수 있는지 생각해봐 


이런 방법으로 제대로 설명할 수 있으면 기술면접에서 안밀린다 ㅇㅇ 


면접때 말로 하기 힘들면 그림으로 그리면서 설명해도 된다, 개발꼰대들 암만 많아도 그정도는 권장하지 하지말라고 하진 않음.


중요한건 사람 뽑을때 '얕고 넓게' 아는 개발자 뽑는데는 높은 확률로 SI 땔감으로 간다. 


신입부터 경력 2~3년차 까지는 '좁아도 깊이있게' 아는사람이 경쟁력있으니 참고들 하시고 ㅇㅇ