java编程规范(chinasoft内部考试),答案并⾮全部正确。仅
供参考
⼀、单选题
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 SUCCESS
D. 程序中的魔⿁数字并不可怕,需要所有开发⼈员努⼒理解这些数字的含义
5. 下列错误使⽤异常的做法是D
A. 在程序中使⽤异常处理还是使⽤错误返回码处理,根据是否有利于程序结构来确定,并且异常和错误码不应该混合使⽤,推荐使⽤异常
B. ⼀个⽅法不应抛出太多类型的异常。throws/exception⼦句标明的异常最好不要超过三个
C. 异常捕获尽量不要直接 catch (Exception ex),应该把异常细分处理
D. 程序内抛出的异常本⾝就可说明异常的类型、抛出条件,可不填写详细的描述信息。捕获异常后⽤String()取到详细信息后保存
6. 关于命名规范,以下说法错误的有D
A. 属性名使⽤意义完整的英⽂描述,第⼀个单词的字母使⽤⼩写,剩余单词⾸字母⼤写其余字母⼩写的⼤⼩写混合法。属性名不能与⽅法名相同
B. ⽅法名使⽤类意义完整的英⽂描述:第⼀个单词的字母使⽤⼩写、剩余单词⾸字母⼤写其余字母⼩写的⼤⼩写混合法
C. ⽅法中,存取属性的⽅法采⽤setter 和 getter⽅法,动作⽅法采⽤动词和动宾结构
D. 常量名使⽤全⼤写的英⽂描述,英⽂单词之间⽤下划线分隔开,并且使⽤ static 修饰[y1]
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
B. static
C. volatile
D. private
9. 安全编程规范中,下⾯说法错误的是D[y2]
A. 对外部输⼊进⾏校验
B. 禁⽌不受信任的代码直接终⽌JVM
C. 创建⽂件时指定合理的访问权限
java设置环境变量的方法代码D. 记录⽇志时可以抛异常
10. 若程序中需要获取操作系统登录⽤户名,应采取下列哪种⽅法来获取
A. 提⽰⽤户输⼊
B. 由环境变量获取:v("USER")
C. 由JVM属性获取:Property("user.name")
D. 启动程序的时候由程序参数传⼊
11. 以下说法正确的是C[y3]
A. 尽量使⽤Java 5.0新循环写法
B. 判断⼀个变量是否等于null、或者⼀个常量,应把变量放在操作符的左边
C. ⽅法参数不能超过7个
D. ⽤“==”⽐较两个字符串内容相等
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异常
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. 如下哪些地⽅应该加上空⾏AB
A. import语句与类定义之间
B. 注释与其上⾯的⽆关的代码之间
C. 注释和被注释的代码之间
D. 变量说明之后
23. 关于局部变量说法,符合编程规范的说法是ABCD
A. 不要定义不会被⽤到的局部变量,类私有属性,类私有⽅法和⽅法参数
B. ⼏乎每⼀个局部变量的声明都应该包含⼀个初始化表达式
C. 变量定义的“就近原则”
D. 属性名可以和公有⽅法参数相同,也可以和局部变量相同
24. 下列说法描述正确的是ABC
A. public⽅法参数的合法性检查应由⽅法本⾝负责,每⼀个public⽅法必须保证⾃⼰的健壮性
B. 调⽤⽅法获取返回结果后必须进⾏有效性校验,以确保后续代码在运⾏过程中不会抛出异常或产⽣逻辑错误
C. 访问数组、List等容器内的元素时,必须⾸先检查下标是否越界,杜绝下标越界异常的发⽣
D. 对于if ? else if ?(后续可能有多个else if …)这种类型的条件判断,最后必须包含⼀个else分⽀,避免出现分⽀遗漏造成错误;每个switch-case语句都必须保证有default,避免出现分⽀遗漏,造成错误
25. 下⾯关于存取控制符号的描述,符合编程规范的有ABC
A. 只是该类内部调⽤的函数使⽤ private 属性
B. 继承类可以使⽤的使⽤protected属性
C. 对外公开的函数使⽤public属性
D. 类的成员变量的尽量采⽤protected修饰,其他类可以通过类的成员⽅法来访问和修改变量
26. 下列关于类和接⼝的注释,正确的说法有ABCD
A. 放在class或者interface关键字之前
B. 放在import关键字之后
C. 注释主要是⼀句话功能简述与功能详细描述
D. 类注释使⽤“/****/”注释⽅式
27. 以下说法正确的有ABCD
A. ⼀个系统或者模块应该统⼀规划异常类型和返回码的含义
B. 异常的处理效率⽐条件分⽀低
C. 异常的跳转流程难以预测
D. 系统⾮正常运⾏产⽣的异常捕获后,如果不对该异常进⾏处理,则应该记录⽇志
28. 关于异常,以下说法正确的有AC
A. 运⾏时异常使⽤RuntimeException的⼦类来表⽰,不⽤在可能抛出异常的⽅法声明上加throws⼦句
B. 运⾏时异常使⽤RuntimeException的⼦类来表⽰,必须在可能抛出异常的⽅法声明上加throws⼦句
C. ⾮运⾏期异常是从Exception继承⽽来的,必须在⽅法声明上加throws⼦句
D. ⾮运⾏期异常是从Exception继承⽽来的,不需要在⽅法声明上加throws⼦句
29. 下述排版代码中,符合编码规范的是CD
A. if (i>j) doStart();
B. Object o = new Object(); Object b = null;
C. 类定义 { 类的公有属性定义 类的保护属性定义 类的私有属性定义 类的公有⽅法定义 类的保护⽅法定义 类的私有⽅法定义 }
D. typeCounter *= 2;
30. 循环嵌套的时候,下⾯哪些情况需要尽量避免ABCD
A. 实例化对象
B. try/catch
C. 开启IO
D. 连接数据库
三、判断题
31. 将字符串转换为数字时必须处理NumberFormatException异常
正确
错误√
32. ⼀个⽂件不要定义两个类(并⾮指内部类)
正确√
错误
33. interface 中定义的常量不要写public、static、final的修饰词,⽅法需要写public修饰词
正确
错误√
34. 应明确规定对接⼝⽅法参数的合法性检查应由⽅法的调⽤者负责还是由接⼝⽅法本⾝负责,缺省是由⽅法调⽤者负责
正确√
错误
35. 代码提交前,需要消除相应的错误、告警,并将findbug清零
正确√
错误
36. 对于switch语句下的case语句,必须在每个case分⽀结束前加上break语句
正确√
错误
37. 判断语句可以使⽤”* == true”来判断为真
正确
错误√
38. 不要使⽤循环将集合转为数组,可以使⽤集合的toArray()⽅法
正确√
错误
39. 实现Serializable接⼝的可序列化类应该显式private static final声明 serialVersionUID
正确√
错误
40. 类属性和类⽅法可以交叉放置
正确
错误√
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论