首页>参考读物>计算机科学与技术>软件与程序设计

程序员面试攻略 第2版
作者 : John Mongan, Noah Suojanen, Eric Giguere
译者 : 王海鹏
出版日期 : 2007-12-19
ISBN : 7-111-22678-9
定价 : 29.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 218
开本 : 16开
原书名 : Programming Interviews Exposed Secrets to Landing Your Next Job Second edition
原出版社: Wiley
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

在面试过程中您会感到压力,但通过恰当的准备,您可以得到梦想中的工作。这本经典书籍介绍在美国顶级软件公司和计算机公司面试中的真实情况,为您在各种情况下成功地通过面试提供帮助。本书的作者一步一步地引导您解决一些新问题和复杂的智力难题,这些问题都是他们在最近的技术面试中遇到过的。
  本书提供了50个面试场景,并且深入分析了各种解决方案。解决问题的过程描述得很清楚,您在需要的时候能够很容易地应用这些过程。您还会看到一些专家提示,包括问哪些问题、如何解决问题以及在受阻时应该怎样做。所有这些都将帮助您在面试中更好地发挥,获得想要的工作。

  您在本书中将学到:
  ■ 如何有效地申请职位。
  ■ 准备整个程序设计面试过程。
  ■ 如何找到最适合您的程序设计职位。
  ■ 选择解决方案的策略以及表明您的能力。
  ■ 如何改进面试技巧,从而对任何问题或情况都能做出反应。
  ■ 知识问题、逻辑难题和程序设计问题的解答技巧。

图书特色

图书前言

John和Noah或许没有想过他们当时是在写一本长销书,但是这本书现在已成为了长销书。所以如何来更新一本该领域的经典书籍呢?当然要非常认真!
  第1版的拥护者们会很高兴地发现,第2版主要是更新,没有完全重写。当然,程序设计例题得到了更新,以反映自第1版以来的近十年的时间内所发生的变化。第1版的例子几乎完全是用C和C++编写的,现在变成了用C++、Java、C#来编写—虽然语言在大多数情况下关系不大,因为算法一般只需要进行一点语法上的改动,就能从一种语言转到另一种语言。对于有经验的程序员来说,所有的例题都很容易理解。
  新版增加了一些内容,但绝大多数原来的例题都得到了保留,只是在必要时进行了一些说明和修正。此外,现在使用了包容式语言,以反映程序员和面试考官有男有女这一事实。出于为本书的组织结构考虑,加入了一些标题。
  第1版可亲的风格没有改变。本书易于阅读,对准备整个程序设计面试过程有很大的帮助。这本出色的书要归功于John和Noah。我们都希望您能喜欢这个新版本。如果您对本书有问题或建议,请通过authors@piexposed.com用电子邮件与我们联系。关于本书的更新和更多的信息,请访问本书的官方网站  http://www.piexposed.com。

  Eric Gigu弐e
  第1版前言
  如果您像我们一样,通常就不会读前言。但这本书的前言很有用,因此希望您能破例一次好好读一下。如果您对前言确实没有兴趣,我们希望您能看完下面这句话:您对本书钻研得越深,收获就越大。如果您泛泛地阅读本书,您会学到一些东西,但是如果您尝试着在读答案前,自己先试着解决问题,那么您收获会更多。
  当您应聘一份程序设计、软件开发或技术咨询方面的工作时,招聘方几乎总是会安排一次面试来考察您的程序设计能力。我们写作本书的目的就是希望能够帮助大家顺利地通过这类面试。程序设计面试的目的是为了考察应聘人员的程序设计水平和动手能力,其过程与传统意义上的求职面试并没有多少相似之处,所以传统的应聘秘笈和面试技巧在此没什么用。程序设计面试题以程序设计问题、智力难题以及各种与计算机有关的技术问题为主。本书将对几种常见的程序设计面试题进行分析研究,并通过一些取材真实的面试例题向大家演示一下如何才能最好地回答这些问题。
  看到这里,读者可能会产生这样几个疑问:作为本书的作者,我们都是些什么人?是谁让我们写这本书的?我们两人都是刚毕业不久的研究生,在过去的几年里,我们参加了许多场面试。从老牌大公司的技术咨询职位到新兴公司的编写设备驱动程序的职位,我们面试过的工作岗位可以说是五花八门,这本书就是我们根据自己亲身参加过的各种面试(有成功也有失败)总结出来的。我们认为,这是写作本书的基础。说实话,我们并不清楚负责招聘工作的人力资源部门主管对程序设计面试工作都有哪些想法,我们也不清楚猎头公司将依据什么样的标准来评估应聘人员在程序设计面试中的表现。但在读完本书之后,相信大家都会对美国顶尖的软件和计算机公司里的程序面试情况有一个比较实际的了解,并知道自己应该去做些什么来赢得自己想要的那份工作。
  根据我们自己的亲身经历,我们认为现在的程序设计面试工作还有许多地方需要改进。现在的做法过于偏重考察应聘人员解答智力难题或者类似问题的能力,忽视了对其知识面和知识深度的考察,因此很多在软件行业中取得成功所必须具备的重要素质都无法得到准确地衡量和评估。
  需要特别说明的是,本书中的面试题目没有一道是我们虚构出来的,这些题全部取材于我们此前参加过的面试。换句话说,类似的题目类型和难度很可能会出现在各位读者今后参加的某次程序设计面试中。但大家同时也要明白,这本书里的问题只是程序设计面试中一些比较有代表性的题目,而不是一个包罗万象的习题集。如果您想靠死记硬背本书的例题和答案来通过程序设计面试,就很可能弄巧成拙。在面试中您可能会遇到这本书里的问题,但您不能抱有这样的幻想。程序设计面试题本来就是千变万化的,而一位聪明的考官在看过本书之后,肯定不会再用本书中的题目。可话又说回来,程序设计面试考题的范围和类型也就是那么多,想变化也变化不到哪里去。只要您不是死抠本书中给出的例题,而是对它们所代表的试题类型进行研究,那么无论在程序设计面试中遇到什么样的题目,您肯定都能应付自如。
  为了帮助大家提高解决问题的能力,我们采用了一种循序渐进的办法。首先,根据实际情况,我们会在给出面试考题之前先对有关的重要概念进行复习。其次,我们会把解决问题的整个思路向大家解释清楚,而不是简单地直接给出问题的答案。我们发现,从例题的使用方面讲,本书以外的其他教科书或习题集几乎全都采用了另一种套路:先列出一个问题,接着马上给出其答案,然后再解释那个答案为什么是正确的。以我们个人的体会来说,这种套路往往不能给读者以最大的帮助:读者能够看懂某个具体的答案并知道它为什么是正确的,但很难了解和把握作者得出有关答案的思路,不容易在遇到与例题类似的问题时做出正确的分析和判断。为了避免上述弊病,本书采用了一种循序渐进的解题方法,而我们希望本书中的解题思路不仅能够让大家知道什么是正确的解决方案,还能让大家明白怎样才能得出正确的解决方案。
  只看不动手是学不到真本领的。如果您想从本书中得到的收获最大,就必须亲自动手去尝试解决书中的每一道例题。我们建议大家采用下面的学习方法:看过例题之后,先把书放在一边并自己动手去寻找答案。如果您中途卡住了,再回过头来研究书中的解决方案。为了让大家开动脑筋,这本书里所有例题的答案都安排在有关内容的最末尾,所以读者完全不必担心我们会提前“泄密”,让大家“意外地”看到答案。在看过足够多的内容并得到足够多的提示之后,读者应该再次把这本书放在一边并继续开动自己的脑筋。如此重复,直到彻底解决某个问题为止。诸者通过自己努力而得出的解决方案越多,对有关问题的理解也就越透彻。这种学习方法还有另外一个好处,那就是它与程序设计面试的实际过程非常相似:您必须完全依靠自己来解决面试问题,但在需要的时候,面试考官会给出必要的提示。
  程序设计是一种难度极大的技术性艺术,只通过一本书就把计算机科学和程序设计工作所涉及的各种细节全都介绍给大家是根本不可能的。因此阅读本书需要一定基础。我们希望本书读者的计算机知识不低于大学计算机系一年级或二年级学生的水平。具体地说,我们希望读者1) 能够熟练地使用C语言进行编程;2) 有过使用C++或Java进行面向对象编程的经验;3) 了解计算机体系结构和计算机科学理论方面的基础内容。这是参加程序开发工作最小的要求,所以大多数面试官都会有类似的预期。如果发现自己在上述几个方面有所欠缺,请务必在找工作和参加程序设计面试之前把功课补上。
  在本书的读者中,肯定会有很多人在计算机方面的学识与经验大大超出我们刚才提出的最小要求。如果您就是其中的一员,那么您可能对本书里的一些高级主题—比如数据库、图形处理、并发计算以及Perl语言等—更感兴趣。但千万不要因为自己的经验比较丰富就忽视了基础性的概念和试题。不管您的简历写得多好,面试考官仍会从最基本的问题开始提问。
  我们已经尽了最大的努力来保证这本书里的信息是正确无误的。所有的程序代码都经过了编译和测试。但就像读者在你们自己的程序设计工作中遇到的情况一样,程序设计漏洞和错误是在所难免的。一旦发现或者得知这类错误,我们会立刻把它们公布在http://www.wiley.com/combooks/programminginterview/上。
  我们相信,本书在您寻找新工作时一定有所帮助。同时,我们还希望本书中的面试例题分析和解决方案能够对读者找工作有所启发。如果您想把您的读后感,对书中某个具体例题的看法,或者最近遇到的程序设计面试题等告诉我们,我们将非常欢迎。我们的电子邮件是:programminginterview@wiley.com。
预祝大家都能找到一份满意的工作!

  John和Noah

作者简介

John Mongan, Noah Suojanen, Eric Giguere:暂无简介

译者简介

王海鹏:暂无简介

译者序

求职和面试的过程是一个沟通的过程。沟通具有很强的目的性,因此必定是经过仔细思考和精心准备的。求职者需要通过有限的文字,有限的面谈机会,达到取得工作机会的目的。
  对于软件开发本身来说,沟通也是极为重要的,甚至是最重要的因素。有人曾说,软件项目成功的要点有三个:沟通、沟通、沟通。所以在程序员的面试中,沟通能力和程序设计技能是主要考察的两个方面。如果在求职过程中,求职者在沟通能力这一项上得分不高,那成功的机会就大大降低了。
  本书包含了求职沟通和程序设计技能两个方面。在程序设计技能方面,本书介绍了作为一名程序员必须具备的一些知识。以简洁而有实例的方式介绍程序员的基本功,读来颇能给人以启发。而对沟通的强调,则是本书的亮点。您可以看到如何编写一份重点突出的个人简历,如何与猎头公司和人力资源代表打交道,在面试时如何与面试考官进行沟通等内容。
  许多成功的沟通都有一个共同点,就是沟通的一方向对方表明双方的利益是一致的。经过沟通,最后双方在这一点上达成共识。成功的求职和面试也是这样,求职者需要通过沟通,让面试考官相信他可以给公司带来的价值,相信录用他对大家都有好处。
  参加本书翻译工作的人员除封面署名外还有:贾立群、王海燕、李国安、周建鸣、范俊、张海洲、谢伟奇、林冀、钱立强、甘莉萍。
  本书不仅适合求职者,也适合人力资源负责人和项目经理兼面试考官。祝大家能享受到专业沟通的乐趣。

图书目录

译者序
第2版前言
第1版前言

第1章  求职之前 1
1.1  了解自己 1
1.2  了解市场 3
1.3  掌握市场需要的技能 4
1.4  处理自己的在线资料 6
1.5  本章小结 6
第2章  求职过程 7
2.1  寻找公司并进行联系 7
2.2  面试过程 10
2.3  招聘者的角色 11
2.4  工作邀约和协商 12
2.5  本章小结 15
第3章  编程问题的解答思路 16
3.1  面试过程 16
3.2  解决问题 19
3.3  分析解决方案 21
3.4  本章小结 25
第4章  链表 26
4.1  链表的种类 26
4.2  基本链表操作 28
4.3  链表问题 31
4.4  本章小结 54
第5章  树和图 55
5.1  树 55
5.2  图 61
5.3  二叉树问题 62
5.4  本章小结 67
第6章  数组和字符串 68
6.1  数组 68
6.2  字符串 72
6.3  数组和字符串问题 74
6.4  本章小结 90
第7章  递归 92
7.1  理解递归 92
7.2  递归问题 95
7.3  本章小结 109
第8章  并发 110
8.1 基本线程概念 110
8.2  并发问题 115
8.3  哲学家进餐 120
8.4  本章小结 123
第9章  面向对象编程 124
9.1  基础知识 124
9.2  构造与析构 127
9.3  面向对象编程问题 127
9.4  本章小结 132
第10章  数据库 133
10.1  数据库基础 133
10.2  数据库问题 138
10.3  本章小结 142
第11章  其他编程主题 143
11.1  图形学 143
11.2  位操作 144
11.3  图形学和位操作问题 146
11.4  本章小结 157
第12章  计数、测量和排序难题 158
12.1  处理难题 158
12.2  难题 162
12.3  本章小结 172
第13章  图形和空间方面的难题 173
13.1  先画下来 173
13.2  图形和空间问题 174
13.3  本章小结 184
第14章  知识问题 185
14.1  准备 185
14.2  问题 186
14.3  本章小结 191
第15章  非技术问题 192
15.1  为什么要问非技术问题 192
15.2  问题 193
15.3  本章小结 199
第16章  结束语 200
附录A  简历 201

教学资源推荐
作者: 皮德常
作者: 顾元刚
作者: Jie Wu
作者: 杨树林 胡洁萍 编著
参考读物推荐
作者: (美)Joshua Bloch
作者: 韦青 赵健 王芷 崔宏禹 等著
作者: 谢型果 严军 著
作者: 冯庆东 李根福 等编著