C++编码规范考试题
感谢您能抽出几分钟时间来参加本次答题,现在我们就马上开始吧!
Q1:请填写以下常用变量的缩写
填空1
填空2
填空3
填空4
填空5
Q2:请根据题目填写以下信息(10分)
填空1
填空2
Q3:对于下图中项目文件的组织结构,以下说法正确的是(多选)[图片]
A. VEAP,项目名称。
B. branches,目录是软件产品的迭代开发版本。
C. trunk,代表软件产品当前的主干开发版本。
D. tags,目录按版本保存该软件产品所有的经过完整测试的历史稳定版本。即:发布版本。
Q4:以下关于标识符命名规则的说法正确的是(多选)
A. 标识符的命名要清晰、明了,有明确含义,可望文知意,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。
B. 命名中若使用特殊约定或缩写,则要有注释说明。
C. 对于变量命名,禁止取单个字符(如i、j、k...),除了要有具体含义外,还要能表明其变量类型、数据类型等。
D. 除非必要,不要用数字或较奇怪的字符来定义标识符。
E. 程序中可以出现仅靠大小写区分的相似的标识符。
Q5:关于变量的命名,以下说法错误的是
A. 类成员变量范围用“m_”,类的静态成员变量范围用“ms_”,函数形参变量以前缀“p_”开始,其它类型变量无变化范围要求。
B. 禁止变量名复用。即使在不同作用域,也禁止使用同一变量名被重复使用,防止在查找定位以及理解代码时发生偏差。
C. 布尔量命名要体现变量特性,值为true时与变量表达效果一致。
D. 在枚举列表中,第一个元素为“INVALID”标记,第二个元素为“FIRST”标记,最后一个元素为“LAST”标记。枚举定义加到命名空间里。
Q6:关于函数的命名,以下说法错误的是
A. 函数的标识要体现函数实现的功能。
B. 函数标识符采用动词或者动词+名词的方式,其中采用大小写混排的方式,中间不得有下划线。
C. 如果函数实现递归调用,函数名必须加后缀“_Recursion”。
D. 获取和设定类成员变量的函数命名规则为:get /set + 类变量命名。
Q7:以下几段代码,正确的有
A. 空行/* code one comments */program code one; /* 此处空一行 *//* code two comments */program code two;
B. 缩进enum PhaseNumber{ /* 相位编号 *//* 与enum的垂直位置相比,缩进2个空格 */ PHASE_NUMBER_INVALID = 0U, PHASE_NUMBER_FIRST = 1U, PHASE_NUMBER_A = PHASE_NUMBER_FIRST, PHASE_NUMBER_B, PHASE_NUMBER_C, PHASE_NUMBER_LAST = PHASE_NUMBER_C};
C. 换行与对齐for (dataIndex = 0; dataIndex < MAX; dataIndex ++) { dataSum += dataSource[dataIndex];}
D. 命名空间namespace NsTest{void vDataAdd(void){ ....} }
Q8:以下关于注释的说法正确的是(多选)
A. 边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
B. 注释的内容要清楚、明了,含义准确,防止注释二义性。
C. 复杂分支语句(如条件分支、循环语句多级嵌套等)必须编写注释。
D. 函数头注释放到头文件中,函数实现中不加函数头注释。
Q9:以下代码或说法正确的是(多选)
A. 赋值语句不要写在if等语句中,或者作为函数的参数使用。
B. 禁止使用goto语句。
C. for (dataNum = 0; dataNum < N; dataNum ++, dataTemp >>= 1) { ……;}
D. 不允许对浮点数进行相等或不相等的比较。
Q10:以下关于函数设计的说法正确的有(多选)
A. 不要省略返回值的类型。
B. 函数的功能要单一,不要设计多用途的函数。
C. 在调用函数填写参数时,应尽量减少没有必要的默认数据类型转换或强制数据类型转换。
D. 参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字,如果函数没有参数,则必须用 void 填充。
Q11:以下关于类设计的说法正确的有 (多选)
A. 为每一个类显式定义默认构造函数,构造函数变量初始化列表顺序与类成员的声明顺序一致。
B. 构造函数应完成简单有效的功能,不应完成复杂的运算和大量的内存管理。
C. 如果需要资源释放时,为每一个类显式的定义析构函数,析构函数声明为虚函数。
D. 在派生类中可以对基类中的非虚函数重新进行定义。
Q12:系统日志格式
A. [日志级别][日志时间][线程号]日志内容
B. [日志编号][日志时间][线程号]日志内容
C. [日志时间][日志级别][线程号]日志内容
D. [线程号][日志时间][日志级别]日志内容
Q13:请写出以下代码不规范的地方?#ifndef MODBUS_SLAVE_TCP_H_ #define MODBUS_SLAVE_TCP_H_#include “stdio.h” #include “ModbusSlave.h” class ModbusSlaveTCP{ ……}
选项1
Q14:请列举遵守编码规范所能带来的好处?(多选)
A.代码的统一性,可读性良好
B.便于代码的后期维护
C.便于交接
D.规避代码中不必要的复杂性
Q15:以下选项中错误维护非规范代码的选项是?(多选)
A.按自己的风格继续编写
B.为了不破坏原有风格的一致性可以不使用本规范,可与代码作者或项目负责人商讨编程风格
确定编程风格一致,编程人员可以把精力集中到实现内容。
消耗大量精力去修改非规范代码