검색

개발자 면접을 위한 CS 전공지식, 어떻게 준비해야 할까?

『면접을 위한 CS 전공지식 노트』 주홍철 저자 인터뷰

  • 페이스북
  • 트위터
  • 복사

만약 시간이 부족하다면 백엔드, 프런트엔드와 같은 영역을 정한 다음, 거기에 맞는 프로젝트를 하시고, 시간이 여유가 있다면 여러 영역의 프로젝트를 모두 해보고 그중 원하는 영역의 개발자가 되시면 됩니다. (2022.07.19)

주홍철 저자

'CS 전공지식'이란 무엇일까? 'CS'란 'Computer Science'를 말하며, 보통 디자인 패턴, 운영체제, 데이터베이스 자료 구조 등이 포함된다. 분량도 매우 방대하다. 이러한 CS 전공지식을 좀 더 효율적으로 학습할 수 있는 방법을 『면접을 위한 CS 전공지식 노트』에서 소개한다.



작가님 소개를 부탁드립니다.

AI핀테크 스타트업, 어비스의 리드 개발자이자 설립자이고, 대한민국 최고의 핀테크 서비스를 만들고 있는 개발자 주홍철입니다. 대표적인 프로젝트로는 대한민국 공항, 공군에 설치되어 쓰이고 있는 실시간 모니터링 시스템을 개발했습니다. 『면접을 위한 CS 전공지식 노트』『실시간 모니터링 시스템을 만들며 정복하는 MEVN』을 집필했고, 인프런에서 '10주 완성 C++ 코딩테스트', 'CS 지식의 정석'을 강의하고 있습니다. 또한, 구독자 2700명인 <큰돌의 터전> 유튜브 채널도 운영하고 있습니다.

『면접을 위한 CS 전공지식 노트』 를 쓰신 계기가 궁금합니다.

면접을 보다 보면 면접관들이 CS 지식에 관한 질문을 많이 합니다. CS 지식이란 컴퓨터 공학적 지식을 말하는데요. 디자인 패턴, 자료 구조, 데이터베이스, 운영체제, 네트워크를 아우르는 지식을 말합니다. 이런 지식은 개발자가 비즈니스 로직을 구축하는 데 있어서 기초가 되는 상식이에요. IT 회사도 이런 점을 아는 만큼 CS 지식에 관한 질문을 많이 하더라고요. 그런데 이런 걸 한 번에 알려주는 책이 없었어요.

제 경우에는 컴퓨터 공학 전공자들이 보는 전공 서적 몇 개를 전부 외웠고, 관련 강의도 전부 듣고 모두 외워서 준비했어요. 그렇게 해서 합격은 했는데, 너무 힘들었던 경험이었어요. 그래서 저와 같은 이런 힘겨움을 다른 분들도 '취업 준비생일 때 겪지 않을까?'라는 생각이 들었고, 조금이라도 도움이 되고 싶어 이 책을 집필하게 되었습니다.

요즘 개발자 취업 시 면접 동향은 어떠한가요?

신입은 확실히 탄탄한 CS 지식이 있는지, 알고리즘을 잘하는지를 물어보고, 경력은 프로젝트 위주로 질문하되, 조금 더 깊은 수준의 내용도 함께 질문하곤 합니다. 여기서 조금 더 깊은 수준의 질문이란 다음과 같은 질문을 뜻해요. 조금 어렵게 느껴질 수 있겠지만, '아, 이런 식으로 꼬리에 꼬리를 무는 식으로 나오는구나'라고 정도로만 이해해주세요.

'MongoDB'의 특징은 무엇인가요?

NoSQL로 사용할 수 있는 DB이며 3.2 버전 이상부터는 와이어드타이거 엔진을 쓰며 읽기, 쓰기 기능 등을 향상시켰습니다. 'aggregate' 등이 되며 도큐먼트를 만들 때 12바이트의 유니크한 아이디가 생성되는 것이 특징입니다. 또, 'MongoDB'는 'ObjectID'라는 기본 키가 주어지는 것이 특징이죠.

그렇다면 이 아이디는 몇 바이트로 이루어져 있고, 어떻게 구성되어 있나요?

12바이트의 유니크한 아이디이며 4바이트의 타임 값, 5바이트의 랜덤 값, 3바이트의 랜덤 값으로부터 증가되는 카운트 값으로 구성되어 있습니다.

MongoDB로 리플리카셋을 구축한다고 했을 때, 서버가 몇 대 이상 필요한가요?

일단 MongoDB에서 리플리카셋을 구축할 때 보통 세 개 이상의 서버로 하는 것이 일반적입니다. 한 개의 마스터 노드, 두 개 이상의 세컨더리 노드로 쓰니까요. 이때 서버 개수가 부족할 때 서버 1대를 2대처럼 만드는 것이 있는데, 이는 좋지 않습니다. 왜냐하면 MongoDB의 메모리 버퍼 풀 같은 경우 서버 내의 메모리 50%를 차지하기 때문에, 2대로 만들면 부하가 발생했을 때 대응을 못 할 확률이 높기 때문입니다.

만약, 2대의 서버와 스펙이 낮은 서버 1대가 있다면 아비터 노드도 고려해볼 만합니다. 아비터는 별도로 사용자의 데이터를 보관하거나 처리하지 않아 높은 사양의 하드웨어를 필요로 하지 않기 때문에 비용이 낮습니다. 스펙이 낮은 서버 하나를 아비터 노드로 만들고 이를 통해 프라이머리 선출에 참여하는 용도로만 쓰면 됩니다.

코딩 테스트 동향은 어떠한가요?

제가 사실 오랫동안 코딩 테스트 과외와 강의를 진행했습니다. 지금은 그러한 경험을 토대로 인프런에서 'C++ 10주 완성 코딩 테스트'라는 강의도 진행하고 있고, 그래서 이 부분을 잘 안다고 개인적으로는 자신합니다. 보통 "기출 문제를 중심으로 코딩 테스트를 준비해라."는 말을 많이들 하는데요. 개인적으로는 맞지 않다고 생각합니다. 사실 L사를 제외하고는 어떤 문제가 나올지 아무도 모릅니다. L사는 코딩 테스트에 우리는 '구현'만 낸다고 공언을 했고, 지금까지 쭉 구현만 내고 있어서 해당 기업의 코딩 테스트는 구현만 계속 공부하면 합격합니다.

그러나 IT 취준생이라면 한 회사에만 지원하는 경우는 거의 없을 겁니다. 보통은 네카라쿠배 모두 지원하거든요. 그렇기 때문에 이 많은 회사의 코딩 테스트 유형을 준비해야 하는데, 저는 이 회사들의 코딩 테스트 유형은 '랜덤'이라고 생각해요. '과거의 사례들, BFS, DFS 등이 나온다.'라고 해서 BFS만 준비하다가는 갑자기 DP가 나올 수 있거든요. 그렇기 때문에 '코딩 테스트에 자주 나오는 유형+나올 만한 유형'을 기반으로 전체적으로 학습하는 게 중요하다고 생각해요.

개발자가 성장하려면 어떻게 해야 할까요?

개인적으로는 알고리즘을 배우고 다양한 언어를 배워야 한다고 생각합니다. 제가 프로그래밍 실력이 늘었다고 느꼈던 때가 바로 알고리즘을 배우기 시작했던 시기였던 것 같아요. 그때까지는 그저 '모듈화', 'immutable', 'lint' 정도만 잘하면 좋은 코드라고 생각했는데, 알고리즘을 배우고 난 이후에는 생각이 달라졌거든요. 내가 짠 코드의 시간 복잡도나 공간 복잡도가 보이고, 이 코드가 효율적인지 비효율적인지가 보이면서, 코드를 조금 더 잘 짜게 된 것 같습니다. 그리고 저는 자바스크립트 언어만 좋아해서 다른 언어를 배우지 않으려고 했는데, C++나 JAVA 같은 컴파일 언어를 배우면서 한 단계 더 성장했다고 생각합니다. 

비전공자가 노력하면 원하는 회사에 취업할 수 있을까요? 

저 또한 비전공자입니다. 꾸준히 노력하다 보면 충분히 가능합니다. 제가 증명하잖아요. 화이팅!

처음 프로그래밍을 배운다면 어떻게 하는 게 좋을까요?

C 또는 C++를 공부하는 걸 추천합니다. 그리고 코딩 테스트를 3개월 정도 준비하세요. 그 이후에 프로젝트를 하면서 알고리즘을 하루에 1~2문제씩 풀면서 감을 유지하세요. 이렇게 하면 됩니다. 프로젝트는 본인이 하고 싶은 프로젝트를 하는 게 좋습니다. '아, 세상에 이런 게 있으면 좋을 것 같아!'라고 생각하는 것들을 만들어 보시면 됩니다. 만약 시간이 부족하다면 백엔드, 프런트엔드와 같은 영역을 정한 다음, 거기에 맞는 프로젝트를 하시고, 시간이 여유가 있다면 여러 영역의 프로젝트를 모두 해보고 그중 원하는 영역의 개발자가 되시면 됩니다. 어렵다고, 막연하다고 생각하지 마시고 일단 도전해보세요!



*주홍철

AI 핀테크 스타트업, 어비스의 리드 개발자이자 설립자이다. 이전에는 네이버의 로그 플랫폼 쪽에서 일했으며, 대한민국 공항, 공군에서 쓰는 실시간 모니터링 시스템을 만들었다. 국방부 등에서 군 SW 발전에 기여한 공로로 참모총장상, 사령관상, 단장상을 수상했으며, 카카오 프런트엔드 챌린지 6위, 스타트업 해커톤 1위, 백준 알고리즘 상위 1%의 실력을 보유하고 있다.




면접을 위한 CS 전공지식 노트
면접을 위한 CS 전공지식 노트
주홍철 저
길벗



추천기사





‘대한민국 No.1 문화웹진’ 예스24 채널예스
이 기사가 마음에 드셨다면 아래 SNS 버튼을 눌러 추천해주세요.

독자 리뷰

(0개)

  • 독자 의견 이벤트

채널예스 독자 리뷰 혜택 안내

닫기

부분 인원 혜택 (YES포인트)
댓글왕 1 30,000원
우수 댓글상 11 10,000원
노력상 12 5,000원
 등록
더보기

글ㆍ사진 | 출판사 제공

출판사에서 제공한 자료로 작성한 기사입니다. <채널예스>에만 보내주시는 자료를 토대로 합니다.

오늘의 책

이토록 매혹적인 외국어 공부

인간은 언어를 구사하는 존재다. 우리가 언어를 배우는 이유는 보다 나은 인간이 되기 위해서다. 외국어 공부는 보다 넓은 세계도 보여준다. 『숲속의 자본주의자』 박혜윤, 응용언어학자 김미소 두 저자가 쓴 글을 읽으면 미치도록 외국어 공부가 하고 싶어진다. 영어, 일어 모두.

배우 문가영이 아닌, 사람 문가영의 은밀한 기록

배우 문가영의 첫 산문집. 문가영은 이번 에세이를 통해 ‘파타’라는 새로운 얼굴을 통해 자신의 내밀한 언어들을 선보인다. 자신을 경계인으로 규정하며, 솔직한 생각과 경험을 형태와 시공간을 뛰어넘어 실험적으로 다뤄냈다. 앞으로의 그녀가 더 기대되는 순간들로 가득 차 있는 에세이.

자유롭고 행복한 삶

좋아하는 일을 하며 자유로운 삶에 도달한 68만 유튜브 크리에이터 드로우앤드류의 신간이다. 남에게 보이는 삶을 벗어나 온전한 나의 삶을 위해 해온 노력과 경험을 들려준다. 막막하고 불안한 20-30대에게 자신만의 삶을 방식을 찾아가는 데 큰 힘이 될 것이다.

사교육의 나라에서 흔들리지 않고 중심잡기

단돈 8만 원으로 자녀를 과학고에 보낸 엄마가 알려주는 사교육을 줄이고 최상위권 성적으로 도약하는 법! 고액의 사교육비와 학원에 의존하는 대신, 아이의 자기주도적인 학습을 위해 부모가 가정에서 어떻게 올바른 학습 환경을 마련하고 노력을 해야하는지에 대해 알려준다.


문화지원프로젝트
PYCHYESWEB02