책소개
기술 면접과 실무에 필요한 CS 지식, 한 권으로 끝내자!프로그램의 실행 원리를 이해하지 못한 채 ‘일단 작동만 하도록 만드는 것’과 정확하게 이해하고 ‘제대로 작동하도록 만드는 것’, 둘 중 어느 것이 더 쉬울까? 개발을 해 본 사람이라면 이미 답을 알고 있을 것이다. 제대로 작동하는 프로그램을 개발하려면 문제를 정의하고 해결할 수 있어야 한다. 문제의 해결은 곧 컴퓨터 과학에서 시작되며, 이것이 바로 수많은 기업에서 입사 지원자의 컴퓨터 과학적 지식을 검증하는 이유이다.이 책은 취업과 이직, 기술 면접과 밀접한 컴퓨터 과학 전반(컴퓨터 구조, 운영체제, 자료구조, 네트워크, 데이터베이스)을 다루며, 실제 프로그래밍에 적용되는 구체적 사례와 친절한 설명을 통해 컴퓨터 과학이라는 방대한 주제를 한눈에 파악할 수 있도록 돕는다. 이 책을 통해 컴퓨터 과학에 대한 이해를 넓히는 것은 물론, 보다 나은 실무 능력과 역량을 갖춘 개발자로 한 단계 성장할 수 있을 것이다.
목차
CHAPTER 01 기술 면접과 실무를 위한 컴퓨터 과학1 원리를 모르는 개발자는 뛰어난 개발자가 아니다__일단 작동만 하는 코드 vs 제대로 작동하는 코드__프로그램의 원리를 이해하기 위한 컴퓨터 과학2 컴퓨터 과학 지도 그리기: 기술 면접에 대비하고 싶다면__컴퓨터 과학은 키워드 암기 과목이 아니다__책에서 다루는 내용: 대다수 직군에서 강조되는 지식__책에서 다루지 않는 내용: 직군에 따라 중요성이 달라지는 지식[추가 학습 NOTE] CS Note: 개발자를 위한 컴퓨터 과학 용어집CHAPTER 02 컴퓨터 구조1 컴퓨터 구조의 큰 그림__컴퓨터가 이해하는 정보__컴퓨터의 핵심 부품__컴퓨터 구조 지도 그리기2 컴퓨터가 이해하는 정보__데이터 - 0과 1로 숫자 표현하기__데이터 - 0과 1로 문자 표현하기__명령어3 CPU__레지스터__인터럽트__CPU 성능 향상을 위한 설계__파이프라이닝을 통한 명령어 병렬 처리4 메모리__RAM__메모리에 바이트를 밀어 넣는 순서 - 빅 엔디안과 리틀 엔디안__캐시 메모리5 보조기억장치와 입출력장치__RAID__입출력 기법[추가 학습 NOTE] GPU의 용도와 처리 방식[기술 면접 TIP] 취업 멘토가 알려 주는 기술 면접 질문 15CHAPTER 03 운영체제1 운영체제의 큰 그림__운영체제의 역할__운영체제 지도 그리기__시스템 콜과 이중 모드2 프로세스와 스레드__멀티프로세스와 멀티스레드__프로세스 간 통신3 동기화와 교착 상태__동기화 기법__교착 상태4 CPU 스케줄링__CPU 스케줄링 알고리즘__리눅스 CPU 스케줄링5 가상 메모리__물리 주소와 논리 주소__스와핑과 연속 메모리 할당__페이징을 통한 가상 메모리 관리__페이지 교체 알고리즘6 파일 시스템__파일과 디렉터리__파일 시스템[추가 학습 NOTE] 전원 버튼을 누르고 부팅이 되기까지[추가 학습 NOTE] 가상 머신과 컨테이너[기술 면접 TIP] 취업 멘토가 알려 주는 기술 면접 질문 25CHAPTER 04 자료구조1 자료구조의 큰 그림__자료구조와 알고리즘__시간 복잡도와 공간 복잡도__자료구조 지도 그리기2 배열과 연결 리스트__배열__연결 리스트3 스택과 큐__스택__큐4 해시 테이블__해시 함수__해시 충돌5 트리__트리의 순회__트리의 종류6 그래프__그래프의 종류와 구현__깊이 우선 탐색과 너비 우선 탐색__최단 경로 알고리즘[기술 면접 TIP] 취업 멘토가 알려 주는 기술 면접 질문 15CHAPTER 05 네트워크1 네트워크의 큰 그림__네트워크의 기본 구조__두 호스트가 패킷을 주고받는 과정__네트워크 지도 그리기2 물리 계층과 데이터 링크 계층__이더넷__유무선 통신 매체__네트워크 인터페이스: NIC__허브와 스위치3 네트워크 계층 - IP__IP의 목적과 특징__IP 주소의 구조__공인 IP 주소와 사설 IP 주소__IP 주소의 할당__IP 전송 특징의 보완: ICMP__IP 주소와 MAC 주소의 대응: ARP4 전송 계층 - TCP와 UDP__TCP와 UDP의 목적과 특징__TCP의 연결부터 종료까지__TCP의 상태 관리5 응용 계층 - HTTP의 기초__DNS와 URI/URL__HTTP의 특징과 메시지 구조__HTTP 메서드와 상태 코드__HTTP 주요 헤더6 응용 계층 - HTTP의 응용__쿠키__캐시__콘텐츠 협상 __보안: SSL/TLS와 HTTPS7 프록시와 안정적인 트래픽__오리진 서버와 중간 서버: 포워드 프록시와 리버스 프록시__고가용성: 로드 밸런싱과 스케일링__Nginx로 알아보는 로드 밸런싱[추가 학습 NOTE] 웹 서버와 웹 애플리케이션 서버[추가 학습 NOTE] 소켓 프로그래밍[기술 면접 TIP] 취업 멘토가 알려 주는 기술 면접 질문 25CHAPTER 06 데이터베이스1 데이터베이스의 큰 그림 __데이터베이스와 DBMS__파일 대신 데이터베이스를 이용하는 이유__데이터베이스의 저장 단위와 트랜잭션__데이터베이스 지도 그리기2 RDBMS의 기본__테이블의 구성: 필드와 레코드 __테이블의 관계__무결성 제약 조건 3 SQL__데이터 정의 언어(DDL)__데이터 조작 언어(DML)__트랜잭션 제어 언어(TCL)4 효율적 쿼리 __서브 쿼리와 조인__뷰 __인덱스5 데이터베이스 설계 __ER 다이어그램 __정규화 6 NoSQL __RDBMS vs NoSQL: NoSQL의 특징__다양한 NoSQL: MongoDB와 Redis 맛보기 [추가 학습 NOTE] 데이터베이스 분할과 샤딩 [기술 면접 TIP] 취업 멘토가 알려 주는 기술 면접 질문 20 찾아보기