您所在的位置: 首页>>读书频道>>管理与生活>>技术职场>>

程序员面试攻略 前言

http://book.51cto.com  2008-02-20 13:08  John Mongan等著,王海鹏译  机械工业出版社华章公司  我要评论(0)
  • 摘要:《程序员面试攻略》提供了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

【责任编辑:雪花 TEL:(010)68476606】

回书目      下一节
求职必杀技 决战面试官
程序员如何成长?
深入Vista应用程序开发
Ruby on Rails 社区网站开发
ASP.NET从入门到精通
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有