企业测试题研究及其对编程教育的启示

2010-04-16 09:15郭剑孙力娟朱立华朱旻如肖甫
电脑与电信 2010年6期
关键词:测试题编程语法

郭剑孙力娟朱立华朱旻如肖甫

(南京邮电大学,江苏南京210003)

1.引言

编程水平测试是大多数理工科毕业生求职时必经的环节之一,尤其是对电子类、信息类、通信类和计算机类等专业的学生而言。这些测试一般通过笔试或面试等方式进行。录用之后,一些企业还会进行编程方面的入职测试,以此作为考察员工水平和开展岗位定编的依据。因此,编程水平的高低已成为众多企业选择、衡量人才的重要标准之一。

但是据我们调查,从学校这一方面来看,编程教学却不尽如人意,与企业的要求尚有一定差距。目前的编程教育,普遍以学生学会语法、掌握软件或通过计算机等级考试等为主要目标,缺乏应用能力和实践能力的培养。学生的动手能力不强,面对这些测试题时普遍感到束手无策,成绩很不理想。

针对这一情况,我们从四年前开始搜集、整理各种编程相关的笔试题、面试题和入职测试题,并进行了系统的分析与研究。我们的目的是,通过对这些题目的整理与分析,确定企业的人才技能需求,查找编程教育与企业需求的差距,并在此基础上,对编程教育进行改革和改进,以提高教学的效果,提升学生的能力。

2.研究的必要性

学校的编程教育应当从企业的实际需求出发,培养的人才应当符合企业的需求。但从目前搜集的资料来看,针对测试题展开的研究还比较少,相关的教育类课题和项目并不多,发表的研究成果更是缺乏。仅仅在部分网络社区有一些关于测试题的内容,但也仅限于语法层面的讨论,编程教育涉及不深。我们认为,加强对测试题的研究,具有重要的意义,主要体现在如下几点:

第一,这些测试题直接代表了企业对人才的编程能力要求,并且这些题目本身也与企业所在的行业以及企业自身的业务技术方向息息相关。因此,我们可以通过这些题目来了解企业的技术方向和编程能力需求。另外,通过对这些题目及其所代表技术背景的解读,可以指引我们编程能力培养的方向,改进相关课程。

第二,这些题目不同于平时书后的练习题,与计算机等级考试试题也大为不同。此类试题相对短小精致,考察的知识点较多,综合性相当高,具有很强的代表性。加强对这些题目的研究,可以为相关课程服务,并丰富这些课程的题库,从而提高此类课程的教学水平。

第三,对这类试题进行研究,具有短期和长期效应。从短期来看,研究成果可以直接为毕业班学生服务,提高他们的应试技巧;从长期来看,可以提高学生的编程能力,使学校的人才培养更有针对性,从而使学校毕业生素质更上一个台阶。

3.测试题的分析与解读

我们搜集的题目主要来自于部分合作企业、参加笔试的毕业班学生和一些编程网站。由于企业必须在很短的时间内较为全面地考察一个学生的编程能力,包括编程语言、数据结构、算法、操作系统、软件工程、网络等方面的知识,因此,这些题目一般比较简短,考察的知识点却很多。通过归类和分析,可以发现这些测试题具有很典型的特征,下面逐一进行讨论。

(1)行业相关性强

这是由企业的行业所决定的。企业所在的行业决定了它需要哪方面的人才,而从题目中也能看到这种需求。

例1:下面程序的输出结果是____。(台湾某芯片企业2007年测试题)

例1考察的知识点是unsigned类型。这种类型在绝大多数学校中忽略不讲或是一带而过。而对于部分硬件企业来讲,unsigned类型在编程中大量使用。因此,学生在碰到这类题目出错的概率很高。类似的知识点还有位运算、某些特殊的指针等。

(2)注重程序风格

在IT界,出于代码传承和维护的需要,公司普遍比较重视代码的可读性。这也就需要代码有比较好的编程风格。好的程序风格不仅可读性强,而且代码的安全性高,能够避免一些错误。所以不少公司在测试学生的编程水平时,评判标准包含不少编程风格方面的分值,有的甚至直接以此作为测试内容。

例2:下面两段程序中a是一个变量,请进行比较两段代码的优劣。(美国某嵌入式公司2005测试题)

例2中的两段程序功能相同,但如果程序员在输入时误把“==”写成“=”,则第一种编译器可以检查出来,第二种编译器则无法检查。因此第一种要好。这种题其背后就是考察的学生的编程风格。跟语法没有多大关系。与此类似,变量命名规范、空行、缩进、注释等也是企业所看重的。

(3)注重基本功

熟练掌握常见的语法和算法是对编程人员的基本要求,企业对此也极为看重,并且更注重的是对知识的理解而非识记。

例3下面程序的输出结果是____。(韩国某电子企业2006年测试题)

for语句是C语言的基本知识点之一。在例3中,for语句的第二子句与第三子句与通常的for语句不同,是颠倒的。但根据“第二子句为真则执行循环体,否则不执行”的原则来判断,此题还是可以做出来的。如果基本功不够扎实,很可能认为此题有语法错误。

(4)注重知识点的融会贯通

许多企业要求招收的员工有比较全面的知识体系和知识储备,并了解编程语言的发展、演变和趋势,因此测试题中这方面的内容也不少。

例4请评价C++语言中多重继承的优点和缺陷。(国内某运营商2009年测试题)

例5 C++中有了malloc/free,为什么还需要new/delete。(国内某通信设备商2008年测试题)

这两题要求应试者对C、C++的一些语法机制及其演化过程有比较全面的认识和深刻的理解,而这些内容在授课时通常都会被忽略掉。学生对这些内容接触不多,不能从根本上掌握这些内容,综合能力也就得不到提高。

(5)注重多学科的贯通

由于编程能力要素包括编程语言、算法、数据结构、编译原理等多方面的内容,因此,企业在考察学生编程能力时,并不局限于语法与算法,而是从多方面进行考察。因此,一些题目表面上看起来是编程语言方面的,实则需要其它科目的知识。

例6下面三条语句,效率从高到低依次是____。(德国某软件公司2008年测试题)

从语法上来说,例6中的三条语句没有多少差别。然而从汇编语言的角度来看,三条语句的效率还是各有高低。此题看似简单,实际上要求应试者对汇编语言和编译原理有较好的理解和掌握。

(6)注重应用能力

综合应用能力是创新型人才的基本素质之一。不少企业对此类人才需求较高,在测试题方面也有体现。

例7编写一个程序,使Windows任务管理器中的CPU使用记录曲线成为正弦曲线。(美国某软件公司2006年测试题)

该题目需要应试者有较高的编程素养,能够综合应用Windows编程、操作系统线程调度等方面的知识。此题目的难度相当大,在测试时甚至允许应试者使用网络。但即便如此,很多应试者遇到此题时仍然感到没有思路,无从下手。

4.对教学的启示

许多企业的测试题往往同时包含上述多个特点,而现有编程教育培养出来的学生并不能很好地应对这些题目。这是因为在许多高校中,较为注重的是语言和语法,考核指标单一,综合程度较低,导致学生的动手编程能力较低,与企业的需求脱节较大。我们认为,可以从以下几个方面对高校的编程教育进行改革。

(1)加强针对性,多与企业、业界进行交流。多了解用人单位的人才需求,在此基础上对教学内容和教学方法进行更新与改革。这样才能使培养出来的学生需求符合社会与行业的需求。

(2)改革编程教学的目标。将教学重点从知识传授为中心转变为以能力培养为中心,使得学生不仅仅是占有知识,而是能够主动地运用知识,以此加强学生动手能力和综合能力的培养。

(3)改进编程教学的课程体系。将关键技能和编程要素的培养贯穿于整个编程教育之中,使得整个课程体系成为一个有机的整体。此外,还需要多开设一些综合性课程和实践性课程,帮助学生进行知识点的梳理以及实际技能的锻炼。

5.结束语

高校的编程教育与企业的人才需求还存在着脱节,在学生的能力培养方面还存在着一些薄弱环节。加强对企业测试题的研究,以此来指导编程教学改革,不仅可以提升教学质量,提高学生编程水平和学校就业率,而且可以促进学校与企业的交流,使得学校培养的人才更好地符合社会需求。因此,开展此类研究具有重要的意义和价值。

[1]李晓明,陈平,张铭,朱敏悦.关于计算机人才需求的调研报告[J].计算机教育,2004,8:11-18.

[2]田孟红.培养学生编程能力的实践与思考[J].文山师范高等专科学校学报,2004,17(4):367-369.

[3]李晖,张世彤.如何在计算机教学中培养学生的编程能力[J].辽宁教育行政学院学报,2008,25(12):78-79.

[4]李永军,怎样提高学生的编程能力[J].文教资料,2006,4:186-187.

[5]郑立华,张莉,王奇.在C程序设计教学中注重培养学生的综合编程能力[J].计算机教育,2005,10:35-37.

[6]梁肇新.编程高手箴言[M].北京:电子工业出版社,2003.

猜你喜欢
测试题编程语法
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
高一化学期末测试题(一)
高一化学期末测试题(二)
纺织机上诞生的编程
跟踪导练(二)4
Book 5 Unit 1~Unit 3语法巩固练习
《一次函数》测试题
必修1、必修2第二轮复习测试题