c++编码规范考试题
Q3:下面哪些说法是正确的?
A. C++项目目前应该基于C++14标准进行开发。
B. C/C++ 程序的头文件以“ .h”为后缀, C 程序的定义文件以“ .c”为后缀, C++ 程序的定义文件通常以“ .cpp ”为后缀。
C. 每个头文件开头需要说明文件名、文件功能描述、文件版本和文件修改记录,文件修改记录包括文件修改时间、文件版本号、文件修改人和文件修改内容四部分。
Q4:下面哪些说法是正确的?
A. 所有文件名称、工程名称、类名称、枚举类型、函数名称、变量名称,均必须使用英文表示,不允许使用非英文表达。
B. 所有源代码文档编码采用ANSI编码,行尾序列设置为LF。
C. 工程名称与实际的文件夹名称必须要保持一致,必须统一使用小写。
D. 定义类的时候,文件名与类名保持一致,如CWorkspace.h和CWorkspace.cpp。
Q5:关于注释说法正确的是?
A.代码注释率,需达10%以上。
B.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性,不再有用的注释要删除。。
C.对于所有物理含义的变量、常量、数据结构和全局变量,如果其命名不是充分自注释的,必须加以注释。
D.注释的位置应与被描述的代码相邻,放在代码的上方或右方(对单条语句的注释),不可放在下方。
Q6:关于宏的说法正确的是?
A.#define 来定义常量不用占用内存空间。
B.const 常量有数据类型,而宏常量没有数据类型。
C.#define 定义的宏常量受名字空间限制。
D.类中的枚举常量不会占用对象的存储空间。
Q7:以下针对变量和常量的用法,说法规范的是?
A.一个变量有且只有一个功能,不能把一个变量用作多种用途。
B.循环语句与判断语句中,不允许对控制循环的变量进行计算与赋值。
C.只应使用const的方式定义常量,而不应使用#define的方式定义常量。
D.对内存无过多要求的程序中应使用const定义常量,而在对内存有很大限制的嵌入式开发环境中则需要使用#define定义常量。
Q8:以下针对整型类型变量的比较判断,用法规范的是?
A.if ( i )
B.if ( !i )
C.if ( i != 0 )
D.if ( i == 0 )
Q9:以下针对指针类型变量的比较判断,用法规范的是?
A.if ( p )
B.if ( p != nullptr )
C.if ( p != 0 )
D.if ( p != NULL )
Q10:以下针对浮点类型变量的比较判断,用法正确的是?
A.if ( d1 == d2 )
B.if ( ( d1 - d2 ) <= std::numeric_limits< double_t >::epsilon() )
C.if ( std::fabs( d1 - d2 ) <= std::numeric_limits< double_t >::epsilon() )
D.if ( std::fabs( d1 - d2 ) == 0.0 )
Q11:以下针对switch语句的用法,是否符合编码规范?
A.是
B.否
Q12:以下针对函数返回值的用法,符合规范的是?
A.int32_t SubFunction(void);
B.bool SubFunction(void);
C.BOOL SubFunction(void);
Q13:以下针对参数的用法,说法规范的是?
A.函数的参数顺序为: 有默认值的参数放在最后,输入参数在先, 后跟输出参数。
B.如果输入参数以值传递的方式传递对象,则宜改用“const ”方式来传递
C.避免函数有太多的参数,参数个数尽量控制在5个以内。
D.避免使用可变参数。
Q14:以下针对循环语句的用法,说法规范的是?
A.如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。
B.不可在for循环体内修改循环变量,防止for循环失去控制。
C.减少循环嵌套层数,合理使用函数使程序流程及结果清晰。循环嵌套次数不大于3次。
D.合理使用goto语句,可以有效降低逻辑复杂度。
Q15:以下针对函数的用法,说法规范的是?
A.公有方法需要对输入参数的正确性和有效性进行检查,私有方法确保输入参数没问题可以不用进行检查,避免重复操作。
B.函数的功能要单一,不要设计多用途的函数。
C.必须对所调用函数的错误返回值进行处理。
D.谨慎使用递归调用,一般情况下禁止使用,除非是某些算法或功能实现所需。
Q16:关于类定义说法正确的是?
A. 类的构造函数和虚构函数不必成对出现
B. 为了减少函数调用,可以在构造函数中直接调用虚Init函数
C. 内存池实现时,构造函数中应该把内存分配好
D. 构造函数和虚构函数中不应该出现有异常抛出的情况
E.拷贝,移动和赋值函数应该显示声明和实现,不能使用隐式函数,如果不需要这些函数,可以使用=delete删除
Q17:以下关于类的成员说法错误的是?
A.类的属性可以是public
B.所有数据成员应该多使用mutable和volatile类型修饰,以防多线程访问
C.成员变量的初始化顺序可以和定义的顺序不一致
D.成员函数体尽量短小, 紧凑, 功能单一
Q18:以下代码不符合编码规范的是哪几个?
A. a[0] = 1, a[1]=2, …..
B. if(a[0] == 0){ //do something}
C. a[10] = 10;
D. a = nullptr
Q19:以下单元测试说法正确的是:
A.对于输入参数只需要做有效输入即可
B.测试某个函数时,应该把其他相关函数全部打桩,方便测试
C.使用变量时要注意其边界值的情况
D.算法测试只需要测试其正确性即可
Q20:以下说法正确的是:
A.为了提高代码效率,应多插入汇编代码
B.测试用例的名称可以随便定义,完成功能就可以
C.如果一个类不会被其他类继承,应该在类定义的时候加上final
D.类的构造函数应该支持隐式类型转换,方便代码编写
Q21:以下说法正确的是:
A.能使用继承的方式尽量使用继承,减少变量的定义
B.子类的函数名和参数可以和父类的函数名参数一致
C.接口类中可以没有纯虚函数
D.所有继承尽量使用public继承,如果需要私有继承,尽量把基类的实例作为成员变量
Q22:以下说法正确的是:
A.如果一个类的所有成员函数都是public的,可以使用struct定义该类
B.对于只有成员变量并且所有成员变量都需要在其他类中使用的情况,可以将此结构定义成struct
C.函数传参时,尽量不要带const,方便后期需要修改参数的值
D.struct类型的构造函数可以使用memset的方式初始化