小议编写面试高质量代码

小议编写面试高质量代码


2024年4月14日发(作者:)

小议编写面试高质量代码

张纪生成都航空职业技术学院

【摘要】本文就面试时要求编写高质量代码提出了应对方案和个

人的见解,以帮助程序员从容面对编写代码的情况。

【关键词】代码面试高质量程序员

在职业生涯中难免要接受编程面试。有些程序员由于平时没有养

成良好的编程习惯,在面试时写出的代码质量不高,最终遗憾地与心

仪的公司和职位失之交臂。因此,如何在面试时能写出高质量的代码,

是很多程序员关心的问题。

一、代码的规范性面试官是根据应聘者写出的代码来决定是否录

用一个应聘者的。

应聘者首先要把代码写得规范,才可以避免很多低级错误。如果

代码写得不够规范,会影响面试官阅读代码的兴致,至少印象分会打

折扣。

书写、布局和命名都决定着代码的规范性。

规范的代码书写清晰。绝大部分面试都要求应聘者在白纸或者白

板上书写。由于现代人已经习惯了敲键盘打字,手写变得越发不习惯。

因此写出来的字潦草难辨。虽然应聘者没有必要为了面试特意去

练字,但在面试过程中减慢写字速度、尽量把每个字母写清楚还是很

有必要的。不用担心没有时间去写代码。通常编程面试的代码量都不

会超过50行,书写不用花多少时间,关键是在写代码之前形成清晰

的思路并能把思路用编程语言清楚地书写出来。

规范的代码布局清晰。平时程序员在集成开发环境如Visua

lStudio里面写代码,依靠专业工具调整代码的布局,加入合

理的缩进并让括号对齐成对呈现。离开这些工具,应聘者就要格外注

意布局问题。

当循环、判断较多逻辑较复杂时,缩进的层次可能比较多。如果

布局不够清晰,缩进也不能体现体现代码的逻辑,这样的代码将会让

人头晕脑胀。

规范的代码命名合理。很多初学编程的人在写代码时总是习惯用

最简单的名字来命名,变量名是i、j、k,函数名是f、g、h。

由于这样的名字不能告诉读者对应的变量或者函数的意义,代码一长

就会变得非常晦涩难懂。强烈建议应聘者在写代码时,用完整的英文

单词组合命名变量和函数,比如函数需要传入一个二叉树的根结点作

为参数,则可以把该参数命名为BinaryTreeNode*。

Root。不要因为这样会多写几个字母而觉得麻烦。如果一眼

能看出变量、函数的用途,应聘者就能避免自己搞混淆而犯一些低级

的错误。同时合理的命名也能让面试官一眼就能读懂代码的意图,而

不是让他去猜变量到底是数组中的最大值还是最小值。

二、代码的完整性在面试的过程中,面试官会非常关注应聘者考

虑问题是否周全。

面试官通过检查代码是否完整来考查应聘者的思维是否全面。通

常面试官会检查应聘者的代码是否完成了基本功能、输入边界值是否

能得到正确的输出、是否对各种不合规范的非法输入做出了合理的错

误处理。

三、利用三种测试保证代码的完整性应聘者在写代码之前,首先

要把可能的输入都想清楚,从而避免在程序中出现各种各样的质量漏

洞。也就是说在编码之前要考虑单元测试。如果能够设计全面的单元

测试用例并在代码中体现出来,那么写出的代码自然也就是完整正确

的了。通常程序员可以从功能测试、边界测试和负面测试三方面设计

测试用例,以确保代码的完整性。

首先要考虑的普通功能测试的测试用例。应聘者首先要保证写出

的代码能够完成面试官要求的基本功能。比如面试题要求完成的功能

是把字符串转换成整数,应聘者就可以考虑输入字符串“123”来

测试自己写的代码。这里要把零、正数(比如123)和负数(比如

-123)都考虑进去。

考虑功能测试时,应聘者要尽量突破常规思维的限制,避免忽视

某些隐含的功能需求。比如“打印从1到最大的n位数”,很多人觉

得很简单。最大的3位数是999、最大的4位数是9999。这些

数字很容易就能算出来。但最大的n位数都能用int型表示吗?如

果超出int的范围可以考虑longlong类型。超出long

long能够表示的范围呢?面试官是不是要求考虑任意大的数

字?如果面试官确认题目要求的是任意大的数字,那么这个题目就是

一个大数问题。此时需要特殊的数据结构来表示数字,比如用字符串

或者数组来表示大的数字,才能确保不会溢出。其次需要考虑各种边

界值的测试用例。__________很多代码都包含有循环或者递归。如果

代码是基于循环,那么结束循环的边界条件是否正确?基于循环的代

码要特别注意开区间和闭区间的使用(也就是区分<与<=、>与>

=)。如果代码是基于递归,递归终止的边界值是否正确?这些都是

边界测试时要考虑的用例。还是以字符串转换成整数的问题为例,应

聘者写出的代码应该确保能够正确转换最大的正整数和最小的负整

数。

再次还需要考虑各种可能的错误的输入,也就是负面测试的测试

用例。应聘者写出的函数除了要顺利地完成要求的功能之外,当输入

不符合要求时,面试官还希望他能做出合理的错误处理。在设计把字

符串转换成整数的函数时,应聘者就要考虑当输入的字符串不是一个

数字,比如“1a2b3c”,怎么告诉函数的调用者这个输入是非

法的。

在面试时,最简单也最实用的防御性编程就是在函数入口添加代

码以验证用户输入是否符合要求。通常面试要求的是写一两个函数。

应聘者需要格外关注这些函数的输入参数。如果输入的是一个指

针。

那指针是空指针怎么办?如果输入的是一个字符串,那么字符串

的内容为空怎么办?如果应聘者能把这些问题都提前考虑到,并作相

应的处理,那么面试官就会觉得他有防御性编程的习惯,能够写出鲁

棒的软件。

参考文献:

孙伟张忠能,ETL架构研究,:《微型电脑应用》2005年

第3期,2005

黄健吴延海刘晓佩常淑娟,如何高效开发企业级的数据库信息系

统,:《计算机工程与设计》2005年第8期,2005

常淑娟,酒店人力资源管理优化对策研究,:《金色年华:教学

参考》2011年第1期,2011

蒋波涛,插件式GIS应用框架的设计与实现.博文视点原创精

品大系.2011389百科论坛










发布者:admin,转转请注明出处:http://www.yc00.com/web/1713076839a2178258.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信