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

程序员面试攻略
作者 : (美)John Mongan,Noan Suojanen
译者 : 杨晓云 等
出版日期 : 2003-03-01
ISBN : 7-111-08556-6
定价 : 25.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 208
开本 : 16开
原书名 : Programming Interviews Exposed
原出版社:
属性分类: 店面
包含CD :
绝版 : 已绝版
图书简介

本书对程序员面试中的各种注意事项、常见题型和常用解答技巧进行了介绍,书中的面试例题都取材于顶级计算机公司的实际招聘面试题,每道例题的后面都紧跟解决方案的思路和逻辑分析步骤。它不仅能帮助求职者快速复习有关的知识,也对如何给面试考官留下一个良好而又深刻印象的面试技巧进行了指导;而这些能帮助读者获得一份真正的高薪工作。本书适合于所有正在找工作或将要找工作的程序员。

图书前言

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

作者简介

(美)John Mongan,Noan Suojanen:暂无简介

译者简介

杨晓云 等:暂无简介

图书目录

第1章  求职过程 1 1.1  与公司进行接触 1 1.2  筛选面试 3 1.3  正式面试 3 1.4  衣着 4 1.5  职业中介 4 1.6  工作邀约和磋商 5 1.7  接受或拒绝工作邀约 7 第2章 程序设计面试题的解答思路 9 2.1  面试过程 9 2.2  关于面试题 11 2.3  答题方法 11 2.4  遇到疑难时 13 2.5  对解决方案进行分析 15 第3章  链表 19 3.1  单向链表 19 3.1.1  头指针的修改 20 3.1.2  遍历 21 3.1.3  插入与删除 22 3.2  双向链表 24 3.3  循环链表 24 3.4  面试例题:堆栈的实现 25 3.5  面试例题:链表的尾指针 31 3.6  面试例题:对RemoveHead 函数进行纠错 37 3.7  面试例题:链表中的倒数第m个 元素 39 3.8  面试例题:链表的扁平化 42 3.9  面试例题:空链表与循环链表 48 第4章  树和图 53 4.1  树 53 4.1.1  二元树 54 4.1.2  二元搜索树 55 4.1.3  堆 57 4.1.4  常用的搜索方法 58 4.1.5  遍历 58 4.2  图 59 4.3  面试例题:左遍历 59 4.4  面试例题:左遍历,不使用递归 60 4.5  面试例题:最低公共祖先 63 第5章  数组与字符串 65 5.1  数组 65 5.1.1  C / C++ 66 5.1.2  Java 67 5.1.3  Perl 67 5.2  字符串 68 5.2.1  C 68 5.2.2  C++ 68 5.2.3  Java 69 5.2.4  Perl 69 5.3  面试例题:第一个无重复字符 69 5.4  面试例题:删除特定字符 72 5.5  面试例题:颠倒单词的出现顺序 76 5.6  面试例题:整数/字符串之间的转换 81 第6章 递归算法 87 6.1  面试例题:二分法搜索 91 6.2  面试例题:字符串的全排列 93 6.3  面试例题:字符串的全组合 98 6.4  面试例题:电话键单词 101 第7章 其他程序设计问题 109 7.1  计算机图形 109 7.2  位操作符 110 7.3  结构化查询语言 112 7.4  并发程序设计技术 115 7.5  面试例题:绘制八分之一圆形 117 7.6  面试例题:矩形是否重叠 120 7.7  面试例题:字节的升序存储 和降序存储方式 124 7.8  面试例题:“1”的个数 126 7.9  面试例题:简单的SQL查询 129 7.10  面试例题:公司和员工数据库 129 7.11  面试例题:最大值,不允许 使用统计功能 131 7.12  面试例题:生产者/消费者问题 132 第8章 与计数、测量、排序有关 的智力题 139 8.1  面试例题:开锁 143 8.2  面试例题:三个开关 145 8.3  面试例题:过桥 146 8.4  面试例题:找石头 149 第9章  与图形和空间有关的智力题 153 9.1  面试例题:船和码头 154 9.2  面试例题:数方块 156 9.3  面试例题:狐狸与鸭子 159 9.4  面试例题:导火索 161 9.5  面试例题:躲火车 163 第10章 计算机基础知识 165 10.1  个人简历 165 10.2  答题要点 165 10.3  面试例题:C++和Java 166 10.4  面试例题:头文件 167 10.5  面试例题:存储类别 167 10.6  面试例题:friend类 168 10.7  面试例题:类与结构 168 10.8  面试例题:父类与子类 169 10.9  面试例题:参数传递 170 10.10  面试例题:宏与内嵌函数 171 10.11  面试例题:继承 173 10.12  面试例题:面向对象的程 序设计 173 10.13  面试例题:与线程有关的程序 设计问题 174 10.14  面试例题:废弃内存的自动 回收 175 10.15  面试例题:32位操作系统 177 10.16  面试例题:网络性能 177 10.17  面试例题:高速磁盘缓存 177 10.18  面试例题:数据库的优点 178 10.19  面试例题:加密技术 178 10.20  面试例题:新的加密算法 179 10.21  面试例题:哈希表与二元搜索树 179 第11章  非技术问题 181 11.1  答题要点 181 11.2  问题:你打算从事哪方面 的工作? 182 11.3  问题:你最喜欢的程序设计 语言是哪一种? 183 11.4  问题:你的工作习惯是怎样的? 184 11.5  问题:可以说说你的个人经历吗? 184 11.6  问题:你的职业目标是什么? 184 11.7  问题:你为什么要换工作? 184 11.8  问题:你希望拿多少报酬? 185 11.9  问题:你以前的报酬水平 是多少? 187 11.10  问题:我们为什么要雇佣你? 188 11.11  问题:你有什么问题想问我吗? 188 附录  写个人简历的方法 189

教学资源推荐
作者: 刘海燕 荆涛 主编 王子强 武卉明 杨健康 周睿 编著
作者: Bjarne Stroustrup
作者: (美)Martin Kalin
参考读物推荐
作者: 刘宇 崔燕红 郭师光 党习歌 著
作者: Bruce A.Tate
作者: Elliotte Rusty Harold
作者: Mark Ramm;Kevin Dangoor;Gigi Sayfan