编码规范考试题
一、单选题
1. 如下关于集合类的描述错误的是(B)
A. 含有集合意义的属性命名,尽量包含其复数的意义
B. 集合中的数据不需要释放,垃圾回收器会自动回收
C. 集合必须指定模板类型
D. 使用集合类时要设置初始化容量
2. 关于线程以下说法错误的有(B)
A. 新起一个线程,都要使用Thread.setName(“…”)设置线程名
B. 在JDK1.5或更新的版本中,若字符串拼接发生在单线程环境,使用StringBuffer
C. 对多线程访问的变量、方法,必须加锁保护,避免出现多线程并发访问引起的问题
D. 线程使用时,要在代码框架中使用线程池,避免创建不可复用的线程;禁止在循环中创建新线程,否则会引起JVM资源耗尽
3. 下面哪个是推荐使用的对称密码算法(B)
A. DES
B. AES
C. SHA
D. RSA
4. 以下说法正确的有(C)
A. 程序中的一些状态多直接用数字表示,如函数执行成功return 1
B. 对于表示函数执行错误,多用约定的错误码来标识
C. 用有意义的静态变量或者枚举来代替数字型的程序状态,如函数执行成功return SUCCE
SS
D. 程序中的魔鬼数字并不可怕,需要所有开发人员努力理解这些数字的含义
5. 下列错误使用异常的做法是(D)
A. 在程序中使用异常处理还是使用错误返回码处理,根据是否有利于程序结构来确定,并且异常和错误码不应该混合使用,推荐使用异常
B. 一个方法不应抛出太多类型的异常。throws/exception子句标明的异常最好不要超过三个
C. 异常捕获尽量不要直接 catch (Exception ex),应该把异常细分处理
D. 程序内抛出的异常本身就可说明异常的类型、抛出条件,可不填写详细的描述信息。捕获异常后用String()取到详细信息后保存
6. 关于命名规范,以下说法错误的有(D)
A. 属性名使用意义完整的英文描述,第一个单词的字母使用小写,剩余单词首字母大写其余字母小写的大小写混合法。属性名不能与方法名相同
B. 方法名使用类意义完整的英文描述:第一个单词的字母使用小写、剩余单词首字母大写其余字母小写的大小写混合法
C. 方法中,存取属性的方法采用setter 和 getter方法,动作方法采用动词和动宾结构
D. 常量名使用全大写的英文描述,英文单词之间用下划线分隔开,并且使用 static 修饰
7. 下列哪个场景可以使用java.util.Random类产生的随机数(C)
A. 挑战算法中的随机数生成
B. 验证码的随机数生成
C. 随机选取路由
D. Web应用会话标识符
8. 一段使用ZipInputStream对压缩文件进行解压的代码,在[1]处填入适合的关键字是(A)
public RandomAccessFile openFile(java.io.File f) {
[1] java.io.File copy = new java.io.Path());
Path());
// ...
return (RandomAccessFile)AccessController.doPrivileged(new PrivilegedAction () {
public Object run() {
return new RandomAccessFile(copy, Path());
}
});
}
A. final
B. static
C. volatile
D. Private
9. 安全编程规范中,下面说法错误的是(D) 
A. 对外部输入进行校验
B. 禁止不受信任的代码直接终止JVM
C. 创建文件时指定合理的访问权限
D. 记录日志时可以抛异常
10. 若程序中需要获取操作系统登录用户名,应采取下列哪种方法来获取(C) 
A. 提示用户输入
B. 由环境变量获取:v("USER")
C. 由JVM属性获取:Property("user.name")
D. 启动程序的时候由程序参数传入
11. 以下说法正确的是(A) 
A. 尽量使用Java 5.0新循环写法
B. 判断一个变量是否等于null、或者一个常量,应把变量放在操作符的左边
C. 方法参数不能超过7个
D. 用“==”比较两个字符串内容相等java加密方式有哪些
12. 在下列哪个场景中,不需要加密和数字签名机制保证数据安全(D) 
A. 序列化传输敏感数据
B. 无SSL传输通道或者代价太高
C. 敏感数据需要持久化长久保存
D. 同一信任域内组件间传递
13. 下列JDK中的API调用中若使用不当易遭致OS命令注入的是(B) 
A. java.lang.System.load()
B. java.()
C. java.lang.Thread.start()
D. java.lang.Process.waitFor()
14. 如下描述不正确的是(D) 
A. 除了构建器外,不要使用和类名相同的方法名
B. 使用 equals() 比较两个类的值是否相同
C. 不要使用嵌套赋值,即在一个表达式中使用多个 =
D. 重载 equals() 方法时,不必要重载 hashCode() 方法
15. 下列不符合编码规范的是(C) 
A. 数据库、IO操作等需要使用结束close()的对象必须在try-catch-finally 的finally中close()
B. 数组声明的时候使用 int[] index ,而不要使用 int index[]
C. 所有的类必须重载toString()方法,返回该类有意义的内容
D. 自己抛出的异常必须要填写详细的描述信息
16. 对于下面的代码片段,假设PasswordManager的实例可以被非信任代码所访问,且changePassword()方法调用属于敏感操作,则下列说法中不正确是的(C) 
public class PasswordManager
{
public final Object lock = new Object(); 
public void changePassword() throws FileNotFoundException
{
synchronized (lock)
// . . .
}
}
}
A. changePassword()方法中应该包含安全管理器检查,以确认调用代码是否具有该操作权限
B. 应该将lock成员变量的可见性声明为private
C. 可以省去changePassword()方法中的同步块,直接将changePassword()方法声明为synchronized修饰的同步方法
D. changePassword()方法不应该抛出FileNotFoundException异常
17. 推荐的防御SQL注入的最佳方式是(C) 
A. 限制外部输入的长度
B. 使用存储过程
C. 使用预编译语句--java.sql.PreparedStatement
D. 对外部输入进行转义
18. JAAS授权类中,不包含以下哪一类(D) 
A. Policy
B. AuthPermission
C. PrivateCredentialPermission
D. LoginContext
19. 下面说法或者语句不符合公司编程规范的排版要求的是(D) 
A. 逗号、分号只在后面加空格; 比较操作符, 赋值操作符"="、 "+=",算术操作符"+"、"%",逻辑操作符"&&"、"&",位域操作符"<<"、"^"等双目操作符的前后加空格; "!"、"~"、"++"、"--"、"&"(地址运算符)等单目操作符前后不加空格
B. 如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为在Java语言中括号已是最清晰的标志了
C. 较长的语句、表达式或参数(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读
D. if, for, do, while等语句的执行语句如果只有一行的话,不需要要加括号{}
20. 对于注释的描述错误的是(C) 
A. 公有和保护方法注释内容:列出方法的一句话功能简述、功能详细描述、输入参数、输出参数、返回值、异常等
B. 对重载父类的方法必须进行@Override声明
C. 对关键变量的定义必须编写注释,分支语句(条件分支、循环语句等),可以根据实际情况,可以增加注释,也可以不加,根据注释量确定
D. 对于方法内部用throw语句抛出的异常,必须在方法的注释中标明,对于所调用的其他方法所抛出的异常,选择主要的在注释中说明。 对于非RuntimeException,即throws子句声明会抛出的异常,必须在方法的注释中标明
二、多选题
21. 如下类名符合公司规范的有(CD) 
A. FtpDownload_Util
B. DEBUGLOG
C. OrderResponse
D. UserManager
22. 如下哪些地方应该加上空行(ABD) 
A. import语句与类定义之间
B. 注释与其上面的无关的代码之间
C. 注释和被注释的代码之间
D. 变量说明之后
23. 关于局部变量说法,符合编程规范的说法是(ABC) 
A. 不要定义不会被用到的局部变量,类私有属性,类私有方法和方法参数
B. 几乎每一个局部变量的声明都应该包含一个初始化表达式
C. 变量定义的“就近原则”
D. 属性名可以和公有方法参数相同,也可以和局部变量相同
24. 下列说法描述正确的是(ABCD) 
A. public方法参数的合法性检查应由方法本身负责,每一个public方法必须保证自己的健壮性
B. 调用方法获取返回结果后必须进行有效性校验,以确保后续代码在运行过程中不会抛出异常或产生逻辑错误
C. 访问数组、List等容器内的元素时,必须首先检查下标是否越界,杜绝下标越界异常的发生

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。