코딩 인터뷰 완전 분석 게일 라크만 맥도웰 pdf 다운로드를 무료로 제공합니다 이 책의 저자는 구인 담당자가 아니라 소프트웨어 엔지니어다. 지원자로서도 면접관으로서도 코딩 면접을 겪어 본 적이 있기 때문에 지원자가 면접을 앞두고 무엇을 준비해야 하는지 잘 알고 있다
관련 교재 pdf 모음
책 소개
수백 명의 소프트웨어 엔지니어를 가르치고 인터뷰해 온 결과물이 바로 이 책이다. 문제의 힌트와 숨겨진 부분을 발견하는 방법, 큰 문제를 다루기 쉽게 작게 쪼개는 법, 문제를 풀다 막혔을 때 막힌 부분을 풀어가는 기술, 컴퓨터 과학의 핵심 개념을 배운다. 189개의 면접 문제와 그 해법을 통해 연습할 수 있다. 이 책에는 면접에서 실제로 출시되었던 문제만 실었다. 최고의 회사들이 면접에서 하는 질문을 반영하여 실제 면접과 비슷하게 준비할 수 있을 것이다. 쉬운 문제부터 까다로운 알고리즘 문제까지, 189가지 프로그래밍 면접 질문을 담았다. 문제 풀이 과정을 단계별로 차근차근 보여줘 어떤 문제든 스스로 풀 수 있게 한다. 실제 면접에서 면접관이 알려줄 법한 힌트를 모든 문제마다 제시한다. 알고리즘 문제를 푸는 다섯 가지 전략을 제시해 처음 보는 문제도 풀 수 있도록 한다. big-O 시간, 자료구조, 핵심 알고리즘과 같은 필수 주제를 광범위하게 다룬다. 구글, 페이스북 같은 최고의 회사들이 개발자를 어떻게 채용하는지 살펴본다. 행동 면접을 다루어 기술 외적인 부분을 통해 에이스로 등극할 수 있는 방법을 알아본다. 면접관과 회사를 위한 좋은 면접의 요건, 채용 과정의 세부적인 정보를 다룬다.
코딩 인터뷰 완전 분석 pdf 다운
I. 면접 과정
__면접의 방식은 왜 이래야 하는가
__어떤 문제를 출제하는가
__모든 것은 상대적이다
__자주 받는 질문
II. 장막 너머
__마이크로소프트 면접
__아마존 면접
__구글 면접
__애플 면접
__페이스북 면접
__팰런티어 면접
III. 특별한 상황에서의 면접
__경력자
__테스터 혹은 SDET
__PM
__개발 책임자와 관리자
__스타트업
__기업 인수 및 인재 영입
__면접관의 입장
IV. 면접 전에
__적절한 경험 쌓기
__탄탄한 이력서 작성하기
__준비 절차
V. 행동 문제
__대비 요령
__기술적 프로젝트에 대한 이해
__행동 질문에 대한 대처 요령
__그러니까, 당신에 대해 말해보세요
VI. big-O
__비유하기
__시간 복잡도
__공간 복잡도
__상수항은 무시하라
__지배적이지 않은 항은 무시하라
__여러 부분으로 이루어진 알고리즘: 덧셈 vs. 곱셈
__상환 시간
__log N 수행 시간
__재귀적으로 수행 시간 구하기
__예제 및 연습 문제
VII. 기술적 문제
__준비하기
__알고 있어야 할 것들
__실제 문제 살펴보기
__최적화 및 문제풀이 기술 #1: BUD를 찾으라
__최적화 및 문제풀이 기술 #2: 스스로 풀어보라 DIY(Do It Yourself)
__최적화 및 문제풀이 기술 #3: 단순화, 일반화하라
__최적화 및 문제풀이 기술 #4: 초기 사례(base case)로부터 확장하기(build)
__최적화 및 문제풀이 기술 #5: 자료구조 브레인스토밍
__가능한 최선의 수행 시간(Best Conceivable Runtime(BCR))
__오답에 대한 대처법
__알고 있던 문제가 면접에 나왔을 때
__면접용으로 ‘완벽한’ 언어
__어떤 코드가 좋아 보이나
__포기하지 말라
VIII. 합격한 뒤에
__합격 또는 거절 통지에 대처하는 요령
__입사 제안 평가
__연봉 협상
__입사 후
IX. 면접 문제
자료구조
01 배열과 문자열
__해시테이블
__ArrayList와 가변 크기 배열
__StringBuilder
__면접 문제
02 연결리스트
__연결리스트 만들기
__단방향 연결리스트에서 노드 삭제
__Runner 기법
__재귀 문제
__면접 문제
03 스택과 큐
__스택 구현하기
__큐 구현하기
__면접 문제
04 트리와 그래프
__트리의 종류
__이진 트리 순회
__이진 힙(최소힙과 최대힙)
__트라이(접두사 트리)
__그래프
__면접 문제
개념과 알고리즘
05 비트 조작
__손으로 비트 조작 해보기
__비트 조작을 할 때 알아야 할 사실들과 트릭들
__2의 보수와 음수
__산술 우측 시프트 vs. 논리 우측 시프트
__기본적인 비트 조작: 비트값 확인 및 채워넣기
__면접 문제
06 수학 및 논리 퍼즐
__소수
__확률
__입을 열라
__규칙과 패턴을 찾으라
__최악의 경우는?
__알고리즘적 접근법
__면접 문제
07 객체 지향 설계
__접근법
__디자인 패턴
__면접 문제
08 재귀와 동적 프로그래밍
__접근법
__재귀적 해법 vs. 순환적 해법
__동적계획법 & 메모이제이션
__면접 문제
09 시스템 설계 및 규모 확장성
__문제를 다루는 방법
__시스템 설계: 단계별 접근법
__규모 확장을 위한 알고리즘: 단계별 접근법
__시스템 설계의 핵심 개념
__데이터베이스 분할(샤딩)
__시스템 설계 시 고려할 점
__ ‘완벽한’ 시스템은 없다
__연습 문제
__면접 문제
10 정렬과 탐색
__널리 사용되는 정렬 알고리즘
__면접 문제
11 테스팅
__면접관이 평가하는 것
__실제 세계에서 객체 테스트하기
__소프트웨어 테스팅
__함수 테스트
__문제 해결에 관한 문제
__면접 문제
지식 기반 문제
12 C와 C++
__클래스와 상속
__생성자와 소멸자
__가상 함수
__가상 소멸자
__기본값
__연산자 오버로딩
__포인터와 참조
__템플릿
__면접 문제
13 자바
__언어 자체 질문에 대한 접근법
__오버로딩 vs. 오버라이딩
__컬렉션 프레임워크
__면접 문제
14 데이터베이스
__SQL 문법과 그 변종들
__비정규화 vs. 정규화 데이터베이스
__SQL 문
__소규모 데이터베이스 설계
__대규모 데이터베이스 설계
__면접 문제
15 스레드와 락
__자바의 스레드
__동기화와 락
__교착상태와 교착상태 방지
__면접 문제
추가 연습문제
16 중간 난이도 연습문제
17 어려운 연습문제
X. 해법
자료구조
01 배열과 문자열 해법
02 연결리스트 해법
03 스택과 큐 해법
04 트리와 그래프 해법
개념과 알고리즘
05 비트 조작 해법
06 수학 및 논리 퍼즐 해법
07 객체 지향 설계 해법
08 재귀와 동적 프로그래밍 해법
09 시스템 설계 및 규모 확장성 해법
10 정렬과 탐색 해법
11 테스팅 해법
지식 기반
12 C와 C++ 해법
13 자바 해법
14 데이터베이스 해법
15 스레드와 락 해법
추가 연습문제
16 중간 난이도 연습문제 해법
17 어려운 연습문제 해법
XI. 고급 주제
__유용한 수학
__위상정렬
__다익스트라 알고리즘
__해시테이블에서 충돌을 해결하는 방법
__선형 탐사법을 이용한 개방 주소법
__Rabin-Karp 부분 문자열 탐색 알고리즘
__AVL 트리
__레드-블랙 트리
__MapReduce
__추가 공부거리
XII. 코드 라이브러리
__HashMapList
__TreeNode(이진 탐색 트리)
__LinkedListNode(연결리스트)
__Trie & TrieNode
XIII. 힌트
01 자료구조 힌트
02 개념 및 알고리즘 힌트
03 지식 기반 문제 힌트
04 추가 연습 문제 힌트