标题：Android系统级深入开发—移植与调试
基本信息
作者： 韩超    梁泉    [作译者介绍] 
出版社：电子工业出版社 
ISBN：9787121126093
上架时间：2011-2-18
出版日期：2011 年2月
开本：16开
页码：372
版次：1-1
编辑推荐
从Android开源工程到产品的开发宝典
全面介绍Android中与硬件相关的子系统
按照驱动程序和硬件抽象层两方面把握移植要点
高效粘合Linux系统经验和移动设备应用场景
以三种硬件平台为参考，参考开发环境宜于获得
内容简介
本书是一本全面介绍android系统级开发的作品，全书以移植和调试为重点。android具有一个庞大的软件系统，任何开发者都难以掌握系统的每一个细节。因此，如何高效地理解和开发系统，就成了android系统级别工程师面对的主要问题。本书作者以实际的开发经验为基础，以软件工程思想为指导，完成了本书。本书介绍了从android开源工程到一个基于实际硬件产品中的主要工作，一方面让读者清晰把握各个子系统的架构，另一方面让读者把握移植这个开发核心环节的要点。
本书适合linux开发人员、移动设备开发人员、android系统框架层和底层开发人员、有意图深入学习android的人员、以及从事手机研发的读者阅读 
作译者
本书提供作译者介绍
韩超，中国大陆资深Linux和移动开发工程师，长期从事一线开发工作，兼具开发实践经验和完备的教育思维模式。韩超是中国大陆较早开发Android系统开发的人员，曾从事系统框架、芯片移植适配和移动产品等开发领域；也曾经引领各种技术人员进入Android领域，并组织参与技术交流。
目录
第1章 android系统移植开发概述 1 
1.1 android系统架构和生态系统 1 
1.1.1 android软件系统 1 
1.1.2 android的生态系统 3 
1.2 android移植的概念和方法 4 
1.3 android移植的主要工作 5 
第2章 android源代码和开发环境 8 
2.1 开发环境和工具 8 
2.2 android的代码库 9 
2.3 android系统代码和编译 9 
2.3.1 获取android源代码 9 
2.3.2 android源代码结构 12 
2.3.3 编译android系统源代码 13 
2.3.4 编译android结果 13 
2.4 android kernel代码和编译 14 
2.4.1 goldfish内核源代码 15 
2.4.2 msm内核源代码 15 
2.4.3 omap内核源代码 16 
2.5 仿真器的运行环境 16 
2.5.1 仿真器的运行 16 
.2.5.2 使用附加工具 18 
第3章 android系统移植的结构和方法 20 
3.1 android的linux操作系统 20 
3.1.1 标准的linux操作系统 20 
3.1.2 android对linux 内核的使用 22 
3.1.3 linux内核空间到用户空间的接口 24 
3.1.4 平台数据和平台驱动 34 
3.2 android的硬件抽象层 35 
3.2.1 硬件抽象层的地位和功能 35 
3.2.2 硬件抽象层接口方式 36 
3.3 android中各个部件的移植方式 41 
3.4 辅助性工作和基本调试方法 41 
3.4.1 移植的辅助性工作 42 
3.4.2 调试的方法 46 
第4章 android的goldfish内核和驱动 56 
4.1 goldfish内核概述 56 
4.2 goldfish体系结构移植 58 
4.3 goldfish的android专用驱动和组件 59 
4.3.1 wakelock和earlysuspend 59 
4.3.2 staging中的驱动程序 61 
4.3.3 ashmem驱动程序 66 
4.3.4 alarm驱动程序 67 
4.3.5 pmem驱动程序 67 
4.3.6 adb garget驱动程序 68 
4.3.7 android paranoid网络 68 
4.4 goldfish的相关设备驱动 70 
4.4.1 framebuffer的驱动程序 70 
4.4.2 键盘的驱动程序 70 
4.4.3 实时时钟的驱动程序 71 
4.4.4 tty终端的驱动程序 71 
4.4.5 nandflash的驱动程序 72 
4.4.6 mmc的驱动程序 72 
4.4.7 电池的驱动程序 73 
4.4.8 eac音频的驱动程序 73 
第5章 android的msm内核和驱动 74 
5.1 msm处理器概述 74 
5.1.1 msm概述 74 
5.1.2 msm适用于android的linux内核的结构 77 
5.2 msm体系结构的移植 79 
5.3 msm的android专用驱动和组件 80 
5.4 msm的mahimahip平台的主要设备驱动 81 
5.4.1 显示的驱动程序 81 
5.4.2 触摸屏的驱动程序 82 
5.4.3 按键和轨迹球的驱动程序 82 
5.4.4 实时时钟的驱动程序 83 
5.4.5 摄像头的驱动程序 83 
5.4.6 无线局域网的驱动程序 83 
5.4.7 蓝牙的驱动程序 84 
5.4.8 dsp相关的驱动程序 84 
5.4.9 高通特有的组件相关内容 85 
第6章 android的omap内核和驱动 87 
6.1 omap内核概述 87 
6.1.1 omap概述 87 
6.1.2 omap适用于android的linux内核的结构 91 
6.2 omap体系结构的移植 92 
6.2.1 omap平台部分的移植 92 
6.2.2 omap处理器部分的移植 94 
6.3 omap的android专用驱动和组件 96 
6.4 omap的主要设备驱动 97 
6.4.1 显示的驱动程序 97 
6.4.2 摄像头和视频输出的驱动程序 98 
6.4.3 i2c总线驱动程序 98 
6.4.4 键盘的驱动程序 99 
6.4.5 触摸屏的驱动程序 99 
6.4.6 实时时钟的驱动程序 99 
6.4.7 音频的驱动程序 99 
6.4.8 蓝牙的驱动程序 100 
6.4.9 以太网的驱动程序 100 
6.4.10 dsp的驱动程序 100 
第7章 显示系统 101 
7.1 显示系统结构和移植内容 101 
7.1.1 donut及其之前显示系统的结构 102 
7.1.2 eclair及其之后显示系统的结构 102 
7.1.3 移植的内容 103 
7.2 移植和调试的要点 104 
7.2.1 framebuffer驱动程序 104 
7.2.2 donut及其之前的硬件抽象层 106 
7.2.3 eclair及其之后的硬件抽象层 107 
7.3 显示部分模拟器的实现方式 112 
7.3.1 goldfish的framebuffer驱动程序 112 
7.3.2 默认的gralloc模块的实现 113 
7.4 msm中的实现 119 
7.4.1 msm的framebuffer驱动程序 119 
7.4.2 msm的gralloc模块的实现 120 
7.5 omap中的实现 126 
7.5.1 omap的framebuffer驱动程序 126 
7.5.2 omap的用户空间的实现 128 
第8章 用户输入系统 129 
8.1 用户输入系统结构和移植内容 129 
8.1.1 用户输入系统的结构 129 
8.1.2 移植的内容 131 
8.2 移植的要点 131 
8.2.1 input驱动程序 131 
8.2.2 用户空间的处理 134 
8.2.3 移植需要注意的情况 139 
8.3 模拟器中的实现 141 
8.3.1 驱动程序 141 
8.3.2 用户空间的配置文件 141 
8.4 msm中的实现 142 
8.4.1 触摸屏，轨迹球和按键驱动程序 142 
8.4.2 用户空间的配置文件 144 
8.5 omap中的实现 144 
8.5.1 触摸屏和键盘的驱动程序 144 
8.5.2 用户空间的配置文件 146 
8.6 虚拟按键的实现 146 
第9章 传感器系统 148 
9.1 传感器系统结构和移植内容 148 
9.1.1 传感器系统的结构 148 
9.1.2 移植的内容 150 
9.2 移植和调试的要点 150 
9.2.1 驱动程序 150 
9.2.2 硬件抽象层的内容 151 
9.2.3 上层的情况和注意事项 153 
9.3 模拟器中的实现 157 
第10章 音频系统 162 
10.1 音频系统结构和移植内容 162 
10.1.1 音频系统的结构 162 
10.1.2 移植的内容 164 
10.2 移植和调试的要点 164 
10.2.1 audio驱动程序 164 
10.2.2 硬件抽象层的内容 164 
10.2.3 audio策略管理的内容 168 
10.2.4 上层的情况和注意事项 169 
10.3 通用的audio系统实现 170 
10.3.1 用桩实现的audio硬件抽象层 172 
10.3.2 提供dump功能的audio硬件抽象层 174 
10.3.3 通用的audio硬件抽象层 177 
10.4 msm系统的实现 178 
10.4.1 audio驱动程序 178 
10.4.2 audio硬件抽象层 180 
10.5 基于oss和alsa的实现方式 183 
10.5.1 oss驱动程序 183 
10.5.2 基于oss的硬件抽象层 184 
10.5.3 alsa驱动程序 185 
10.5.4 基于alsa的硬件抽象层 186 
第11章 视频输出系统 190 
11.1 视频输出系统结构和移植内容 190 
11.1.1 视频输出系统的结构 191 
11.1.2 移植的内容 192 
11.2 移植和调试的要点 192 
11.2.1 驱动程序 192 
11.2.2 硬件抽象层的内容 192 
11.2.3 上层的情况和注意实现 195 
11.3 overlay硬件抽象层实现的框架 199 
11.4 omap系统的实现 200 
11.4.1 omap的视频输出部分的驱动程序 200 
11.4.2 omap overlay 硬件抽象层 202 
第12章 照相机系统 205 
12.1 照相机系统结构和移植内容 205 
12.1.1 照相机系统的结构 206 
12.1.2 移植的内容 207 
12.2 移植和调试的要点 207 
12.2.1 video for 4linux驱动程序 207 
12.2.2 硬件抽象层的内容 210 
12.2.3 上层的情况和注意事项 215 
12.2.4 照相机系统的数据流情况 219 
12.3 camera硬件抽象层桩实现 222 
12.4 msm平台的camera实现 226 
12.4.1 msm平台的camera驱动程序 226 
12.4.2 msm平台的camera硬件抽象层 227 
12.5 omap平台的camera实现 228 
12.5.1 omap平台的camera驱动程序 228 
12.5.2 omap平台的camera硬件抽象层 229 
第13章 无线局域网系统 230 
13.1 无线局域网系统结构和移植内容 230 
13.1.1 无线局域网系统的结构 231 
13.1.2 移植的内容 232 
13.2 移植和调试的要点 232 
13.2.1 协议和驱动程序 232 
13.2.2 用户空间的内容 233 
13.2.3 上层的情况和调试方法 233 
13.3 omap系统的无线局域网实现 235 
13.3.1 linux内核中的内容 235 
13.3.2 用户空间的实现 236 
第14章 蓝牙系统 238 
14.1 蓝牙系统结构和移植内容 238 
14.1.1 蓝牙系统的结构 239 
14.1.2 移植的内容 240 
14.2 移植和调试的要点 240 
14.2.1 驱动程序 240 
14.2.2 本地代码的配置部分 242 
14.2.3 上层的情况和调试方法 244 
14.3 msm系统的蓝牙实现 245 
14.3.1 驱动部分 245 
14.3.2 用户空间的部分 247 
第15章 定位系统 248 
15.1 定位系统的系统结构和移植内容 248 
15.1.1 定位系统的系统结构 248 
15.1.2 移植的内容 250 
15.2 移植和调试的要点 250 
15.2.1 驱动程序 250 
15.2.2 硬件抽象层 251 
15.2.3 上层的情况和调试方法 253 
15.3 仿真器的gps硬件适配层实现 256 
15.4 msm平台的gps硬件适配层实现 257 
第16章 电话系统 260 
16.1 电话系统结构和移植内容 260 
16.1.1 电话系统的系统结构 260 
16.1.2 移植的内容 262 
16.2 移植和调试的要点 262 
16.2.1 驱动程序 262 
16.2.2 ril实现库的接口 264 
16.2.3 数据连接部分 266 
16.2.4 调试方法 267 
16.3 电话部分的ril参考实现 268 
16.3.1 端口初始化 268 
16.3.2 at命令处理流程 269 
16.3.3 event模块 270 
16.3.4 modem at命令初始化 272 
16.3.5 请求和响应流程的处理 272 
16.3.6 特定命令类型的实现 274 
第17章 opengl 3d引擎 276 
17.1 opengl系统结构和移植内容 276 
17.1.1 opengl系统的结构 277 
17.1.2 移植的内容 283 
17.2 移植和调试的要点 283 
17.2.1 opengl移植层的接口 283 
17.2.2 上层的情况和opengl的调试 285 
17.2 android软件opengl的实现 288 
17.3 不同系统中的实现 290 
第18章 openmax多媒体引擎 292 
18.1 openmax系统结构和移植内容 292 
18.1.1 openmax系统的结构 293 
18.1.2 android openmax实现的内容 297 
18.2 openmax的接口与实现 297 
18.2.1 openmax il层的接口 297 
18.2.2 openmax il实现的内容 302 
18.2.3 android中openmax的适配层 302 
18.3 omap平台openmax il的硬件实现 304 
18.3.1 ti openmax il实现的结构和机制 304 
18.3.2 ti openmax il的核心和公共内容 306 
18.3.3 一个ti openmax il组件的实现 307 
第19章 多媒体系统的插件 310 
19.1 android多媒体相关结构与移植内容 310 
19.1.1 多媒体处理过程 311 
19.1.2 移植的内容 312 
19.2 opencore引擎的结构和插件 313 
19.2.1 opencore的结构 313 
19.2.2 opencore的node插件机制 314 
19.2.3 openmax部分的结构、实现和插件结构 316 
19.2.4 关于媒体输入输出类mediaio 322 
19.2.5 opencore player的视频显示部分插件 325 
19.3 stagefright引擎的结构和插件 326 
19.3.1 stagefright系统结构 326 
19.3.2 stagefright对android中openmax接口的实现 328 
19.3.3 mediasource插件机制 328 
19.3.4 openmax和videorenderer插件机制 330 
19.4 omap平台实现的插件 332 
19.4.1 opencore的openmax插件 333 
19.4.2 opencore的视频输出插件 334 
19.4.3 stagefright的openmax和视频输出插件 336 
第20章 位块复制系统 339 
20.1 位块复制结构和移植内容 339 
20.1.1 位块复制系统的结构 339 
20.1.2 移植内容 340 
20.2 移植和调试的要点 340 
20.2.1 驱动程序 340 
20.2.2 硬件抽象层的内容 341 
20.2.3 上层的情况和注意事项 342 
20.3 msm平台中的实现 343 
第21章 警报器——实时时钟系统 346 
21.1 警报器——实时时钟结构和移植内容 346 
21.1.1 警报器——实时时钟系统的结构 346 
21.1.2 移植内容 347 
21.2 移植与调试的要点 348 
21.2.1 rtc驱动程序 348 
21.2.2 alarm驱动程序 349 
21.2.3 上层的情况和注意事项 349 
21.3 模拟器环境中的实现 351 
21.4 msm平台的实现 351 
第22章 光系统 354 
22.1 光系统结构和移植内容 354 
22.1.1 光系统部分的结构 354 
22.1.2 移植内容 355 
22.2 移植与调试的要点 356 
22.2.1 驱动程序 356 
22.2.2 硬件抽象层的内容 356 
22.2.3 上层的情况和注意事项 357 
22.3 msm中的实现 359 
22.3.1 驱动程序 359 
22.3.2 硬件抽象层 359 
第23章 振动器系统 361 
23.1 振动器系统结构和移植内容 361 
23.1.1 振动器部分的结构 361 
23.1.2 移植内容 362 
23.2 移植与调试的要点 363 
23.2.1 驱动程序 363 
23.2.2 硬件抽象层的内容 363 
23.2.3 上层的情况和注意事项 364 
23.3 msm中的实现 365 
第24章 电池系统 367 
24.1 电池系统结构和移植内容 367 
24.1.1 电池系统部分的结构 367 
24.1.2 移植内容 368 
24.2 移植和调试的要点 368 
24.2.1 驱动程序 368 
24.2.2 上层的情况和注意事项 369 
24.3 模拟器中的实现 371 
前言
Android系统是目前最为流行的手机系统之一，本书作者在推出了全面介绍Android系统的《Android系统原理及开发要点详解》一书，同时出版了繁体版，并将版权成功输出到韩国，韩文版将在2011年7月出版。在本书出版之后，笔者切实感到越来越多的开发人员和企业在关注Android系统的各个方面。 
Android系统是开源的，它的一个比较大的优势就是可以移植到各个不同的硬件平台上。“移植”是Android系统的精华所在，也是Android开发中的难点兼重点。 
本书《Android系统级深入开发——移植与调试》出版的主要目的是分享开发经验，帮助众多开发者快速地掌握Android系统在不同硬件平台移植的方法。帮助工程师以最快的速度、最小的开销、最轻的工作量，让Android系统高效地运行在更多的硬件上。 
本书特点 
本书紧紧抓住了Android系统移植与调试的主题，从开发者的角度出发，其特点主要包括以下几个方面： 
本书使用的代码以Android的开源工程为主，硬件也是比较常见的设备，保证读者可以很容易地获得开发环境。 
根据Android系统自身的固有特点，从Linux内核中的驱动和硬件抽象层两个着手点作为切入点。 
按照Linux的开发思路，从驱动程序的角度出发，让具有Linux开发经验的工程师，可以更快地熟悉主要用于移动设备开发的Android系统。 
从模拟器、高通的MSM平台、德州仪器的OMAP平台这三种硬件平台出发，全面介绍，不以偏概全，既把握共同点，也突出差异。 
对于Android中规模和难度各不相同的子系统，抓住它们和硬件相关的共同点，采取同样的格式和思路进行介绍，体现了“从特殊到一般”的理念。 
简要介绍各个子系统的框架，并列出代码路径，对移植部分的主要调用部分加强提示，让读者更全面地把握系统。 
本书内容 
本书分成24章，各章的内容如下所示： 
第1章和第2章：概要部分 介绍Android的系统的大结构、移植的主要工作，开发环境的构建方法 
第3章：全书的总纲 全面介绍Linux系统的驱动程序，突出介绍Android中硬件抽象层的不同实现方式，展示Android移植的各个方面 
续表 
第4章至第6章：Linux内核方面 主要介绍用于模拟器的Goldfish、MSM的mahimahip平台和OMAP的Zoom平台的3种Linux内核，介绍了不同体系结构的移植，与硬件无关的Android专用驱动，并简单介绍了各个硬件设备的驱动程序 
第7章和第8章：基本GUI的系统 包括显示输出和用户输入两个部分，是每个系统最优先移植的部分 
第9章：传感器系统 体现Android系统最经典的移植方式 
第10章至第12章：多媒体的输入输出环节 是Android移植重点关注的部分 
.第13章至第15章：连接系统 介绍连接方面的无线局域网、蓝牙和定位三个子系统，前两者使用Linux中比较标准的方式，定位主要通过GPS进行介绍 
第16章：电话系统 介绍电话系统，这也是用于移动设备的核心部分 
第17章：OpenGL 作为显示加速的OpenGL 3D的移植，体现Android和业界标准规范的接轨 
第18章和第19章：多媒体 用于多媒体加速的编解码单元的移植，第18章介绍编结码较下层的标准模块OpenMax插件，第19章介绍OpenMax插件在Android系统中的使用 
第20章：位块复制 介绍位块复制部分，主要用于原始图像数据处理的加速 
第21章至第24章：几个小系统 介绍与移动电话相关的警报器、光、振动器、电池信息这4个Android中较小系统的移植 
本书读者 
本书适合不同类型的读者群，不同类型的读者在学习的时候需要使用不同的方法。作者的建议如下： 
对于熟悉Linux内核但不熟悉Android的开发者，应该以驱动程序作为切入点，通过硬件抽象层的实现，将Linux的各个驱动程序应用到Android系统中。 
对于熟悉Android系统但不熟悉Linux内核的开发者，向下了解Linux内核，这样既可以更深入地了解Android系统的运作方式，又可以拓展自己的技术领域。 
对于经验较多，希望深入研究Android系统的开发者，应该更关注开发的细节，了解移植中调试的要点。 
本书作者 
本书的规划和统筹由中国大陆的韩超完成，韩超常年工作在Linux和Android的开发一线，兼具产品和理论经验。本书内容来源于工作在不同领域Android和Linux开发者多年的经验。韩超和梁泉完成了本书内容的主要部分，众多不同规模的企业开发成果也为本书的编写提供了重要的素材。参与本书编写的还有崔海斌、于仕林、张宇、张超、赵家维、黄亮、沈桢、徐威特、杨钰、马若劼、曹道刚等。广大社区开发者也对本书的成稿作出了贡献。

基本信息
作者： (美)Andy Lester  人人都有好工作:IT行业求职面试必读　　译者： 王劼 
出版社：人民邮电出版社 
ISBN：9787115247841
上架时间：2011-3-1
出版日期：2011 年3月
开本：16开
页码：1
版次：1-1
内容简介
《人人都有好工作:it行业求职面试必读》作者以一位资深软件工作者与一名招聘考官的双重背景身份，向我们勾勒了在技术类求职过程的经验点滴与真知灼见，内容涵盖求职过程的方方面面，同时充分考虑了招聘双方的情况。书中大量的生动实例与实践心得娓娓道来，将给读者引入一个全新的求职征途。
《人人都有好工作:it行业求职面试必读》主要针对技术类岗位正在求职以及潜在的求职者。
作译者
本书提供作译者介绍
Andy Lester的这本书让人惊叹，更恰适其时。在经济尚为低迷的时期，技术工作市场显然呈现的也是“僧多粥少”的局面，这些求职者需要得到太多的指导与帮助。安迪·莱斯特为我们总结的出色的求职指南与实用指导，可谓技术求职者心中的圣经。
译者序
This book is about your happiness. 
“本书关乎你的快乐”，作者在前言中这么写道。这实在难能可贵。大多求职类书籍都把重心全部放在如何适应与满足招聘方的需求，而忽略最基础、最广大的求职者自身的需求。作者用了整整两章来强调与说明认清“你究竟想要什么”这一问题的重要性。就像书名Land The Tech Job You Love，关键词就是这个Love。没有这份“理想”的、“热爱”的工作，那么最终你将会发现自己的人生处于无尽的痛苦之中，旁人眼中再“好”的工作，对你来说都一样不堪忍受。这个Love贯穿全书，包括之后需要把“公司利益放在首位”的撰写简历与参加面试的阶段，作者依然在招聘方需求与自身需求起冲突时，让求职者重新审视“你究竟想要什么”，以此作出最后的决断。 
虽然这是写给技术人士的求职宝典，但是基本原则在各行依然通用。即便对于我这样的非技术人士，仍旧获益匪浅。作为经历过找工作痛苦的人来说，看到这样一本书的确有种相见恨晚的感觉。老实说，书中所强调的许多简历诀窍、面试技巧以及注意事项，都是我自己在求职过程中曾经忽略的。现在重新审视当初求职时的简历，回忆过去的面试经历，再将其与书中罗列的要点作比对，顿时有恍然大悟之感，继而对当时的表现唏嘘不已：“如果能早一些读到这本书，也许就不至于走那么多弯路了。”我真心希望本书的读者在求职之初就能读到它，真的会带来诸多启发。 
书中提到了一些美国专有词汇，对此，在翻译时我加入了自己的注解，希望能帮助读者更好地理解作者本意。另外由于书中列举的一部分注意事项与案例分析都基于美国的法律与习惯，也许并不适用于国内情况，所以也请大家带着评判的眼光阅读。如同书中所说的一样：“把适用的建议记在心里，把不适用的迅速忘记。” 
我从2010年5月开始动手，直到10月翻译及自我校稿完毕，期间得到了许多人的帮助。衷心感谢人民邮电出版社图灵公司傅志红、陈兴璐编辑的耐心指导以及细致修改，你们辛苦了。感谢金不换老师的引荐，让我有了这次翻译的人生初体验。感谢胡浩源同学在技术词汇方面的把关，让IT知识相对薄弱的我不至于闹出大笑话。最后感谢家人在翻译全程的体谅与照顾，没有你们的支持就不会有我的坚持。 
由于这是我初次翻译的作品，势必会存在许多不足，特别是技术词汇翻译上可能会有错误与不妥之处，另外一些英文习惯表达词句的译文也许会显得生涩，望各位读者海涵，更期待大家能反馈宝贵的意见与建议。 
最后，祝各位都能在理想的工作中安全着陆。 
王劼 
2010年10月
前言
这是一本关于快乐的书。 
每天你有一半醒着的时间花在工作上。这比你花在陪伴孩子和伴侣上的时间多，更比你花在玩“魔兽世界”上的时间多得多。可以想象，要是每天花那么多时间做着你不喜欢的事情，那么你的生命肯定不可能感到快乐。 
《人人都有好工作:IT行业求职面试必读》旨在帮助你体会自己的快乐人生。怎么达到呢？就是让你先搞清楚自己究竟想要一份怎样的工作，接着告诉你该如何去找到并获得那份工作。是的，我写本书的目的，就是想让你找到一份理想的工作，然后像下面我将要提到的爱德·科格林那样去热爱那份工作。 
一位爱岗敬业的消防员 
爱德·科格林热爱着他的工作。作为芝加哥市的消防员，他从事这份工作已长达28年了。这28年中的每一刻，他都在享受着。显然这并不容易，但是他做到了，而且做得很成功。从芝加哥消防局退休之后，他搬到了郊区，但他的心却未曾离开。在退休后的几年中，他继续以志愿者的身份担当着居住区域几个小镇的消防任务，还和过去的队友们一直保持着联系。 
我是在爱德生命的最后时期与他相遇的，我发现没有比回忆过去当消防员的日子更能让他眼中放光的了。他总喜欢和大家分享执行任务时的故事，仿佛那些事就发生在昨天。他还喜欢津津乐道那些消防训练时的趣事，总能逗得大家捧腹大笑。我很明白，他对这份工作的留恋不仅仅在于自己拯救了那么多生命，更是出于他对这份工作发自内心的热爱。他热爱周围一起工作的伙伴，为是一名消防员而感到自豪。 
在我们的技术领域，也有很多像爱德一样的人。不管是程序员、系统管理员、网页设计师，还是其他某个领域的技术专家，我们都过着与他相似的生活。我们的工作是很多人不会也不愿意做的，但是我们却乐在其中。要知道我们所从事的工作是非常有价值的。这个圈子很独特，内部密切关联，却常常被外界误解。首先，我们都十分热爱工作，以至于有时会自愿承担更多的任务，久而久之被周遭的人当成是技术狂人，如同我们就是为做技术工作而生。是的，我们就是天生的技术命。 
《人人都有好工作:IT行业求职面试必读》的诞生过程 
《人人都有好工作:IT行业求职面试必读》是从2004年1月14日开始动笔的，写书的动机源于一次密苏里州圣路易斯市的Perl语言用户交流大会 。会议结束后，我们一行20人去聚餐。就这样，一群技术狂人分两拨儿坐在长餐桌两边，当时坐我对面的是比尔·奥多姆。我们聊着聊着就说起了各自公司在招聘高素质人才方面的难处。我们分享了先前经历过的那些糟糕的简历和惊悚的面试。后来有人开始问我们关于优化简历的建议，接着又有人咨询我们他是否有必要辞掉目前的工作。就这样，10分钟之后，整桌人都围在了我俩身边，饶有兴致地咨询关于工作方面的问题。当时比尔对我说：“看样子我们得在这方面做点什么了。” 
那次聚餐之后，我又和比尔讨论了如何更深入地挖掘关于求职的方方面面。很显然，聚餐的这帮人都对自己的工作不满意，同时也很积极地寻求改变现状的机会。和他们的积极热情相反，我和比尔却为此感到沮丧，因为我们了解到原来有那么多合格的人才曾进入公司应聘流程，却因为各种各样的原因把原本该属于他们的工作机会给搞砸了。更糟糕的是，我们曾遇到过很多面试者完全搞不清他们对自己应聘的工作是否真正中意。他们从一开始找工作就把自己一步步逼向失败之路。 
那晚在圣路易斯的会议后驱车回家的路上，我得知了岳父爱德·科格林，也就是刚才提到的那位热爱工作的消防员辞世的消息。在葬礼前的守夜日，许多曾跟他一起度过那段消防岁月的伙伴们纷纷赶来，表达自己对他的敬仰，分享那些关于他如何热爱工作的小故事。 
几周后，我和比尔又共同在O’Reilly的开源大会上就求职问题做了一次演讲。由于当时的演讲大受欢迎，在那之后我又在全国各地的爱好者大会上做过同样的演讲。也就是这些演讲的成功让我有了写本书的想法。 
我的心愿是让所有人都能像爱德那样热爱自己的工作。就我个人的情况而言，我已经从事技术行业超过21年了，对我来说这段经历是无可替代的，每时每刻都乐在其中。我希望你们也能像我和爱德一样从工作中找到快乐。 
一点声明 
请注意，任何一本求职类的书都不一定完全适合你自身的情况。作为作者，我对你的情况实际上是一无所知的，包括你目前的工作情况、你的经历、你的背景、你在寻求的工作，以及你所看重的东西。 
你需要根据自身的情况你所处的地理位置来评判我这些建议的适用性。如果你不在美国，那么我这儿提供的一些建议也许并不适用。譬如在一些欧洲国家，简历是必需附上个人照片的，而在美国，你要是这么做势必会让你进入黑名单。即便你在美国，相信旧金山湾区的应聘者和芝加哥一家公司的应聘者在面试中需要的表现也会很不一样。 
还有一点要说明的是，在每一次演讲中我都能听到这样的评论：“我很欣赏你的做法，但是要知道你和我们的头儿们完全不一样！大多数的经理都是笨蛋！” 
作为本书的作者，我需要声明的是我并不了解你，不清楚你住哪儿，而且多数公司的招聘流程本身也并非是最优化的。 
但是请记住…… 
求职中的根本原则一定是通用的。书中写的这些技巧都是真实有效的。我所列举的这些真人真事就是书中阐述的观点和实践的基本应用。 
. 老实说，其实我也不算完全对你一无所知。因为我已经和太多的技术从业人员聊过，他们也和你一样对现有的工作不满，或者正在努力找新工作。 
话说回来，《人人都有好工作:IT行业求职面试必读》的大部分内容对你的确适用。大部分的观点能跨越文化差异为全球所通用。如何让你找到适合自己的工作，或者说是让适合你的工作顺利地找到你，以及如何向你的面试官展示你的价值，关于以上这些方面的指导原则，将为你构建起成功的基石，让你获得工作并快乐工作的机会增加千倍。 
总而言之，读本书也好，或者是读其他任何一本求职类的书籍也好，你必须思考哪些建议是对你适用的，然后把适用的建议记在心里，把不适用的迅速忘记。 
《人人都有好工作:IT行业求职面试必读》提供的内容 
《人人都有好工作:IT行业求职面试必读》提供的所有观点都是互相依存、互相关联的。第1章和第2章阐述了求职的基本要素以及快乐的根源。第1章会讨论成功求职的基本要素，以便你找到心仪的工作。弄清“你究竟想要什么”这一点非常关键，但这常常被求职类书籍所忽略。所以我单独开设了一章，也就是第2章，对此进行专题阐述。我们将会讨论你想从工作中得到什么。即使你自以为很清楚所追寻的目标，在阅读的过程中也许还是能发现一些过去的工作中从来不曾考虑过的方面。 
在接下来的两章中，我们会讨论如何创建针对各个目标公司量身定制简历的基础版本。撰写一份简历需要经过两个步骤，这将分两章分别讨论。首先，第3章从文字的角度讨论需要在简历中涉及的内容。这部分帮助你摆脱对简历表现形式的过分关注，以免分散读者对简历内容的足够重视。当准备妥当文字内容后，你需要利用第4章中的建议来制作一份高效用的简历。 
在考虑好自己对工作的需求并准备好基础版简历后，你便可以开始动手找工作了，请参阅第5章。搜索到一份理想的公司与职位之后，你将面临下一个步骤，从第6章中找到将自己推介给目标公司的最佳方式。 
一旦被邀请参加面试，你的求职状态将发生剧变。你将从寻觅状态转变为展示自身锋芒的状态。你需要向公司与面试官证明自己是胜任这份工作的最佳人选，并且这份工作对自己来说也是最合适的。第7章中，你将学习如何将自己的设想与相关材料相结合，促使面试过程顺利进行。接着在第8章，你又将学到如何把控面试使得面试成为推销自己、展示自己是这份工作最佳人选的良机，而不只是单纯的一问一答环节。 
接下去的两章内容讨论了在面试中该说什么，不该说什么，以及如何说才最完美。首先，第9章给出了如何回答诸如“你的五年规划是什么样的”之类令人畏惧问题的可靠意见。接着第10章列出了面试中不应该谈及的一些内容。 
第11章包含了如何处理录用通知以及如何巧妙地拒绝一份录用机会。而且，既然下一份工作并不一定能成为最后一份工作，那么第12章将讨论如何最大程度地利用好自己的技能与从业经验以及人们对你的评价，以确保下一次重新找工作时过程不会再如此痛苦。 
《人人都有好工作:IT行业求职面试必读》最后的附录总结了求职过程中的小窍门，也列举了需要避免发生的事项。现在你可以快速浏览一遍，以便对之后的内容有一个大概的了解。你还可以阅读文前“职场经典物语”页的内容，那里列出了求职过程中需要谨记于心的诸多原则。 
纵观全书你会看到一些标记编号列出了在阅读过程中需要记住的要点。你也会注意到标有F的小卡片图标，这些图标代表了可能会导致求职失败的潜在因素。千万别重蹈别人的覆辙。 
《人人都有好工作:IT行业求职面试必读》网页 。 
十分期待你们的评论、建议或是你们自己的求职故事。你可以在论坛上发帖或是直接给我发邮件，我很想知道这本书究竟能否帮到你们，我还可以做怎样的改进。 
现在开始享受工作吧 
我相信你们当中有很多人都怀疑一个人是否真的能爱上自己的工作，也许你本身很喜欢摆弄电脑，但是工作却把摆弄电脑的所有乐趣都剥夺了。也许你体内的艺术细胞非常抵触那些无聊的网站设计工作，也许你的同事都是些惹人厌的蠢货。我完全了解你的感受，因为不是只有你这么想。 
可你并不是非得做这些工作不可。要知道世上还有很多别的机会等着你，只要你懂得如何找到它们，如何在整个招聘过程中发挥你的优势，以及如何让你的优势在工作中顺利体现出来。 
本书会帮助你找到理想的工作。 
安迪·莱斯特 
2009年5月
媒体评论
Andy Lester的这本书让人惊叹，更恰适其时。在经济尚为低迷的时期，技术工作市场显然呈现的也是“僧多粥少”的局面，这些求职者需要得到太多的指导与帮助。安迪?莱斯特为我们总结的出色的求职指南与实用指导，可谓技术求职者心中的圣经。 
——埃德·尤顿， Death Marth 作者，软件方法学开创者
目录
第一部分 求职篇 
第1章 求职的基础 2 
1.1 诚实对己 2 
1.2 诚信待人 5 
1.3 像老板一样思考 8 
1.4 做一个问题解决专家 11 
1.5 推销你自己 12 
1.6 讲故事，举例子 15 
1.7 保持积极心态 17 
1.8 进入下一章 19 
第2章 你想从工作中得到什么 20 
2.1 工作动机理论速成课 23 
2.2 深入了解你所追求的 24 
2.3 工作动机列表 27 
2.4 你的动机：可考虑的12种因素 28 
2.5 再次检验你的工作动机列表吧 38 
第3章 简历：言之有物 39 
3.1 在撰写简历之前 40 
3.2 切不可急于求成 43 
.3.3 简历的分段 43 
3.4 不需要出现的内容 69 
3.5 构建自己的简历 72 
第4章 构建简历文档 74 
4.1 简历的三个版本 75 
4.2 总体原则 77 
4.3 正确、有效地使用word功能 79 
4.4 创建一份完美的自述 81 
4.5 审查word文档 82 
4.6 做一个网页版简历 84 
4.7 做一个纯文本简历 88 
4.8 准备进入下一步 90 
第5章 开始求职 91 
5.1 一切以人为本 91 
5.2 你的工作在哪里 96 
5.3 关于潜在工作你需要了解什么 107 
5.4 完善的调查工作 109 
5.5 猎头 119 
5.6 开始你的工作狩猎 121 
5.7 小结 124 
第6章 工作申请 126 
6.1 调整简历 127 
6.2 写一封求职信 129 
6.3 将所有文件准备齐全 133 
6.4 千万别透露你过去的薪水 134 
6.5 继续寻找吧 137 
第二部分 面试及后续工作篇 
第7章 准备好面试 140 
7.1 腾出时间 141 
7.2 准备好向面试官推销自己 141 
7.3 准备好应对棘手的问题 142 
7.4 准备好作品集 142 
7.5 准备好该问的问题 149 
7.6 准备出席面试 155 
7.7 准备好该带的物品 156 
7.8 万全的准备是成功的一半 157 
第8章 面试 158 
8.1 目标直指获得工作录用 159 
8.2 耳听八方 160 
8.3 像对待ceo那样对待每个人 162 
8.4 面试流程 164 
8.5 通过举例子来推销自己 169 
8.6 通过完成工作来推销自己 177 
8.7 面试尾声 180 
8.8 电话面试 183 
8.9 结束新工作第一天 185 
第9章 应对棘手的面试问题 186 
9.1 别作无用的回答 187 
9.2 切忌抱怨及不尊重他人 188 
9.3 警惕面试官设下的问题陷阱 188 
9.4 棘手的问题 189 
9.5 曲线球问题 206 
9.6 更多棘手的问题：针对阅读简历者的练习 207 
第10章 信息过剩 209 
10.1 违禁话题 210 
10.2 其他需要避免的话题 214 
10.3 巧妙处理不合时宜的问题 216 
10.4 谁愿意在那样的公司做事 218 
10.5 抓住重点 219 
第11章 面试之后：工作录用及后续 220 
11.1 送一张感谢卡 220 
11.2 耐心等待 221 
11.3 准备下一轮面试 223 
11.4 提供可靠的证明人 224 
11.5 工作录用 229 
11.6 优雅离职 236 
11.7 坦然面对拒绝 241 
11.8 又是一个新的工作循环 244 
第12章 不给自己失业的理由 246 
12.1 提升自身能力 248 
12.2 扩大人际关系网 253 
12.3 树立个人品牌 260 
12.4 随时准备寻找下一份工作 265 
12.5 求职之路永无止尽 269 
附录a 避免无意义的陈词滥调 270 
附录b 简历、求职信及电子邮件撰写禁忌 271 
附录c 面试大忌 273 
附录d 网络资源 274 
附录e 参考文献 275