标题：IT求职宝典
【内容简介】

本书根据IT公司不同领域（通信类、软件类、硬件类、因特网类、存储类、数据库类、ERP类、IT培训类和金融类）抽取若干代表性企业所提供的职位信息进行介绍，如软件类的C++研发工程师、算法工程师；通信类的J2ME工程师、网络售前工程师；因特网类的搜索引擎工程师、Web前端工程师、网络游戏测试工程师等。本书的面试题除了有详细解析和回答外，对相关知识点还有扩展说明。希望真正做到由点成线，举一反三，对读者从求职就业到提升计算机专业知识都有显著帮助。
本书适合计算机相关专业应届毕业生阅读，也适合作为正在应聘IT行业的相关从业人员和计算机爱好者的参考书。
【本书特色】

揭开众多知名IT企业各类岗位的面试、笔试核心机密
本书详尽剖析各类IT职位的特性与求职要点，涉及各大IT公司历年面试真题（包括笔试题、口试题、电话面试、英语面试，以及逻辑测试和智商测试），在应聘众多IT相关职位过程中所遇见的关键要点为你一一点破
【前言】

狄更斯在《双城记》中说：“这是最好的时代，这是最坏的时代；这是光明的季节，这是黑暗的季节；这是希望之春，这是失望之冬；人们面前有着各样事物，人们面前一无所有。”这些话也同样适用于变幻莫测的IT行业。
我们正身处最好的时代。中国经济的蓬勃发展为IT行业提供了充足的资本保证，从引进技术到自主创新技术，必将在制度、资源和资本等要素之外，为中国经济增长培育新的动力源泉。身处一个国家的起飞年代，IT人士拥有着前人无法企及的幸运。经济制度改革所蕴含的经济增长动力还远远没有释放完毕。信息化用户总体需求不改上扬趋势，对于IT行业，机会应该比其他行业更多。具体来说，IT业务升级要求和新系统建设支撑，会推动IT软硬件和系统集成业务的快速发展，其中，因特网、应用开发集成，以及IT培训等细分市场会得到更加明显的集中推动。
我们正身处最坏的时代。之所以说是最坏的时代，是我们正遭遇“百年一遇”的金融危机，这场危机引发的全球IT市场衰退的可能性正在增大。如果没能抓住变革的机遇为自己做好规划，十年、二十年后，重新分配的财富、蝴蝶效应的加剧，会让未能把握住这个时代机会的人们面临惶惑。如果说21世纪初IT爆炸缔造了许多投资人的财富神话，那么近年来市场的逐渐规范则让许多迟到的入行者体会到了泡沫消失的苦味。是最好的时代，抑或是最坏的时代，取决于我们如何利用这个时代。行业总有起伏波动，把握脚下的路则是一门需要智慧和耐心的艺术。
本书落笔之时，正值笔者曾经效力过的老东家——北美某著名电信公司申请破产保护。在2000年鼎盛时期，其市值曾达2500亿美元，是整个业界当仁不让的龙头老大，而今市值不足0.5亿，已经彻底陨落。我以前的朋友，包括北美曾经一起开过会的同事，或被裁，或离职。在全球金融危机愈演愈烈的当下，克莱斯勒、北电网络、奇梦达和硕泰克等宣告破产，Sun被收购，并且很多公司都在调整或大量裁员。金融危机已经切切实实走到我们的面前，不论目前有工作的人士（包括刚入职不久的新人和高高在上的管理层）还是正在找工作的应届往届大学生都充满危机。如何找到工作，如何在大环境受到冲击的情况下脱颖而出？成为求职者必须首先应对的事情。
目前，IT行业各公司根据领域不同分为9大类（通信类、软件类、硬件类、因特网类、存储类、数据库类、ERP类、IT培训类和金融类），本书将从每一类中抽取若干代表性企业所提供的职位信息进行介绍，如软件类的C++研发工程师、算法工程师；通信类的J2ME工程师、网络售前工程师；因特网类的搜索引擎工程师、Web前端工程师、网络游戏测试工程师等。
以往的面试书籍往往过于关注技术细节，而忽视了IT具体领域的特殊性和职位本身的特殊性。对于一个IT求职者来说，面试微软和面试国内一家小公司截然不同；应聘Web运维工程师与C++算法工程师所考核的题目也大不相同。现代社会分工越来越细，针对不同职位的具体要求和规划也各不相同，但市面上的面试类书籍却很少有完整全面介绍IT行业各类职位详情、招聘需求及职场规划的。本书中的职位涵盖研发、测试、售前、售后、运维、应用及IT等方面。本书通过详细的职位介绍、领域类别介绍、招聘信息分析，并结合大量面试真题（含专业笔试、逻辑测试，智力测试和英语测试）对每个具体职位要关注的考点细节详细解读。本书的面试题并非简单的罗列。除了对题目有详细的解析和回答外，对相关知识点还有扩展说明，希望能达到由点成线、举一反三的效果。除此之外，本书关注求职前后的整个过程，并对求职者常见误区和求职技巧加以讲解，旨在全面解读IT行业职位密码，并帮助求职者有的放矢地进行求职，是一本关于IT公司求职招聘的百科全书。
本书适合计算机相关专业应届毕业生阅读，也可作为正在应聘IT行业的相关从业人员和计算机爱好者的参考书。
【目录】

第1部分 求职之前
本部分介绍各个职场象限间的区别与联系。有人说：选择什么样的职位，就选择了什么样的薪水。这句话是有一定道理的。
第1章 工作类型与差异 3
1.1 职场象限 3
1.2 职位差异 4
第2章 职业规划要素 7
2.1 要素1：选择与坚持 7
2.2 要素2：时间与事件管理 8
2.3 要素3：长远考虑 9
2.4 要素4：平衡考虑 10
第2部分 流程与职位分析
本部分详解IT公司求职的整个流程，包括网申、发邮件、技术类笔试、非技术类笔试，以及面试等，并对其中一些常见的技巧、经验及陷阱加以汇总，最后分析IT公司几大类常见职位的要求，以便让求职者更加清楚简历的投递方向。
第3章 面试流程及考点分析 15
3.1 网申策略 15
3.2 为何简历没人看 17
3.3 发邮件技巧 17
3.4 技术类笔试 18
3.4.1 笔试语言考点分析 19
3.4.2 勿言必称微软谷歌 20
3.5 非技术性类笔试 21
3.5.1 图表类笔试 21
3.5.2 数字类笔试 23
3.5.3 文字逻辑类笔试 24
3.6 面试的技巧 25
3.7 面试陷阱分析 26
第4章 IT公司职位分析 31
4.1 开发类职位 31
4.2 测试类职位 32
4.3 硬件类职位 33
4.4 数据库类职位 35
4.5 售前类职位 36
4.6 售后类职位 39
4.7 应用类职位 40
第3部分 通信类公司
很多人是冲着“通信工程”这块金字招牌才选择通信专业的，而在进了大学后，又会有很大一部分同学对未来感到迷茫或担忧。3G推行前后，很多专家们认为通信行业的“第二春”马上就要来了，但同时他们也认为这一次春天不可能像上回那样普降甘露，而只是滋润那一部分有准备的人。
第5章 明信公司软件开发工程师面试 45
5.1 职位介绍与规划 45
5.2 招聘启事 46
5.3 图形类题目 47
5.4 通信相关类题目 51
5.5 C/C++编程类题目 55
第6章 美仕科技J2ME工程师面试 65
6.1 职位介绍与规划 65
6.2 招聘启事 66
6.3 智力类题目 67
6.4 Java基础类题目 67
6.5 Java编程类题目 74
第7章 VVNT公司西安研发中心测试工程师面试 93
7.1 职位介绍与规划 93
7.2 招聘启事 94
7.3 智力类题目 95
7.4 C/C++编程类题目 96
7.5 测试类题目 104
第8章 深蓝公司网络售前工程师面试 113
8.1 职位介绍与规划 113
8.2 招聘启事 114
8.3 图形类题目 115
8.4 网络类题目 116
8.5 售前技术类题目 119
8.6 其他 122
第9章 百合公司网络售后工程师面试 127
9.1 职位介绍与规划 127
9.2 招聘启事 128
9.3 群面类题目 129
9.4 智力类题目 131
9.5 网络类题目 132
第4部分 硬件类公司
计算机硬件厂商是指主营业务以计算机硬件为主的生产厂商，如Intel、AMD、威盛（CPU生产商）、英飞凌（内存、智能卡生产商）、磐正、精英（主板生产商）、DELL、神州，以及同方（品牌电脑生产商）等。
第10章 Tieyi公司硬件开发工程师面试 141
10.1 职位介绍与规划 141
10.2 招聘启事 142
10.3 智力类题目 144
10.4 硬件类题目 145
第11章 美西公司嵌入式开发工程师面试 153
11.1 职位介绍与规划 153
11.2 招聘启事 154
11.3 数字类题目 155
11.4 数理分析类题目 158
11.5 嵌入式类题目 160
第12章 VST电子软件开发工程师面试 169
12.1 职位介绍与规划 169
12.2 招聘启事 169
12.3 数字类测试 171
12.4 算法类测试 171
12.5 C++编程类题目 177
第5部分 软件类公司
计算机软件技术的迅速发展，为企业内部、企业与外部提供了快速、准确、可靠的信息交流渠道。信息化企业运作管理系统已成为企事业单位参与全球市场竞争的必备支持系统。
第13章 Vorks公司北京软件研究院研究员面试 183
13.1 职位介绍与规划 183
13.2 招聘启事 184
13.3 表格类题目 185
13.4 智力类题目 189
13.5 算法类题目 192
13.6 排序类题目 206
13.7 C/C++编程类题目 215
第14章 蓝色菲林软件公司C++软件工程师面试 217
14.1 职位介绍与规划 217
14.2 招聘启事 218
14.3 英语类题目 219
14.4 算法类题目 221
14.5 排序类题目 221
14.6 C/C++基础类题目 225
14.7 C/C++编程类题目 231
第15章 SFS公司MFC软件工程师面试 241
15.1 职位介绍与规划 241
15.2 招聘启事 242
15.3 智力类题目 243
15.4 排序类题目 244
15.5 C/C++编程类题目 247
15.6 操作系统类题目 259
第16章 卡夫卡公司C++白盒测试工程师面试 269
16.1 职位介绍与规划 269
16.2 招聘启事 270
16.3 智力类题目 271
16.4 C++编程类题目 275
16.5 测试类题目 279
16.6 排序类题目 283
第17章 GATE公司信息安全工程师面试 287
17.1 职位介绍与规划 287
17.2 招聘启事 288
17.3 算法类题目 289
17.4 排序类题目 293
17.5 C++编程类题目 297
第18章 水源软件公司Java开发工程师面试 317
18.1 职位介绍与规划 317
18.2 招聘启事 318
18.3 Java基础类题目 319
18.4 Java编程类题目 334
第19章 埃尔科技J2EE研发工程师面试 337
19.1 职位介绍与规划 337
19.2 招聘启事 338
19.3 Java基础类题目 340
19.4 Java编程类题目 344
19.5 Struts类题目 346
19.6 JDBC类题目 347
第20章 亚速软件Java测试工程师面试 355
20.1 职位介绍与规划 355
20.2 招聘启事 356
20.3 文字逻辑类题目 357
20.4 Java基础类题目 361
20.5 Java编程类题目 369
20.6 软件测试题目 375
第21章 ZM公司.NET架构师面试 377
21.1 职位介绍与规划 377
21.2 招聘启事 378
21.3 设计模式类题目 379
21.4 UML类题目 397
21.5 算法类题目 398
第6部分 因特网类公司
因特网正在创造越来越多的盈利方式，无论是电子商务、软件销售还是Web 2.0（第二代因特网服务）热潮，都将成为因特网企业共同的选择。同时影音娱乐、网络广告、搜索引擎等的发展也使因特网细分市场的界线变得越来越模糊。
第22章 TST公司Web前端工程师面试 403
22.1 职位介绍与规划 403
22.2 招聘启事 404
22.3 JavaScript基础类题目 405
22.4 JavaScript编程类题目 409
22.5 CSS类题目 417
22.6 XML类题目 419
第23章 Salo公司搜索引擎研发工程师面试 421
23.1 职位介绍与规划 421
23.2 招聘启事 422
23.3 概率类题目 423
23.4 算法类题目 427
23.5 排序类题目 432
23.6 C++编程类题目 438
第24章 信创公司JSP开发工程师面试 443
24.1 职位介绍与规划 443
24.2 招聘启事 444
24.3 数理分析类题目 445
24.4 Java基础类题目 446
24.5 JSP类题目 455
第25章 KNT公司Hibernate+Spring研发工程师面试 457
25.1 职位介绍与规划 457
25.2 招聘启事 457
25.3 Java编程类题目 458
25.4 Hibernate类题目 464
25.5 Spring类题目 473
第26章 NY公司网络游戏测试工程师面试 475
26.1 职位介绍与规划 475
26.2 招聘启事 476
26.3 智力类测试 477
26.4 测试类题目 480
26.5 游戏类题目 480
第27章 AG软件PHP开发工程师面试 483
27.1 职位介绍与规划 483
27.2 招聘启事 484
27.3 智力类题目 485
27.4 PHP编程类题目 487
第28章 云水谣软件ASP开发工程师面试 505
28.1 职位介绍与规划 505
28.2 招聘启事 506
28.3 ASP编程类题目 507
28.4 网页类题目 513
28.5 数据库类题目 516
第7部分 存储、数据库、ERP类公司
存储类公司、数据库类公司、ERP类公司是当前IT市场上非常重要的3个组成部分。
第29章 喀纳斯软件ERP实施顾问面试 521
29.1 职位介绍与规划 521
29.2 招聘启事 523
29.3 ERP类题目 524
29.4 数据库类题目 536
第30章 德庞珠存储售后工程师面试 539
30.1 职位介绍与规划 539
30.2 招聘启事 540
30.3 图形类题目 541
30.4 数理分析类题目 543
30.5 存储类题目 544
30.6 AIX类题目 547
30.7 HP类题目 549
第31章 曼妥斯数据库公司测试工程师面试 551
31.1 职位介绍与规划 551
31.2 招聘启事 552
31.3 智力类题目 554
31.4 Java编程类题目 555
31.5 数据库类题目 558
31.6 软件测试类题目 561
31.7 操作系统类题目 564
第8部分 培训类公司
国际咨询机构IDC发布的2008年度中国IT培训分析报告显示：2008年我国IT培训市场销售额突破50亿元，IT培训市场处于稳步发展阶段。
第32章 蓝天教育集团Java培训师面试 567
32.1 职位介绍与规划 567
32.2 招聘启事 567
32.3 智力类题目 568
32.4 Java基础类题目 570
32.5 Java编程类题目 571
32.6 教学类题目 574
第33章 WH网络中心Linux系统培训师面试 577
33.1 职位介绍与规划 577
33.2 招聘启事 578
33.3 Linux基础类题目 579
33.4 Shell类题目 604
33.5 教学类题目 606
第9部分 金融类公司
IT技术的快速发展，将拥有分散业务的金融公司资源整合并应用于服务，公司内部通过消息总线连接起来，获得了新的业务灵活性。
第34章 Silenus银行系统管理员面试 609
34.1 职位介绍与规划 609
34.2 招聘启事 610
34.3 UNIX基础类题目 612
34.4 Shell类题目 620
第35章 德贝保险网络管理员面试 635
35.1 职位介绍与规划 635
35.2 招聘启事 637
35.3 网络类题目 638
35.4 Shell类题目 648
第36章 博飞（Bosfriend）金融集团DBA面试 655
36.1 职位介绍与规划 655
36.2 招聘启事 657
36.3 数理分析类题目 658
36.4 数据库类题目 659
附录A 签约注意事项 667
附录B 离职违约注意事项 673
附录C 常见招聘网站 677
附录D 索引 679
【样张】
13.1【职位介绍与规划】
研究员这样的招聘只存在于大型公司或集团的研究院或者政府研究所，如中国移动深圳研究院，IBM亚洲研究院，华为预研所等，一般的小型公司是不可能有这样的机会的。
基础学科的技术研究，如数学、物理、航空航天，这些企业不会做，一般是政府投资，推动科学发展；那些和产业有关的技术开发，则由企业市场化，研究成果做出来后对企业和产业都会有用。
企业在不同阶段对技术研究的看法也不一样。小企业不可能投资做研究，也没有必要，它在乎的是今天能不能进入市场，明天是否还存在，不需要看到三到五年之后，也看不到；当企业发展到一定阶段后，像联想、TCL、华为这些公司，就需要考虑三五年后靠什么进步，十年之后往什么方向发展，自己就要有一些应用创新和专利技术；企业再进一步发展，像IBM、Intel、微软，就要想得更长远，同时自己也有一种责任感和使命感，去推动产业发展技术进步，就会做一些和产业相关的基础技术研究。
研究人员工作框架限制较少，没有事先定义好的模式。而是自己去探索一种最适合的模式；第二点，跨国公司预算充足，研究员可以调动充分的资源来实现自己的研究。在自己研究领域内最好的5家学术期刊和会议上发表论文，并且申请专利。
能去研究院所工作的，既有阅历丰富的人，也有刚刚毕业的博士。有一些属于内部推荐，因为这样对求职者的经历、性格都比较了解。对于应届生面试，首先会查看智商，看它是否足够聪明，其次就是对计算机相关算法，数据结构等基础知识反复考量，确定其在技术上的专业性。最后看他的性格是不是适合与人合作。虽然也把各项考核列出来进行打分，但这是次要的，因为对于一个具体的人，很难用语言、公式进行量化。所以进入面试阶段，随机应变是很重要的。
13.4【智力类题目】
面试例题3：史密斯先生遗产2000元，要分给他的2个孩子。遗嘱规定如下：
1 由哥哥先提出分钱的方式，如果弟弟同意，那就这么分；
2 如果弟弟不同意，1000元会捐给地震灾区，由弟弟提出剩下1000元的分钱方式；
3 如果哥哥同意弟弟的方式，就分掉这剩下的1000元；
4 如果哥哥不同意，遗嘱规定剩下的1000元中的800元捐给灾区，然后分别只给他们每人100元。
问：哥哥会提出什么样的分钱方式使其利益最大化？(分配最小单位元）
附带条件：两人都极聪明且唯利是图。
A 1900 100
B 1899 101
C 1000 1000
D 1101 899 
解析：这是一道风险评估题，属于博弈论的范畴：
如果两次都没有通过，那么两人最少获得100元，所以100元是无风险的。
第二次弟弟分配，只要给哥哥101元，弟弟获得899元。因为100元是无风险的，若少于或等于100元，哥哥“完全可以”不同意，然后获得100元。
若给哥哥的大于100元，给得越多，哥哥不同意的可能性越小。所以第二次分配的时候，弟弟可能获得的最大利益是899元，不可能再多，但是可能会更少。
回头再考虑哥哥第一次分配的情况，最低风险同样是100，给弟弟的越多弟弟同意的可能性越大。因为弟弟在第二次分配的时候可能最大获利899元，所以只要小于这个数目弟弟不同意的可能就会，因为可以冒险获得更大的利益。
但是只要等于899元，弟弟就没必要冒险，因为不可能获得比899元更多，况且哥哥也有不同意的可能。
所以哥哥分配的方案应该是：
哥哥：1101元
弟弟：899元
答案：D
扩展知识：这道面试题来说我们只是就题论题，考虑是两人都极其聪明理智且唯利是图。但是如果真的在实际生活中出现了这样的博弈，考虑的东西就会更多些，因为有人的地方就有变数，人的情感，性格不是机械的数字所能左右的。这些变数都会影响到实际博弈的结果。 比如说现实生活中某些人总希望别人得到的比自己少，而不管自己得到多少。于是哥哥提出1899和101的方案，如果弟弟不同意，那么弟弟提出的方案哥哥也不同意。那最后双方都得到100。对于两个人来说都是双亏的抉择，当然这是一种极端的情况。
所以我们现实考虑问题的时候，要考虑最通常的情况：即每个人都希望拿得尽量多，如果万一拿得比对方少，也不要差距太大（古人云不患寡患不均）；所以实际生活中的情况可能是这样的：
1 假如进入第二轮分配，弟弟会冒险地提出899、101的分配方案吗？显然不会，这个风险太大了，他完全没有胜算。因为哥哥可能宁可不要多的一块钱，也要和弟弟差距不大。他必须拿出一定的钱来换取哥哥至少有50%以上的可能性来同意他的分配方案，只要在保证分配方案得到对方点头的情况下，利益最大才能得到体现，因此要博弈就不该仅仅考虑自己的利益，这放在商业上也是这样的；
2 弟弟的方案，最保险的是每人500，但既然要考虑利益最大，那就不可能是公平地进行分配，那弟弟的分配方案应该是让哥哥得到100到500的中间值，也就是300,自己得到700；
3 那么，如果哥哥考虑到弟弟可能提出的这种方案的话，也就是让弟弟得到700,自己得到1300。这种分配方案，弟弟同意的可能性过半，所谓博就在于此，不能一味去追求极端的情况。
这道题出得非常好，它告诉了我们好伙伴之间怎样合理分配利益，这是两者能长久合作的基础之一。大家都是做企业的，获取最大利润无可争议；既然我们是兄弟般的合作者，分配的方法应该让双方心服口服；不要以为只有自己是智者，也不要压人，总之要有理有节达到共赢的局面。 
15.5【C/C++编程类题目】
面试例题5：以下程序的输出结果为
#include<iostream>
main() 
{
using namespace std;
int num[5]={1,2,3,4,5};
cout<<*((int*)(&num+1)-2)<<endl;
}
A 1 B 5 C 4 D 未初始化内存，无法确定
解析：结果是4。首先num是表示一个1行5列数组，在内存中表示为一个5个元素的序列。 (int*)(&num + 1)的意思是，指向num数组的第6个元素（尽管这个元素不存在）。那么显然，(int*)(&num+1)-2所指向的数据就是num数组第4个元素了——即4。
如果存在这样的数组：int b[2][5]={1,2,3,4,5,6,7,8,9,10}，那么显然int *p=(int *)(&a+1)=b[1] ,实际上，b的数据分布还是按照 1 2 3 4 5 6 7 8 9 10分布的，所谓b[0]和b[1]实际上只是指向其中一个元素的指针。
时刻牢记这样的观点：数组名本身就是指针，再加个&，就变成了双指针，这里的双指针就是指二维数组，加1，就是数组整体加一行，ptr指向a的第6个元素 。
答案：C 
扩展知识：火烧赤壁的故事。 
0X0000（a )里含有至少两个信息，第一就是地址本身，第二个是隐藏的所指向的数组的大小， 1F000地址直接和0X0000进行通讯并为之提供服务，而不和1，2，3，4，5等直接通讯，服务的内容为0X0000的需求而和数组每个元素本身的大小没有直接关系（只是间接），1F000里也至少含有两个信息，即一地址本身，二是所服务的对象的容量。就像一艘船按序排列有1，2，3，4，5个座位，&a+1的意思是我要坐下一艘船的1号座位，而不是这艘船本身的座位。
话说曹操听了别人的计策，把800艘战船用铁链首尾相接（两船间稍有空隙）连成一条龙，准备攻打东吴，每个船上顺序排列有5个位子分别坐着是船长、舵手、枪兵、弓兵、刀兵，每个船及座位编号规律为boat1~boat800_1~5,其中boat1~800代表本船在船队中的序号，1~5代表本船上的位子，周瑜说：“把所有位子的人员按顺序逐个消灭”诸葛亮说“公瑾此言差矣，我用火攻，&a+1的方法岂不是比逐个遍历a[]更快捷？即所谓倾巢之下，安有完卵？” 周瑜同志听后道“既生瑜，何生亮”。
7.5【测试类题目】
面试例题9：Function club is used to simulate guest in a club. With 0 guests initially and 50 as max occupancy, when guests beyond limitation, they need to wait outside;when some guests leave the waiting list will decrease. The function will print out number of guests in the club and waiting outside. The function declaration as follows:
void club(int x); positive x stands for guests arrived, nagative x stands for guests left from within the club.（club函数用来模拟一个俱乐部的顾客。初始化情况下是0个顾客，俱乐部最大规模只能有50个顾客，当用户超过了最大规模，他们必须等在外面。当一些顾客离开了等待队列将减少。这个club函数将打印在俱乐部里面的顾客人数，和外面的等待人数。函数声明如下：
void club(int x);
正数x代表客人来了，负数x代表客人离开了俱乐部）
For example, club (40) prints 40,0; and then club (20) prints 50,10; and then club (-5) prints 50,5; and then club (-30) prints 25,0; and then club (-30) prints N/A; since it is impossible input.（举例而言，club (40)打印40，0；接着club (20)打印50，10；接着club (-5)打印50，5；接着club (-30)打印25，0；接着club (-30)打印N/A；因为这是不可能实现的。）
To make sure this function works as defined, we have following set of data to pass into the function and check the result are correct.(为了确保函数工作正常，我们使用下列数据来测试函数是否正常，你认为该选哪个选项)
a 60
b 20 50 -10
c 40 -30
d 60 -5 -10 -10 10
e 10 -20
f 30 10 10 10 -60
g 10 10 10
h 10 -10 10
A a d e g
B c d f g
C a c d h
D b d g h
E c d e f 
解析：本题实际上是考边界条件的测试情况。看有没有覆盖所有的边界条件。设A为已在俱乐部的成员，B为排队的人。
A B
Case1 <=0 0
Case2 <50(Up/Down) 0
Case3 50 >0(Up/Down)
对于a-h各种情况：
a 60 适用C3 
b 20 50 -10 适用C2\C3
c 40 -30 适用C2 
d 60 -5 -10 -10 10 适用C3\C2
e 10 -20 适用C1 
f 30 10 10 10 -60 适用C1\C2\C3
g 10 10 10 适用C2
h 10 -10 10 适用C2
看看条件，肯定要包含e,因为只有这个case能测N/A的情况，排除了B C D三项；再看A和E，差别在a和c、g和f的选取上，很显然，d包含a，f包含g，所以排除A，最终确定E。
答案：E
扩展知识：本题的测试代码（C++）如下：
#include <iostream> 
using namespace std; 
#define MAX_IN_CUSTOM (50)
void club(int x) 
{ 
//这里必须使用静态变量
static int in_custom = 0; // 初始情况下，内部客人为0个 
static int out_custom = 0; // 初始情况下，外部客人为0个 
if ( x > 0 ) // 来人的情况 
{ 
if ( x+in_custom > MAX_IN_CUSTOM ) // 需要将人留在外面 
{ 
out_custom += x+in_custom - MAX_IN_CUSTOM; // 多于的人留在外面 
in_custom = MAX_IN_CUSTOM; 
} 
else
{ 
out_custom = 0; in_custom += x;
} 
} 
else if(x < 0) // 走人 
{ 
x = -x; // 转正 
// 如果走的人比内部与外部之和的人还要多，那么就出现错误了！ 
// 在下面就表示为in_custom < 0 
if ( out_custom > x ) // 外面人数更多（超过要走掉的人数） 
{
out_custom -= x; 
} 
else 
{ 
in_custom -= x-out_custom; out_custom = 0;
}
} // 打印输出结果 
if ( in_custom < 0 ) 
{ 
std::cout << "N/A" << std::endl; 
} 
else 
{ 
std::cout << in_custom << "," << out_custom << endl; 
} 
} 
int main() 
{ 
club(40);
club(20);
club(-5);
club(-30);
club(-30);
return 0;
}
面试例题10：int FindMiddle(int a ,int b,int c)和int CalMiddle(int a ,int b,int c)分别为两个C函数，他们都号称能返回三个输入int 中中间大小的那个int.。你无法看到他们的源代码，你如何判断哪个函数的质量好？
答案：从编程习惯上看，笔者认为int FindMiddle(int a ,int b,int c)比较好，因为名字比较明确，就是找中间那一个数，让人一看就明白。
这道题是考软件测试的分析能力，比如一些特殊情况要特殊处理，例如：先测试0 0 0 看他们的测试结果，再测0 0 1，再随便输入一些不是数字的数，测一下他们的排错功能，如果他们的结果一样，那就该测他们的算法效率。比如可以计算10000个数测试用时： 
System.out.println(new Date().toString());
for(int i=0; i < 10000; i++){
for(int j=0; j < 10000; j++){
for(int k=0; k < 10000; k++){
FindMiddle(i, j, k);
}
}
}
System.out.println(new Date().toString())
System.out.println(new Date().toString());
for(int i=0; i < 10000; i++){
for(int j=0; j < 10000; j++){
for(int k=0; k < 10000; k++){
CalMiddle(i, j, k);
}
}
}
System.out.println(new Date().toString())
16.3【智力类题目】
面试例题4：During Olympic Games this summer, lots of people visited Beijing. However, many visitors have complains/difficulties towards trip since most hotels are very expensive or already fully booked. On the other hand, some local people are eagerly to rent out their apartments during Olympics, but don’t know how to effectively publish the information, even after Olympic, a lot of visitors and house renters are still facing the same problems（本届夏季奥运会期间,有许多人来北京观光旅游,然而许多游客不是抱怨住宿费太高就是旅馆爆满很难定到房间。同时一些当地人一方面希望奥运期间自己的房子能够出租，另一方面又不知道如何更有效地打出租广告。即使在奥运高峰之后游客和房主还会面临同样的问题。）
You’re assigned to solve this problem, and what are the action(s) you want to take for your first step （假定你被被派去解决这一问题你第一步会采取什么措施:）
A Contact some companies and ask for some initial funding（和一些公司联系请求基本基金援助）
B Work with your colleagues to do user study to figure out more on who may be your customers （和同事精诚合作分析潜在的客户群）
C Work with your Developer and Tester to build a platform to help these customers （与开发商和监测人员联系共同搭建平台为这些顾客提供援助）
D Find some of your friends outside the company, discuss about the project details, and see if they can help you.（找些业外朋友谈谈具体细节看他们能否想办法帮忙）
解析：这个题目是一个开放性的题目，以下答案仅供参考。笔者认为题目问的是你第一步是什么？那就是需求分析，找清楚我们的潜在客户群是哪些旅游者和租主。选项ACD都不是第一步要做的。
答案：B
面试例题5：You are the PM of online shopping project. This project is running well and will be released to customer in two months. But the marketing team demands to add two new features in this release and emphasize these two features are critical because our major competitors already have similar features . At the same time, you found out that all developers and tester already had work items planned for next two months. What are the right possible action(s) to take to deal with this issue?（你是一个在线购物工程的项目经理。这个项目运行正常并打算在两个月内投放市场。但是营销团队要求加入两项新功能并且强调它们是非常重要的，因为我们的主要竞争对手已经拥有了这两项新功能。可是同时你却发现所有的研发者和测试者在未来两个月内都已经安排好了工作内容。下面哪些是处理这个问题是比较可行的方法：）
1 Discuss the issue with the management team and try to request new resources to fulfill these two features(和团队集体讨论并想办法寻找新的人员去增加这两个新功能。)
2 Reject the new features request directly so that you can ship current release on time(否决增加这两个新功能的要求，以使项目按期投入使用。)
3 Decrease the testing criteria to reduce the test duration so that you can add the two new features (降低测试标准以减少测试期限，以便能增加这两个新功能。)
4 Go through all the left work items with marketing team and other partners to punt low priority items to next release(将下一个项目的工作推后，优先和销售团队以及其他拍档一起完成增加新功能的工作。)
5 Discuss this issue with stakeholders (management team, marketing team etc) and propose to postpone current release (和所有的参与项目的人讨论（管理团队以及营销团队等）并且提议延期投放该项目。)
A 1, 3 and 4 
B 2, 3 and 4
C 1, 3 and 5 
D 1, 4 and 5 
解析：2、4 是首先被否决的选项。因为这些是公司高层决定的事情，仅是一个项目经理，不可能越俎代庖做这样的决定。
你首先考虑的是，应该与管理团队和营销团队讨论，在讨论之前应该做一些准备：
1 与项目团队集体讨论，有什么可替代方案，如果要增加功能会需要多少时间和资源，对现有项目和其他项目有什么影响；
2 尽可能考察竞争对手的功能；
3 听取营销团队的功能需求；
4 如果降低测试标准会节省多少时间，对项目的稳定有多少影响做出基本评估。
综合以上情况，提出可能的几种解决方法，可以有倾向性意见，但不能做结论。重点在客观描述采用每种方案在时间、资源需求、稳定性等方面的情况，同时做好在每种方案下，怎么调度人力和资源的准备。然后在与管理团队和营销团队的讨论中，提出准备的情况，如果一次讨论不能决定，可能需要重复这些步骤再次讨论。最终应该由讨论达成共识，或者由管理团队做出决策。
因此1，3，5是可行方案。至于第3条有人觉得合适有人觉得离谱，这是由于看问题角度不同。从工程角度看，每个程序员都像艺术家一样，希望每个作品都是完美的；可站在更高层面上看呢？这里没法分析具体情况，但可以肯定的是，高层董事会有一个自身利益诉求。最看重并非一个项目是否完美（那怕获全球最佳项目奖也没用），而是项目带来的收益（效率、业务延伸、收入等等）。那么在一个项目中可能包含有很多功能，最被看重的功能可能只是项目（工作量）中的一小部分，只要确保这部分，其他部分的瑕疵可能是被容忍的，完全可以留待今后完善和修改。这样看，未必不能减少一部分测试。
答案：C