면접을 위한 CS 전공지식 노트
디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조, 개발자 면접과 포트폴리오까지!
CS 전공지식 습득과 면접 대비, 이 책 한 권이면 충분하다!
개발자 면접에서 큰 비중을 차지하는 CS(Computer Science) 전공지식! 디자인 패턴부터 자료 구조까지 알아야 할 게 너무 많은데, 어떻게 준비해야 할까? 이 책은 디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조 등 면접에 필요한 CS 전공지식을 모두 담고 있다. 200여 개의 그림과 코드로 이론을 자세히 설명하고, 실제 라이브러리에서 사용된 디자인 패턴 등으로 실무 활용법을 함께 다뤄 이론과 실무를 놓치지 않고 학습할 수 있도록 구성했다. 또한, 중요한 내용은 깊게, 덜 중요한 내용은 핵심만 설명하며, 책 곳곳에 70여 개의 용어 풀이도 담고 있다. 마지막으로 구글, 네이버, 카카오 등 탑티어급의 회사에 합격한 저자의 경험을 기반으로 한 포트폴리오 작성법과 챕터별 예상 질문, 면접 준비 노하우도 알려준다. 개발자 면접을 준비하거나 더 나은 개발자가 되기 위해 CS 전공지식을 배우고 싶다면 이 책으로 시작하자.
«면접을 위한 CS 전공지식 노트»는 1~2장을 공개합니다.
목차
- CHAPTER 1 디자인 패턴과 프로그래밍 패러다임
- SECTION 1.1 디자인 패턴
- 1.1.1 싱글톤 패턴
- 1.1.2 팩토리 패턴
- 1.1.3 전략 패턴
- 1.1.4 옵저버 패턴
- 1.1.5 프록시 패턴과 프록시 서버
- 1.1.6 이터레이터 패턴
- 1.1.7 노출모듈 패턴
- 1.1.8 MVC 패턴
- 1.1.9 MVP 패턴
- 1.1.10 MVVM 패턴
- SECTION 1.2 프로그래밍 패러다임
- 1.2.1 선언형과 함수형 프로그래밍
- 1.2.2 객체지향 프로그래밍
- 1.2.3 절차형 프로그래밍
- 1.2.4 패러다임의 혼합
- 예상질문
- CHAPTER 2 네트워크
- SECTION 2.1 네트워크의 기초
- 2.1.1 처리량과 지연 시간
- 2.1.2 네트워크 토폴로지와 병목 현상
- 2.1.3 네트워크 분류
- 2.1.4 네트워크 성능 분석 명령어
- 2.1.5 네트워크 프로토콜 표준화
- SECTION 2.2 TCP/IP 4계층 모델
- 2.2.1 계층 구조
- 2.2.2 PDU
- SECTION 2.3 네트워크 기기
- 2.3.1 네트워크 기기의 처리 범위
- 2.3.2 애플리케이션 계층을 처리하는 기기
- 2.3.3 인터넷 계층을 처리하는 기기
- 2.3.4 데이터 링크 계층을 처리하는 기기
- 2.3.5 물리 계층을 처리하는 기기
- SECTION 2.4 IP 주소
- 2.4.1 ARP
- 2.4.2 홉바이홉 통신
- 2.4.3 IP 주소 체계
- 2.4.4 IP 주소를 이용한 위치 정보
- SECTION 2.5 HTTP
- 2.5.1 HTTP/1.0
- 2.5.2 HTTP/1.1
- 2.5.3 HTTP/2
- 2.5.4 HTTPS
- 2.5.5 HTTP/3
- 예상질문
- CHAPTER 3 운영체제
- SECTION 3.1 운영체제와 컴퓨터
- 3.1.1 운영체제의 역할과 구조
- 3.1.2 컴퓨터의 요소
- SECTION 3.2 메모리
- 3.2.1 메모리 계층
- 3.2.2 메모리 관리
- SECTION 3.3 프로세스와 스레드
- 3.3.1 프로세스와 컴파일 과정
- 3.3.2 프로세스의 상태
- 3.3.3 프로세스의 메모리 구조
- 3.3.4 PCB
- 3.3.5 멀티프로세싱
- 3.3.6 스레드와 멀티스레딩
- 3.3.7 공유 자원과 임계 영역
- 3.3.8 교착 상태
- SECTION 3.4 CPU 스케줄링 알고리즘
- 3.4.1 비선점형 방식
- 3.4.2 선점형 방식
- 예상질문
- CHAPTER 4 데이터베이스
- SECTION 4.1 데이터베이스의 기본
- 4.1.1 엔터티
- 4.1.2 릴레이션
- 4.1.3 속성
- 4.1.4 도메인
- 4.1.5 필드와 레코드
- 4.1.6 관계
- 4.1.7 키
- SECTION 4.2 ERD와 정규화 과정
- 4.2.1 ERD의 중요성
- 4.2.2 예제로 배우는 ERD
- 4.2.3 정규화 과정
- SECTION 4.3 트랜잭션과 무결성
- 4.3.1 트랜잭션
- 4.3.2 무결성
- SECTION 4.4 데이터베이스의 종류
- 4.4.1 관계형 데이터베이스
- 4.4.2 NoSQL 데이터베이스
- SECTION 4.5 인덱스
- 4.5.1 인덱스의 필요성
- 4.5.2 B-트리
- 4.5.3 인덱스 만드는 방법
- 4.5.4 인덱스 최적화 기법
- SECTION 4.6 조인의 종류
- 4.6.1 내부 조인
- 4.6.2 왼쪽 조인
- 4.6.3 오른쪽 조인
- 4.6.4 합집합 조인
- SECTION 4.7 조인의 원리
- 4.7.1 중첩 루프 조인
- 4.7.2 정렬 병합 조인
- 4.7.3 해시 조인
- 예상질문
- CHAPTER 5 자료 구조
- SECTION 5.1 복잡도
- 5.1.1 시간 복잡도
- 5.1.2 공간 복잡도
- 5.1.3 자료 구조에서의 시간 복잡도
- SECTION 5.2 선형 자료 구조
- 5.2.1 연결 리스트
- 5.2.2 배열
- 5.2.3 벡터
- 5.2.4 스택
- 5.2.5 큐
- SECTION 5.3 비선형 자료 구조
- 5.3.1 그래프
- 5.3.2 트리
- 5.3.3 힙
- 5.3.4 우선순위 큐
- 5.3.5 맵
- 5.3.6 셋
- 5.3.7 해시 테이블
- 예상질문
- CHAPTER 6 포트폴리오와 면접
- SECTION 6.1 포트폴리오
- 6.1.1 첫 문장이 중요하다
- 6.1.2 숫자로 말하라
- 6.1.3 기술의 숙련도를 나눠서 표기하라
- 6.1.4 리드미를 잘 작성하라
- 6.1.5 오픈 소스 컨트리뷰터가 되자
- 6.1.6 블로깅을 하자
- SECTION 6.2 면접
- 6.2.3 모르는 것은 모르는 것
- 6.2.4 압박을 버텨라
- 6.2.5 공식 사이트를 봐라
- 6.2.6 또렷한 발음으로
- 6.2.7 장점, 단점, 차이는 필수다
- 6.2.8 업무를 예측하라
- 6.2.9 체크리스트를 만들어 준비하라
- 6.2.10 인성 면접
- 6.2.1 꼬리에 꼬리를 무는 질문
- 6.2.2 대답을 바꾸지 말자