
컴퓨터공학 전공자라면 전공 수업을 들었다는 이유만으로 기본기가 충분하다고 생각하기 쉽습니다. 저도 처음에는 자료구조, 운영체제, 데이터베이스를 이미 배웠으니 취업 준비에 큰 문제가 없을 줄 알았습니다. 하지만 기술 면접을 준비하면서 해시맵이 왜 빠른지, 프로세스와 스레드는 어떻게 다른지, 인덱스와 정규화가 실제 설계에서 왜 중요한지 설명하는 데 막혔습니다. 그때 전공과목 복습은 단순 암기가 아니라 프로젝트 경험을 더 깊게 설명하기 위한 준비라는 걸 느꼈습니다. 저는 취업 전에 핵심 개념을 다시 정리하고, 지원 직무와 연결해 한 문장으로 설명하는 연습이 꼭 필요하다고 생각합니다. 이 글에서는 제 경험을 바탕으로 컴퓨터공학 전공자가 취업 전에 다시 정리하면 좋은 핵심 과목을 알아보겠습니다.
컴퓨터 공학 전공자 과목 복습을 미루면 자료구조 질문에서 막힌다
일반적으로 코딩테스트만 준비하면 자료구조는 충분하다고 알려져 있지만, 제 경험상 그렇지 않았습니다. 문제를 풀 수는 있어도 “왜 이 구조를 선택했냐”는 질문 앞에서 말문이 막혔습니다. 자료구조(Data Structure)란 데이터를 효율적으로 저장하고 관리하는 방식입니다. 쉽게 말해 어떤 그릇에 데이터를 담느냐를 결정하는 기준입니다. 배열, 연결 리스트, 스택, 큐, 해시 테이블, 트리, 그래프가 대표적입니다.
면접에서 “해시맵은 왜 빠른가요?”라는 질문을 받은 적이 있습니다. 해시맵은 키를 해시 함수로 변환해 저장 위치를 바로 계산합니다. 여기서 해시 함수란 임의의 데이터를 고정된 크기의 숫자로 변환하는 함수를 의미합니다. 덕분에 평균 O(1)의 시간복잡도로 조회가 가능합니다. 시간복잡도(Time Complexity)란 입력 크기가 커질수록 연산이 얼마나 늘어나는지를 나타내는 지표입니다.
BFS와 DFS도 정의만 외웠다가 면접에서 당황했던 개념 중 하나입니다. BFS(너비 우선 탐색)는 가까운 노드부터 단계별로 탐색해 최단 경로 문제에 유리하고, DFS(깊이 우선 탐색)는 한 방향으로 끝까지 탐색해 모든 경우를 따져야 할 때 자주 씁니다.
직무별로 우선순위를 잡는 것도 중요합니다.
- 백엔드 개발: 해시 테이블, 트리, 큐 중심
- 데이터 직무: 정렬 알고리즘, 동적 계획법, 그래프 탐색
- 인프라·클라우드: 큐, 스택, 캐시 구조 이해
제가 직접 준비하면서 느낀 건, 개념을 외우는 것보다 프로젝트에서 “왜 이걸 썼는지”를 한 문장으로 설명할 수 있어야 한다는 점입니다. 그 연습이 코딩테스트보다 면접에서 훨씬 더 도움이 됐습니다.
전공과목 복습 없이 운영체제 질문을 넘기기 어렵다
운영체제는 수업 때 어렵다고 느껴서 슬쩍 넘겼던 과목입니다. 그런데 솔직히 이건 예상 밖이었습니다. 실무와 거리가 먼 이론 과목인 줄 알았는데, 면접에서 운영체제 질문이 꽤 자주 나왔습니다. 핵심은 프로세스와 스레드입니다. 프로세스(Process)란 실행 중인 프로그램의 독립 단위로, 고유한 메모리 공간을 갖습니다. 스레드(Thread)는 하나의 프로세스 안에서 실제 작업을 처리하는 흐름입니다. 쉽게 말해 프로세스는 공장 전체이고, 스레드는 공장 안에서 일하는 작업자 한 명이라고 생각하면 됩니다. 메모리 관리도 빠뜨릴 수 없습니다. 스택 영역은 함수 호출과 지역 변수를 저장하고, 힙 영역은 동적으로 할당된 데이터를 저장합니다. 재귀 호출이 너무 깊어지면 스택 오버플로(Stack Overflow)가 발생하는데, 저도 프로젝트에서 이 오류를 만나고 나서야 스택 구조를 제대로 이해했습니다. 가상 메모리(Virtual Memory)도 중요한 개념입니다. 가상 메모리란 실제 물리 메모리보다 더 큰 공간을 사용할 수 있도록 디스크 일부를 메모리처럼 활용하는 기법입니다. 이 개념을 이해하면 서버가 왜 특정 상황에서 느려지는지를 파악하는 데 도움이 됩니다.
한국정보통신기술협회의 IT 기술 자격 평가 기준에 따르면, 운영체제 관련 개념은 시스템 소프트웨어 직무에서 핵심 평가 항목으로 분류됩니다(출처: 한국정보통신기술협회). 단순히 시험 과목이 아니라는 뜻입니다. 제가 직접 써봤는데, 운영체제 개념을 정리하고 나서 리눅스 서버 설정과 배포 과정이 눈에 띄게 수월해졌습니다. 흩어져 있던 개념들이 하나의 흐름으로 연결되는 느낌이었습니다.
데이터베이스를 빠뜨리면 손해다
“데이터베이스는 SQL만 쓸 줄 알면 되는 거 아닌가요?”라고 생각하는 분들도 있는데, 저는 그 생각이 꽤 비쌌습니다. 포트폴리오 발표에서 테이블 설계 이유를 묻는 질문에 제대로 답하지 못한 경험이 있었기 때문입니다. 관계형 데이터베이스(RDBMS)는 데이터를 테이블 형태로 구조화하고 테이블 간 관계를 정의해 데이터를 관리하는 시스템입니다. 쉽게 말해 엑셀 시트들이 서로 연결된 구조라고 보면 됩니다. MySQL, PostgreSQL이 대표적입니다. 인덱스(Index)는 면접에서 자주 나오는 개념입니다. 인덱스란 데이터를 빠르게 찾기 위해 별도로 만들어두는 탐색 구조입니다. 책의 목차와 비슷합니다. 읽기 속도는 크게 올라가지만, 인덱스를 유지하는 비용 때문에 쓰기 성능은 다소 낮아질 수 있습니다. 정규화(Normalization)도 중요합니다. 정규화란 데이터 중복을 줄이고 무결성을 높이기 위해 테이블을 논리적으로 분리하는 과정입니다. “회원 정보를 저장했습니다”보다 “사용자 테이블과 주문 테이블을 분리하고 외래키로 연결했습니다”라고 설명하면 설계 의도가 전달됩니다.
한국데이터산업진흥원의 데이터 직무 역량 가이드에 따르면, SQL과 데이터 모델링 능력은 백엔드 및 데이터 직무 모두에서 기본 역량으로 제시되어 있습니다(출처: 한국데이터산업진흥원).
핵심 개념을 정리하는 순서를 저는 이렇게 잡았습니다.
- 테이블 관계와 기본키·외래키 개념 정리
- SELECT, JOIN, GROUP BY, 서브쿼리 실습
- 인덱스 생성 조건과 장단점 정리
- 정규화 1NF~3NF 예시 작성
이 순서대로 정리하고 나니 포트폴리오에서 설계 의도를 훨씬 명확하게 설명할 수 있었습니다. 솔직히 이건 예상 밖으로 면접 분위기를 바꾸는 데 효과가 있었습니다.
전공과목 복습은 취업 준비의 부가 요소가 아닙니다. 자료구조, 운영체제, 데이터베이스를 제대로 정리한 사람과 그렇지 않은 사람의 면접 답변 밀도는 분명히 다릅니다. 모든 과목을 처음부터 다시 볼 필요는 없습니다. 지원 직무와 연결되는 핵심 개념부터 한 문장으로 설명하는 연습을 시작해 보시길 권합니다.