백엔드 CS지식
백엔드 cs지식 공부법 (백엔드 cs지식, 공부법, 관련 사이트 모두 정리했어요!)
백엔드 cs 지식의 정석, 이거 알아야 기술 면접에서 말할 수 있다!
- 이 글은 백엔드 개발자로 취업을 준비하는 모든 분들을 위한 글입니다.
-
목차
1. CS(Computer Science)란 무엇일까요?
2. 백엔드 CS(Computer Science) 지식, 왜 중요할까요?
3. CS(Computer Science)는 어떻게 공부하는 것이 좋을까요?
백엔드 개발 공부를 하다 보면 반드시 접하게 되는 CS 지식. 제대로 공부를 하기 위해 검색은 했지만 그 양이 너무나도 방대해 시작할 엄두가 나지 않습니다. CS가 Computer Science 라는 것을 알았다면 지금부터 CS 지식의 중요성, CS 공부법에 대해 알아보세요. 컴공생이 직접 알려드리겠습니다.
Part 1.
CS(Computer Science)란 무엇일까요?
혹시 여러분들은 백엔드 CS지식이 무엇인지 정확하게 알고 계시나요? 코딩테스트, Java, Spring … 과 같은 것들은 강의도 많고, 중요하다는 광고도 많이 볼 수 있어서 익숙한데 막상 CS에 대해 정확하게 알고 계시는 분들은 찾아보기가 힘듭니다.
CS(Computer Science) 지식은 크게 5개의 과목으로 나눌 수 있습니다.
-
컴퓨터 구조 / 운영 체제 / 시스템 소프트웨어 / 네트워크 / 소프트웨어 공학과 현업 프로세스
과목별로 주로 배우게 되는 지식들이 개발자로서 일을 하는 데 있어 어떤 연관이 있는지 알려드리도록 하겠습니다.
(자료구조/알고리즘 과목은 본 콘텐츠 최하단 PDF를 확인하세요!)
백엔드 cs 지식 1) 컴퓨터 구조
-
컴퓨터 구조에서는 컴퓨터를 구성하는 부품이나 컴퓨터에서 어떻게 연산이 이루어지는지에 대해 중점적으로 배우게 됩니다. 쉽게 말해 노트북을 살 때 여러분들이 주로 살펴보는 사양인 CPU, 메모리(RAM) 등이 무엇인지 공부하는 과목입니다. 또한 1(참)과 0(거짓)으로 연산이 어떻게 이루어지는지에 대해서 배우게 됩니다. 수학을 공부할 때 가장 먼저 숫자를 배우고, 구구단을 배우셨죠. 여기서 수학이 개발이고, 숫자와 구구단이 컴퓨터 구조에 해당된다고 보시면 됩니다.
백엔드 cs 지식 2) 운영 체제
-
우리가 대부분 알고 있는 대표적인 운영 체제에는 Mac과 Window가 있습니다. 컴퓨터를 조금 더 알고 계신 분들은 Linux, Unix까지 알고 계실 것 같은데요. 운영 체제란 컴퓨터 시스템의 자원들을 효과적으로 사용할 수 있도록 환경을 제공하는 프로그램들을 모아둔 것입니다. 앞서 컴퓨터 구조에서 설명한 CPU, 메모리, 보조기억 장치, 입출력 장치 등과 같은 컴퓨터 부품들이 모두 ‘자원’에 해당됩니다. 여러분이 개발한 프로그램을 실행하는 것은 결국 운영 체제이기 때문에 운영 체제 별로 자원을 어떻게 다루는지 알아야 프로그램을 효과적으로 개발하는 방법을 알 수 있습니다.
백엔드 cs 지식 3) 시스템 소프트웨어
-
시스템 소프트웨어란 한글, 엑셀 등의 소프트웨어를 실행하기 위한 컴퓨터 작업을 돕는 프로그램으로 구성되어 있습니다. 대표적으로 Compiler, Debugger 등을 의미합니다.
우리가 개발을 공부할 때, 컴퓨터 내부에서는 우리가 입력한 명령어들을 어떻게 이해하고 처리하는지에 대해 배우게 되는데요. 마치 파파고에서 한글을 입력했을 때 영어로 번역을 해주는 것처럼 우리가 입력한 언어를 번역하여 받아들이는 과정에 대해 배우게 됩니다. 프로그래밍이 어떤 번역 과정을 거치는지 아는 개발자라면 빠르게, 그리고 적은 리소스를 사용하는 방법을 알게 되겠죠?
백엔드 cs 지식 4) 네트워크
-
네트워크는 전 세계에서 셀 수 없이 많은 컴퓨터들이 어떻게 통신을 하고 있는지에 대해서 배우게 됩니다. 역시 예를 들어보자면 https://zero-base.co.kr/category_dev_camp/school_BE 와 같은 웹 사이트 주소에서’ https’는 통신 프로토콜, 즉 통신 규칙을 나타내는 것이죠. 이렇듯 컴퓨터들끼리 데이터를 주고받을 때 어떻게 해야 효율적으로 처리할 수 있을지에 대해 배우게 됩니다. 사용자들은 절대로 데이터를 한 곳에서만, 하나의 노트북에서만 주고받지 않기 때문에 컴퓨터 간 통신 방법을 배우는 것은 매우 중요합니다.
백엔드 cs 지식 5) 소프트웨어 공학과 현업 프로세스
-
소프트웨어 공학에서는 실제 현업에서 개발할 때 가장 많이 쓰이게 되는 지식들을 배우게 됩니다. 회사에서 웹/앱 등의 소프트웨어를 개발하기 위해서는 기획, 디자인, 개발, 유지 보수 등의 단계를 거치게 됩니다. 이때 회사 내부 상황이나 프로젝트의 규모에 따라서 기획 → 디자인 → 개발 → 테스트 → 유지 보수 의 순서로 갈 것인지, 기획 → 개발 → 기획 수정 → 개발 → 테스트 순서로 가는 것이 효과적인지 등 소프트웨어 개발에 관련된 전반적인 지식을 배우게 됩니다.
지금까지 CS가 무엇인지 알아보았습니다. 그렇다면 백엔드에서 CS는 왜 중요한 걸까요?
Part 2.
백엔드 CS(Computer Science) 지식, 왜 중요할까요?
이러한 백엔드 CS지식들은 백엔드 개발자가 서비스를 개발할 때 비즈니스 로직을 생각해 내는 데 있어서 기본이 되는 지식들입니다. 따라서 많은 회사에서 신입 개발자를 채용할 때 인성 면접뿐 아니라 ‘기술 면접’ 전형을 추가하여 백엔드 CS지식을 얼마나 공부했는지 확인하는 시간을 가지고 있습니다.
지원자들은 프로젝트 하나를 제대로 하기도 바쁜데 기업에서는 왜 이렇게 백엔드 CS지식을 원하는 걸까요?
그 이유는 바로 백엔드 CS 지식이 Java, Spring, Spring Boot, Docker, AWS 등 모든 백엔드 언어 및 프레임워크, 라이브러리 등을 이용한 개발 퀄리티를 높히는 기본기이기 때문입니다.
CS 중요성에 대해 설명할 때 항상 드는 비유가 있습니다. ‘집을 짓는 목수가 아무리 도끼, 괭이, 트랙터 등의 도구/기계를 잘 다룬다고 해도, 설계도를 보고 그리는 방법을 모른다면 집을 튼튼하게 잘 지을 수 없다.’
특히 한정된 서버를 효율적으로 설계하는 일을 하는 백엔드 개발자에게 CS지식은 더 중요할 수 밖에 없습니다.
그렇다면 우리가 지금부터 익혀야 할 백엔드 CS지식, 어디서부터 어떻게 공부해야 할까요?
Part 3.
CS(Computer Science)는 어떻게 공부하는 것이 좋을까요?
지금 컴퓨터 공학 전공으로 대학교를 다니고 있는 분들은 보통 1~3학년 전공 수업으로 백엔드 CS지식들을 공부하게 됩니다. 하지만 비전공자, 또는 졸업을 한 지 오래된 분들은 어떻게 공부하는 것이 좋을까요?
자료구조/알고리즘에 비해 백엔드 CS지식은 관련 강의를 찾아 배우는 것이 어렵습니다. CS지식은 워낙 과목도 많고 양이 방대하여 효율적인 공부 방법을 찾는 것이 아주 중요합니다.
백엔드 CS지식을 효율적으로 공부하는 방법은 바로 기술 면접 질문들을 찾아 해당 질문에 대한 답을 하며 공부하는 것인데요. 기술 면접을 통과하기 위해 백엔드 CS지식을 공부하기도 하지만, 면접에 자주 나오는 질문들이란 결국 ‘현업에서 개발자들이 가장 중요하게 생각하는 부분’입니다.
따라서 백엔드 CS지식 질문들을 쭉 리스트업 하신 다음 그것과 관련된 개념을 공부하면 가장 효율적으로 효과적인 공부를 할 수 있습니다.
예를 들어 기술 면접 질문들 중 아래와 같이 두 가지 질문을 찾았다고 해봅시다.
질문에서 핵심 키워드인 “프로세스와 스레드”를 뽑아 구글링합니다. 그럼 아래와 같은 검색 결과를 확인하실 수 있는데요.
그다음으로 ① 최상단에 나오는 글 ② 가장 최근에 작성된 글 두 가지를 선택하여 읽은 후 개념을 정리합니다.
이런 식으로 질문 선정 → 키워드 선정 → 개념 공부 → 정리의 순서로 진행하시면 됩니다.
추가적으로, 백엔드 CS지식 공부를 위해 질문들을 확인할 수 있는 몇 가지 좋은 사이트들을 아래에서 추천 드리겠습니다.
마치며,
백엔드 CS지식을 보다 효과적으로 공부하기 위해
CS는 컴공 전공생들도 많이 어려워 하는 부분입니다. 백엔드 CS지식은 한 번 외운다고 공부가 끝나는 것이 아닙니다. 꾸준한 공부와 복습이 뒷받침 되어야 자신의 것으로 만들 수 있습니다.
백엔드 CS지식은 정확한 답도 중요하지만, 이 지식들을 잘 활용해서 개발을 하는 것이 더 중요합니다. 지식을 토대로 본인이 직접 개발을 하며 지식을 본인의 것으로 만든다면 훨씬 더 좋은 백엔드 개발자가 될 수 있습니다.
실전 기술 면접 기출문제까지 들어있는
백엔드 CS지식 한 번에 공부하고 싶다면?
추천 컨텐츠