基本信息
- 原书名:Programming Interviews Exposed Secrets to Landing Your Next Job
- 原出版社: John Wiley & Sons

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