频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

3.1 面试过程

作者: John Mongan等著,王海鹏译 出处:机械工业出版社华章公司  2008-02-20 13:26    砖    好    评论   进入论坛
阅读提示:《程序员面试攻略》提供了50个面试场景,并且深入分析了各种解决方案。第三章主要讲的是编程问题的解答思路,本小节告诉我们编码问题的面试过程。

第 3 章 编程问题的解答思路

编写代码通常是面试中的实质内容。这是您展示自己能够胜任这项工作的机会。这些问题是面试过程中的重头戏,大多数计算机公司和软件公司以此来决定是否雇用应聘者。许多公司只会给参加面试的应聘者中不到十分之一的人员提供工作邀约。这些编程问题通常很难。如果每个人(或者大多数人)都能很快地回答某道题目,那么公司就不会再用它,因为它不能反映出应聘者的差距。许多问题都需要一个小时的时间才能解决,所以如果您不能马上找到答案也不必沮丧。几乎没有人能马上找到答案。 这些面试问题很难!有些问题的目的只是想看看您在不能立即找到解决方案时如何处理。

3.1   面试过程

编码问题的要点是确定您是否能编码以及是否能做得多好。它是面试中最重要的部分,因为您写的代码和提供给招聘者的答案将在很大程度上决定他们是否推荐您得到这个职位。

面试场景

您通常需要当着面试考官的面来解答问题。他会给您一支记号笔和一块白板(或者是纸和笔),并要求您写一些代码。面试考官可能会要求您在写出代码之前先对问题进行一些分析和说明。一般会要求您编写一个函数或一个方法,但有时候您需要写一个类定义或一系列相关的代码模块。无论是哪种情况,您都需要写一些代码,可能是用真正的编码语言或某种伪代码。

面试问题

面试考官提出的问题有非常具体的要求。它们要比较短,这样就能够比较快地解释和解决。但它们又必须比较复杂,这样就不是每个人都能解决。因此,不太可能向您提出实际项目中的问题。几乎所有具有价值的实际项目中的问题都需要很长的时间来解释,更不用说解决的时间了。这在面试中是不能考虑的。许多面试问题需要一些技巧,或不太常用的语言特性。

这些问题通常禁止您使用最常用的方式来完成工作,或者不允许您使用理想的数据结构。例如,您可能遇到这样的问题:“写一个函数确定两个整数是否相等,不能使用比较运算符。” 这纯粹是一个愚蠢的、故意制造的问题。几乎所有的编程语言都有比较两个整数的方法。但是如果您的回答是“这是一个愚蠢的问题。我一直使用等于操作符。我从来没遇到过这个问题”,那您可能搞错了方向。实际上,如果您这样回答就失败了。面试考官是在寻找另一种比较两个整数的方法(提示:使用位操作符)。

您可以描述解决问题的更好的方法,但解决问题时只要按要求做就可以了。例如,如果要求您利用哈希表解决某个问题,您可以说:“使用二分查找树会更容易一些,因为这更容易取得大的元素,但是让我们来看看我如何用哈希表来解决这个问题…” 许多问题包含奇怪的限制条件,使用到不常用的语言特征,看起来愚蠢而造作。您必须遵守游戏规则。真实项目的编程很少是没有任何限制的。能够在特定的限制条件下工作是软件开发的一项重要技能。 问题常常会越来越难。这不是一个严格的规则,但您可以预期,随着您答对的问题越来越多,问题会变得越来越难。通常,不同的面试考官相互之间会交流他们所问的问题,您能回答的问题以及您不能回答的问题。如果您回答了前面的面试考官的所有问题,但被后来更难的问题难住,这可能表明前面的面试考官对您的回答留有深刻的印象。

使用哪种语言

如果您申请的职位有特定的语言要求,您就应该了解这些语言,并用它们来解决遇到的问题。如果您申请的是一般的编程或开发职位,只要对C#、Java和C++等主流语言有全面的了解就可以了,虽然熟悉C语言在很多情况下也是有用的。您的面试考官可能允许您使用其他流行的语言,如JavaScript、PHP或Perl。如果让您选择,您就选择最熟悉的语言,但要预计到有些问题可能要求用特定的语言来解决。面试考官不太会同意您使用非主流的语言,如Lisp、Python、Tcl、Prolog、COBOL或Fortran,但如果您是其中一种语言的专家,不妨问一问是否可以采用它。 在您去面试之前,要确保自己完全了解了将要使用的这种语言的用法和语法。例如,如果您已经有几年没用C++写过程序了,您至少应该翻阅一下一本好的C++参考指南,重新熟悉一下这门语言。

关于选择语言还有最后一个建议:不论是否正确,许多人认为Visual Basic是一种非主流语言。除非您应聘的职位要求您使用这种语言,否则最好避免在面试中使用它。但是情况在变化,所以请注意当前的语言流行趋势。例如几年前,我们可以说JavaScript是一种非主流语言,但随着AJAX(Asynchronous JavaScript and XML的缩写)成为开发基于浏览器的响应式应用程序的核心技术,业界改变了对JavaScript的看法。

关键是互动

您在面试中编写的代码可能是面试考官能看到的您的代码的惟一例子。如果您写的代码很丑陋,面试考官会认为您写的代码都很丑陋。这是您展示自己最好的代码的机会。请花一些时间让代码变得健壮而优美。

请复习您打算使用的语言,写出自己最好的代码。

编程问题既是为了看看您写的代码有多好,也是为了看看您是怎样解决问题的。如果所有的面试考官都是想了解您的编程能力,他们就会给您一张写有问题的考卷,过一个小时再回来看看您做得怎样,就像在编程竞赛中一样。面试考官想看的是您在处理编程问题的各个阶段的表现。

面试中的问题的解决过程是高度互动的,如果您遇到困难,面试考官通常会通过一系列的暗示,引导您得到正确的答案。当然,您需要的帮助越少,他们对您的印象就越好,但在这个过程中表现出智慧,对得到的暗示作出良好的反应也是非常重要的。

即使您以前曾遇到过这个问题,所以立刻就知道了问题的答案,也不要脱口而出。将答案分解为具体的步骤,并解释每一步后面的思考过程。重要的是向面试考官展示您理解了该问题背后的概念,而不是展示您记住了某个编程难题的答案。

如果您知道这个问题的相关信息,即使这对当前的问题并不是直接适用,您可能想在答题过程中说出来,以展示您的一般编程知识。在回答这些问题时,要展示出您不只是一个书呆子式的程序员。要展示出您在这个过程中很有逻辑,具有计算机的一般知识,并能够很好地沟通。

要多说话!要随时解释您在做什么!否则,面试考官就不知道您是如何解决复杂的编程问题的。

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

回书目   上一节   下一节
专题
程序员如何成长?
程序员面试攻略 第2版
微软出价446亿美元收购雅虎
Use Case入门与实例
UML嵌入式设计
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本