이미 소장하고 있다면 판매해 보세요.
|
옮긴이 머리말 xii
베타리더 후기 xiv 추천의 글 xvi 서문 xviii PART I 면접 프로세스 CHAPTER 1 실리콘밸리 기업 면접 프로세스 3 1.1 일반 전화 인터뷰 3 1.2 기술 전화 인터뷰 4 __1.2.1 스몰 토크 세션 5 / 1.2.2 기술 커뮤니케이션 세션 5 / 1.2.3 질문 세션 6 1.3 현장 면접 6 __1.3.1 현장 면접 질문 세션 7 / 1.3.2 활발한 의사소통 유지하기 8 PART II 데이터 구조 CHAPTER 2 리스트 13 2.1 리스트의 기본 지식 13 __2.1.1 리스트 생성 13 / 2.1.2 리스트 원소 추가 14 / 2.1.3 리스트 원소 삭제 16 2.2 예제 1: 가장 많이 연속되는 1의 개수 구하기 18 2.3 예제 2: 이진수 덧셈 19 2.4 예제 3: 범위 합 구하기 21 __2.4.1 1차원 배열 사용 풀이 21 / 2.4.2 2차원 배열 사용 풀이 22 2.5 예제 4: 무작위 인덱스 추출 24 2.6 예제 5: 다음 순열 내림차순 배열 구하기 26 2.7 예제 6: 숫자 변환 가능 여부 검증 29 2.8 예제 7: 순환소수 표현하기 30 CHAPTER 3 스택 33 3.1 스택의 기본 지식 33 __3.1.1 스택 연산과 시간 복잡도 33 / 3.1.2 스택의 3가지 구현 방법 34 __3.1.3 스택의 응용 37 3.2 예제 1: 최소 제거 작업으로 유효한 괄호 만들기 38 3.3 예제 2: 함수 실행 시간 측정 39 CHAPTER 4 큐 42 4.1 큐의 3가지 구현 방법 42 4.2 예제 1: 원형 큐 설계 46 4.3 예제 2: 합이 K보다 큰 최단 연속 하위 배열의 길이 찾기 48 CHAPTER 5 우선순위 큐 51 5.1 우선순위 큐의 3가지 구현 방법 51 5.2 예제 1: K명의 근로자를 고용하는 데 드는 최소 비용 53 5.3 예제 2: 연속 하위 수열 분할 가능 확인 55 CHAPTER 6 딕셔너리 58 6.1 딕셔너리의 기본 지식 58 __6.1.1 딕셔너리 생성 58 / 6.1.2 딕셔너리 원소 추가 60 __6.1.3 딕셔너리 원소 접근 61 / 6.1.4 딕셔너리 원소 제거 62 6.2 예제 1: 합이 K인 연속 하위 배열의 총 개수 찾기 63 6.3 예제 2: 카드 구성의 최댓값 65 6.4 예제 3: 삽입, 삭제, 반환 함수를 가지는 데이터 구조 설계 66 6.5 예제 4: LRU 캐시 구현 68 CHAPTER 7 세트 71 7.1 세트의 기본 지식 71 7.2 세트의 기본 작업 72 __7.2.1 원소 추가 72 / 7.2.2 원소 삭제 73 / 7.2.3 합집합 73 / 7.2.4 교집합 74 CHAPTER 8 연결 리스트 75 8.1 두 리스트 합치기 75 8.2 이중 포인터 알고리즘 76 8.3 예제 1: 연결 리스트의 순환 유무 확인 문제 77 8.4 예제 2: 두 개의 연결 리스트의 교차점 찾기 78 8.5 예제 3: 무작위 연결 리스트 복제 80 8.6 예제 4: 역방향 연결 리스트 81 CHAPTER 9 이진 트리 83 9.1 트리 순회 83 __9.1.1 전위 순회 83 / 9.1.2 중위 순회 84 / 9.1.3 후위 순회 85 / 9.1.4 레벨 순회 86 9.2 트리 순회의 재귀적 알고리즘 87 __9.2.1 하향식 접근 방법 88 / 9.2.2 상향식 접근 방법 89 9.3 예제 1: 최소 공통 조상 문제 90 9.4 예제 2: 이진 트리의 직렬화 및 역직렬화 91 9.5 예제 3: 이진 트리의 최대 경로합 구하기 93 9.6 예제 4: 이진 트리를 이중 연결 리스트로 변환하기 95 CHAPTER 10 기타 트리 구조 96 10.1 트라이 96 __10.1.1 트라이의 데이터 구조 97 / 10.1.2 트라이 단어 삽입 98 __10.1.3 트라이 단어 검색 99 10.2 세그먼트 트리 101 10.3 이진 인덱스 트리(펜윅 트리) 106 __10.3.1 이진 인덱스 트리의 표현 107 / 10.3.2 getSum() 함수 107 __10.3.3 update() 함수 108 / 10.3.4 이진 인덱스 트리의 작동 방식 109 10.4 예제 1: 부분 배열의 합의 개수 111 __10.4.1 세그먼트 트리 알고리즘 사용 풀이 112 / 10.4.2 이진 인덱스 트리 사용 풀이 115 __10.4.3 이진 탐색 사용 풀이 118 10.5 예제 2: 자신보다 작은 숫자의 개수 계산 119 __10.5.1 이진 인덱스 트리 사용 풀이 120 / 10.5.2 이진 탐색 사용 풀이 121 __10.5.3 세그먼트 트리 사용 풀이 122 CHAPTER 11 그래프 124 11.1 그래프 표현 125 __11.1.1 인접 행렬 125 / 11.1.2 인접 리스트 125 11.2 예제 1: 그래프 깊은 복사하기 127 11.3 예제 2: 그래프 순환 검증 129 __11.3.1 깊이 우선 탐색 사용 풀이 129 / 11.3.2 너비 우선 탐색 사용 풀이 131 __11.3.3 유니언 파인드 사용 풀이 132 PART III 알고리즘 135 CHAPTER 12 이진 탐색 137 12.1 예제 1: 제곱근 찾기 137 12.2 예제 2: 피벗(회전)된 값 인덱스 검색 138 12.3 예제 3: 회의실 예약 문제 139 __12.3.1 심화 문제 1: 최적화 방법 140 __12.3.2 심화 문제 2: 여러 회의실을 예약하는 방법 141 CHAPTER 13 이중 포인터 알고리즘 142 13.1 예제 1: 희소행렬의 내적 142 13.2 예제 2: 부분 문자열 최소 윈도 문제 143 13.3 예제 3: 닫힌 구간의 교차 구간 찾기 145 13.4 예제 4: 가장 긴 연속 1의 개수 찾기 148 13.5 예제 5: 목표 문자열 찾기-슬라이딩 윈도 150 CHAPTER 14 동적 프로그래밍 152 14.1 동적 프로그래밍의 기본 지식 152 14.2 예제 1: 동전 거슬러주기 153 14.3 예제 2: 주식 매매 최대 이익 찾기 154 14.4 예제 3: 전체 디코딩 방법의 수 계산 155 CHAPTER 15 깊이 우선 탐색 157 15.1 깊이 우선 탐색의 응용 157 15.2 예제 1: 태평양과 대서양 횡단 문제 158 15.3 예제 2: 승자 예측 159 15.4 예제 3: 표현식 연산자 추가하기 161 CHAPTER 16 역추적 163 16.1 예제 1: 스도쿠 풀기 164 16.2 예제 2: 청소 로봇 166 CHAPTER 17 너비 우선 탐색 169 17.1 너비 우선 탐색의 응용 170 17.2 예제 1: 벽과 문 171 17.3 예제 2: 커리큘럼 174 17.4 예제 3: 버스 노선 175 17.5 예제 4: 이분 그래프 판단 177 17.6 예제 5: 단어 사다리 178 CHAPTER 18 유니언 파인드 181 18.1 유니언 파인드의 기본 지식 181 18.2 예제: 친구 원 구하기 184 __18.2.1 너비 우선 탐색 사용 풀이 184 / 18.2.2 깊이 우선 탐색 사용 풀이 185 __18.2.3 유니언 파인드 사용 풀이 185 CHAPTER 19 데이터 구조와 알고리즘 인터뷰 실전 187 19.1 예제 1: 파일 시스템 188 __19.1.1 데이터 구조 설계 188 / 19.1.2 면접 주요 포인트 191 __19.1.3 코드 작성 191 19.2 예제 2: 가장 긴 연결 단어 목록 길이 구하기 192 __19.2.1 단어 사전 데이터 구조 설계 193 / 19.2.2 저장소/캐싱 사용 194 __19.2.3 면접 주요 포인트 196 19.3 예제 3: 원 그룹 196 __19.3.1 원 그룹의 수 198 / 19.3.2 가장 큰 k개의 원의 그룹 199 PART IV 시스템 설계 201 CHAPTER 20 시스템 설계 이론 203 20.1 설계 단계 203 __20.1.1 사용 시나리오, 제약 및 가정 조건 확인 203 __20.1.2 상위 아키텍처 구성 204 / 20.1.3 핵심 컴포넌트 설계 205 __20.1.4 확장 설계 207 20.2 도메인 네임 시스템 209 20.3 로드 밸런서 211 20.4 분산 캐시 시스템 212 20.5 안정 해시 215 CHAPTER 21 시스템 설계 실습 218 21.1 분산 캐시 시스템 설계 218 __21.1.1 캐시 무효화 218 / 21.1.2 캐시 제거 정책 219 __21.1.3 분산 키-값 캐시 설계 시스템 220 21.2 웹 크롤러 시스템 설계 221 __21.2.1 아키텍처 설계 222 / 21.2.2 크롤러 서비스 구현 222 __21.2.3 중복 링크 처리 225 / 21.2.4 크롤링 결과 업데이트 225 __21.2.5 확장성 설계 226 21.3 TinyURL의 암호화와 복호화 226 __21.3.1 시스템 요구 사항 및 목표 226 / 21.3.2 리소스 추정 및 제약 227 __21.3.3 시스템 API 228 / 21.3.4 핵심 알고리즘 설계 228 __21.3.5 데이터베이스 설계 229 / 21.3.6 데이터 파티셔닝 230 __21.3.7 캐싱 231 / 21.3.8 로드 밸런서 232 21.4 검색어 자동 완성 기능 설계 232 __21.4.1 기본 시스템 설계 및 알고리즘 233 / 21.4.2 주요 데이터 구조 234 __21.4.3 최적화 설계 235 21.5 뉴스피드 업데이트 기능 설계 240 21.6 X 애플리케이션 설계 243 21.7 우버/리프트 앱 설계 249 CHAPTER 22 멀티스레드 프로그래밍 253 22.1 멀티스레딩 면접 질문 253 22.2 예제 1: 물 분자의 형성 255 22.3 예제 2: 0, 짝수, 홀수 출력 257 CHAPTER 23 머신러닝 시스템 설계 259 23.1 머신러닝의 기본 지식 259 __23.1.1 머신러닝이란 무엇인가 259 / 23.1.2 머신러닝을 사용하는 이유 260 __23.1.3 지도 학습과 비지도 학습 261 / 23.1.4 분류 모델과 회귀 모델 263 __23.1.5 문제 변환 264 / 23.1.6 데이터 문제 264 __23.1.7 머신러닝 작업 흐름 265 / 23.1.8 피처 엔지니어링 266 __23.1.9 과소적합과 과적합 267 / 23.1.10 편향과 분산 269 23.2 머신러닝에 대한 고급 지식 272 __23.2.1 불균형 이진 분류 데이터 처리 272 / 23.2.2 가우스 혼합 모델과 K-평균 비교 274 __23.2.3 그레이디언트 부스팅 274 / 23.2.4 의사 결정 트리에 제약 조건 부여 276 __23.2.5 가중치 업데이트 277 / 23.2.6 확률적 그레이디언트 부스팅 277 __23.2.7 정규화 278 23.3 머신러닝 인터뷰 278 __23.3.1 머신러닝 면접 주요 포인트 278 / 23.3.2 머신러닝 인터뷰 대응 전략 281 23.4 예제 1: 검색 순위 시스템 282 __23.4.1 문제 해석 282 / 23.4.2 지표 분석 283 __23.4.3 아키텍처 284 / 23.4.4 결과 선택 287 __23.4.5 훈련 데이터 생성 293 / 23.4.6 순위 산정 295 __23.4.7 결과 필터링 298 23.5 예제 2: 넷플릭스 추천 시스템 300 __23.5.1 문제 해석 300 / 23.5.2 지표 분석 302 / 23.5.3 아키텍처 305 __23.5.4 피처 엔지니어링 306 / 23.5.5 추천 영화 리스트 생성 309 __23.5.6 훈련 데이터 생성 312 / 23.5.7 순위 산정 313 찾아보기 317 |
任建峰
全書學
신준기의 다른 상품
|
간단한 파일 시스템(file system) 메타데이터를 설계한다고 가정한다. 이 메타데이터는 ‘파일’과 ‘디렉터리’라는 두 가지 객체를 가진다. 파일과 디렉터리 둘 다 ‘엔티티 ID’와 ‘이름’ 속성을 가진다. 파일은 파일의 크기를 바이트 단위로 나타내는 ‘크기’ 속성을 추가적으로 가진다. 예를 들어 다음과 같다. (…) 면접관은 위의 개념을 표현하기 위한 명확한 데이터 구조를 제공하라고 지원자에게 요청한다. 위의 문제에 대해 지원자가 다음 데이터 구조를 신속하게 제공하면 가산점을 얻을 수 있다.
--- p.188 이를 위해서는 관련성 순으로 쿼리 결과를 제공하는 머신러닝 시스템이 구축되어야 한다. 따라서 검색 순위 문제에 초점을 맞춰야 한다. / 범용 검색엔진을 구축해야 한다는 것을 알게 되면 다음 단계는 시스템 규모를 결정하는 것이다. 여기서 면접관에게 두 가지 중요한 질문이 필요하다. 이 검색엔진을 통해 몇 개의 웹사이트 또는 페이지를 검색하고 활성화할 것인가? 초당 몇 개의 요청을 처리할 것으로 예상하는가? --- p.282 협업 필터링은 사용자의 과거 상호작용만을 기반으로 후보를 제안할 수 있다. 콘텐츠 기반 필터링과 달리 사용자 및 동영상 파일을 생성하는 데 도메인 지식이 필요하지 않다. 또한 일반적으로 콘텐츠를 기반으로 필터링하기 어려운 데이터를 캡처할 수도 있다. 그러나 협업 필터링은 과거 상호작용이 적기 때문에 시스템에서 새로운 사용자와 유사한 사용자를 찾는 것이 어려운 콜드 스타트(cold start) 문제를 안고 있다. 또한 새로운 영화에 대해서는 아직 피드백을 제공한 사용자가 없기 때문에 즉시 추천이 불가능하다. --- p.312 아메리카 대륙을 나타내는 정수로 구성된 m × n 행렬이 주어지면 태평양인 pacific은 행렬의 왼쪽 및 위쪽 정점[0, 0]에 위치한다. 대서양 atlantic은 오른쪽 및 아래쪽 정점[m, n)에 위치한다. 만약 미국 대륙에 비가 내린다면 비는 좌표에서 높이가 같거나 낮은 위, 아래, 왼쪽 또는 오른쪽 좌표로만 흐를 수 있다. 아메리카 대륙의 좌표 중 비가 내릴 때 태평양과 대서양 쪽 모두로 흐를 수있는 좌표를 반환하라. --- p.158 요약하자면, 세트는 중복되지 않는 원소의 집합을 저장하는 데 사용되는 컴퓨터 과학의 기본 데이터 구조이다. 다양한 프로그램에서 응용하기 위해, 특히 고유한 데이터를 관리해야 하는 경우 세트의 기본 사항을 이해하는 것이 중요하다. / set.add() 함수를 통해 세트에 원소를 추가하고 데이터를 생성할 수 있다. 원소 반환과 마찬가지로 원소 추가의 시간 복잡도는 평균 O(1)이지만 최악의 경우(해시 충돌, 해시 테이블 리사이징 등) O(n)이 될 수 있다. 샘플 코드는 다음과 같다. --- p.72 |
|
구글 면접관과 OPPO 수석이 집필한 눈 높은 파이썬 코딩 인터뷰 가이드북
실리콘밸리 수준의 기술 인터뷰에서 성공하는 데 필요한 파이썬 기술을 완벽하게 설명하는 책. 스택, 큐, 연결 리스트 등의 데이터 구조 기초부터 시작해 동적 프로그래밍, BFS/DFS, 유니언 파인드 등의 알고리즘을 살펴보고, 이들을 실제 면접 문제에 어떻게 효율적으로 적용할 수 있는지 면접관의 관점에서 단계별로 분석한다. 나아가 TinyURL, X, 넷플릭스 추천 시스템 등 실존 서비스를 구축해보는 연습을 통해 시스템 설계의 이론과 실습도 체계적으로 학습할 수 있게 구성했다. 주요 내용 ● 실리콘밸리 기업의 면접 과정과 면접 팁 ● 스택, 큐, 집합, 연결 리스트, 트리, 그래프 등 데이터 구조 기초와 응용 ● 이진 탐색, 이중 포인터, 동적 프로그래밍, DFS 등 실제 알고리즘 면접 문제 실습 ● 멀티스레드 프로그래밍, 검색 랭킹, 영화 추천 등 시스템 설계 사례 |
|
이 책은 파이썬 엔지니어가 면접을 준비하기 위한 가이드북일 뿐만 아니라 업무 문제를 해결하기 위한 도구이기도 합니다. 생생하고 친근한 표현, 풍부한 실제 사례와 인터뷰 질문을 통해 독자들에게 이론과 실무를 겸비한 독서 경험을 제공합니다. 면접을 준비하거나 프로그래밍 기술을 향상시키고 싶거나 혹은 시스템 설계에서 파이썬을 더 깊이 이해하고 싶다면, 이 책이 이상적인 선택이 될 것입니다. - 천잉 (구글 픽셀 카메라 부서 매니저)
|
|
데이터 구조, 알고리즘, 시스템 설계에 대한 저자의 깊은 지식과 명쾌한 설명이 결합된 이 책은 독자들이 핵심 개념을 배우고 적용할 수 있게 도와주는 이상적인 가이드북입니다. 저자들은 풍부한 면접 경험을 바탕으로 실용적인 프로그래밍 예제와 설명을 제공하므로 독자들이 파이썬 엔지니어 면접에서 좋은 성과를 내는 데 도움이 될 것입니다. - 한쥔웨이 (시베이공업대학 자동화 스쿨 학장)
|
|
인터뷰 기술, 데이터 구조, 알고리즘, 시스템 설계와 같은 핵심 주제를 심층적이고 포괄적으로 다루는 이 책은 파이썬 엔지니어를 위한 귀중한 학습 및 인터뷰 리소스를 제공합니다. 이 책은 복잡한 개념을 간결하면서도 통찰력 있는 방식으로 설명하여 독자가 파이썬 지식을 더 잘 이해하고 적용할 수 있도록 도와줍니다. - 왕양(王洋) (화웨이 기린 설루션 부서 이사)
|
|
이 책은 데이터 구조와 알고리즘에 대한 핵심 지식을 다룰 뿐만 아니라 시스템 설계의 중요성을 강조합니다. 체계적인 이론과 풍부한 사례 연구를 통해 실제 문제를 해결하는 데 파이썬이 발휘하는 힘을 보여줌으로써, 파이썬 기술과 인터뷰에 대한 매우 심도 있고 폭넓은 가이드가 되어줍니다. IT 회사 면접을 보는 독자와 파이썬 기술 분야에 깊이 관여하는 사람들에게 꼭 필요한 참고서입니다. - 류톈밍 (조지아 대학교 컴퓨터과학과 교수)
|