Java编程规范试题
JAVA编程规范--试题
姓名:工号:部门:成绩:
一. 判断题(共15题,每题2分,直接在括号内打“√”或“×”)
1、任何时候都不要使接口可以序列化。x
2、相对独立的程序块之间、变量说明之后必须加空行。√
3、当程序需要释放对象的时候,应该手工调用finalize方法以释放对象。x
4、公司的规范要求注释率是20%以上,并且必须有助于对程序的阅读理解。x
5、为了程序更加简洁,我们应该尽量使用下面的方式来赋值:a = b = 1 。x
6、每个类都需要定义构建器。x
7、类名、方法名、属性名的命名,都应该使用意义完整的英文描述。√
8、main() 方法的定义是public static void main(String args[])。x
9、常量名应该使用全大写,英文单词之间用下划线或者-分隔开。并且,常量应该使用
final static修饰。x
10、公有方法参数名可以和属性名相同,但局部变量不能和属性名相同。√
11、一两行代码就能完成的功能没有必要编写方法实现。x
12、对于模块间接口方法的参数的合法性检查,调用者和被调用者都应该对参数进行合
法性检查。x
13、运行期异常使用RuntimeException的子类来表示,必须在方法声明上加throws子句。
x非运行期异常是从Exception继承而来的,不用在可能抛出异常的方法声明上加throws 子句。x
14、使用ObjectStream 的方法后,调用release() ,释放对象。X
2017-10-11 第1页, 共21页
15、减小单个方法的复杂度,使用的 if, while, for, switch 语句要在10个以内。√
二、单项选择题(共23题,每题2分)
( c )1、排版时,代码缩进应该采用的方式是:
(A)Tab缩进
(B)2个空格缩进
(C)4个空格缩进
(D)8个空格缩进
( c )2、下面哪条语句是不符合规范的:
(A)
int count = 0;
int num = 0;
....;//program code
if (count == num)
{
....;
}
(B)
long count = 0L;
long num = 0L;
....;//program code
if (count == num)
{
2017-10-11 第2页, 共21页
....;
}
(C)
float count = 0f;
float num = 0f;
....;//program code
if (count == num)
{
....;
}
(D)以上语句都符合规范
( b )3、对命名规范描述错误的是:
(A)、包名单词的首字母应该大写。
(B)、类、接口名的单词首字母应该大写。
(C)、方法名的单词首字母应该大写。
(D)、变量名的单词首字母应该大写。
( b )4、下面那句话是正确的:
(A)、main() 方法的位置是可以随意放置的。
(B)、所有的变量都应该显示初始化。
(C)、线程中需要实现 start() 方法。
(D)、可以在运算中适当减小数据的精度,以减少计算量。
2017-10-11 第3页, 共21页
( c )5、下面那条语句是符合编码规范的:
(A)、
for (int i = 0; i++; i < 10)
{
if ( isEnd )
{
i = 10;
}
}
(B)、
for (int i = 0; i++; i < 10)
{
if ( isEnd )
{
i = 11;
}
}
(C)、
for (int i = 0; i++; i < 10)
{
if ( isEnd )
{
break;
}
}
(D)、
for (int i = 0; i++; i < 10)
2017-10-11 第4页, 共21页
{
if ( isEnd == true)
{
break;
}
}
( a )6、下列对命名规范描述正确的是:
(A)、可以将类名的第一个字母改成小写作为变量名。
(B)、由于java是区分大小写的,因此,我们为两个类命名时,可以让其字符
相同,仅大小写不同,加以区分
(C)、属性名可以和方法名相同
(D)、方法的参数名一般不能和属性名相同,以免混淆。
( c )7、关于方法命名,下面那句话是正确的:
(A)、除了构建器外,定义和类名相同的方法名会产生编译错误。
(B)、如果没有定义构建器,那么可以定义和类名相同的方法名。
(C)、定义和类名相同的方法名不会产生错误,只是有时候容易混淆。
(D)、定义和类名相同的方法名不会有任何问题。
( c )8、关于servlet,下面那句话是错误的:
(A)、不要使用 java.beans.Beans.instantiate() 方法。
(B)、不再使用HttpSession时,应该尽早使用 invalidate() 方法释放。
(C)、任何时候都不能使用Servlet的 SingleThreadModel。
(D)、不再使用JDBC资源时,应该尽早使用 close() 方法释放。
( c )9、下面那句话是错误的:
2017-10-11 第5页, 共21页
(A)、包的注释写入一个名为 package.html 的HTML格式的说明文件放入当前
路径。
(B)、注释应该与其上面的代码用空行隔开。
(C)、接口一般都非常简单,如一些方法申明等,可以不写注释,而到具体的
实现类中再写。
(D)、成员变量注释内容应该包括:成员变量的意义、目的、功能,可能被用
到的地方。
( d )10、关于安全,下面那句话是正确的:
(A)、任何时候都不要使用内部类。
(B)、任何时候都不要使类可以克隆。
(C)、任何时候不要使接口可以序列化。
(D)、为方法、属性和类定义明确的存取控制,并且尽量不要使用友好方法、
属性和类。
( c )11、下列关于注释说法正确的是:
(A)、包注释可有可无,一般大家都是看类注释和方法注释。
(B)、可以把一个类的类注释改为它的文件注释。
(C)、类注释应该放在package 关键字之后,class 或者 interface 关键字
之前。
(D)、文件注释应该使用javadoc定义的方式注释,保证能够被收集并形成doc
文档。
( b )12、关于国际化,下面那句话是错误的是:
2017-10-11 第6页, 共21页
(A)、不要使用 String 类的 compareTo(), equals() 方法。
(B)、在进行字符串连接时,不要使用String,使用StringBuffer。
(C)、不要使用 Date.toString() ,Time.toString() 方法。
(D)、字符和字符串常量应该放在资源文件中。
( b )13、关于复杂度,下面那句话是错误的是:
(A)、继承层次建议不要超过5层。
(B)、方法行数建议在10-50行。
(C)、方法参数建议不要超过5个。
(D)、类的行数建议不要超过1000行。
( d )14、下面代码,那个是符合编码规范的:
(A)、
private static String SERVER_NAME = “CLIENT”;
使用 final static 修饰。public final static int MAX_VALUE = 1000;
(B)、
class A
{
...;// program code
}
class B extends A
{
public Object clone()
{
A a = new A();//在 clone() 方法中应该而且必须使用
super.clone() 而不是 new
2017-10-11 第7页, 共21页
...;// B clone code
}
}
(C)、
class A
{
public A()
{
...;// program code
}
}
(D)、
class A
{
public boolean equals(Object o)
{
...;// program code
}
public int hashCode()
{
...;// program code
}
}
( d )15、下面代码,那个是符合编码规范的:
(A)、
if (writeToFile =true)
2017-10-11 第8页, 共21页
{
writeFileThread.interrupt();
}
(B)、
if (writeToFile)
writeFileThread.interrupt();
(C)、
int a=l; a++;
(D)、
if ((a >= b) && (c > d))
{
... // program code
}
( c )16、调试代码,增加打印信息,应该使用:
(A)System.out
(B)System.err
(C)包含统一开关的测试类进行统一打印
(D)以上都不是
( d )17、程序的效率关键在于:
(A)高技巧的语句
(B)结构清晰的语句
(C)符合编程规范的语句
(D)以上都不是
2017-10-11 第9页, 共21页
( c )18、下面哪个线程调用是符合编程规范的:
(A)resume()
(B)suspend()
(C)start()
(D)stop()
( d )19、对于创建的主要的类,最好置入main()函数,下面哪个不需要
(A)能完成独立功能的类,如通讯类。
(B)具有完整界面的类,如一个对话框、一个窗口、一个帧等。
(C)JavaBean 类。
(D)资源类。
( b )20、下面说法错误的是:
(A)源程序中关系较为紧密的代码应尽可能相邻。
(B)集合中的数据不使用时,虚拟机会负责收集,因此不需要显示释放。
(C)如果多段代码重复做同一件事情,那么在方法的划分上可能存在问题。
(D)静态成员或者方法使用类名访问,不使用句柄访问。
( d )21、下面说法错误的是:
(A)不要覆盖父类的静态方法和私有方法。
(B)不要覆盖父类的属性。
(C)不要使用两级以上的内部类。
(D)在Sevlets中必须使用同步方法。
( c )22、下面那句话是正确的:
2017-10-11 第10页, 共21页
(A)、所有的类都应该重载toString方法,返回该类有意义的内容。
(B)、明确方法功能,近似地实现方法设计。
(C)、赋值运算符”=”前后都应该加空格。
(D)、get、set方法和相关属性,应该尽量放在一起定义。
( d )23、下面代码,那个是不符合编码规范的:
(A)、
switch (number)
case 1 :
... // program code
break;
default :
break;
(B)、
switch (number)
case 1 :
//1和2具有同样的含义,所以1也进入2的处理
case 2 :
... // program code
return ;
default :
break;
(C)、
switch (number)
case 1 :
... // program code
2017-10-11 第11页, 共21页
return;
default :
break;
(D)、以上都是符合编码规范的
三、多项选择题(共12题,每题2分)
( ab )1、对于javadoc中的方法注释描述正确的是:
(A)、@deprecated 表示该方法不建议使用
(B)、@return 表示返回的类型。
(C)、public LogIterator read(String logType) throws IOException中的
参数应该这样注释:
/**
@param logType String
*/
(D)、C例子中的异常应该如下注释:
/**
@throws IOException * @exception/throws [违例类型] [违例说明]
*/。
异常注释用@exception或@throws表示,在JavaDoc中两者等价,但推荐用
@exception标注Runtime异常,@throws标注非Runtime异常。异常的注释必须说明该异常的含义及什么条件下抛出该异常。
( abcd )2、下面描述哪些是错误的:
(A)、方法的参数名和类中的方法名相同的时候会产生编译错误。
2017-10-11 第12页, 共21页
(B)、实现 equals() 方法时,先用 getClass() 或者 instanceof 进行类
型比较,可以提高性能。
(C)、equals()或者 ==都可以用来比较两个不同实例类的值是否相同。
(D)、每个类都应该定义main()方法。
( acdefgh )3、类的注释内容包含下面哪些:
(A)、版本号
(B)、类名
(C)、作者
(D)、当前存在的bug
(E)、生成日期
(F)、功能
(G)、如果不建议使用,标明@deprecated
(H)、与其他类的关系
( a )4、下面那些语句是符合编码规范的:
(A)、
private final static int SERVER_BUSY = 0;
private final static int SERVER_IDLE = 1;
int status = 0;
....;//program code
if (SERVER_BUSY == status)
{
2017-10-11 第13页, 共21页
...;// program code
}
else if (SERVER_IDLE == status )
{
...;// program code
}
(B)
String customName = “”;
if (customName.startWith(“A”))
{
...;// program code
}
(C)、
String address = “shenzhen”;
String area = address + “B”;
(D)、
private boolean beginFlag = false;
....;// program code
public boolean ifBegin()
{
...;// program code
2017-10-11 第14页, 共21页
return beginFlag;
}
( ad )5、对包的命名,下面正确的是:
(A)、com.huawei.产品名.模块名称
(B)、com.huawei.开发组名称.项目名称
(C)、com.huawei.部门名称.模块名称
(D)、com.huawei.部门名称.项目名称
( abcd )6、下面那些语句是不符合编码规范的:
(A)、
String data = receiveData();
String info = “” ;
while ( isEnd )
{
info = Tools.covertData(data);
char ch = data.charAt(point);
if (info.charAt(0) == ch)
{
isEnd = true ;
}
point ++ ;
2017-10-11 第15页, 共21页
(B)
String data = receiveData();
while ( isWait )
{
String info = “”;//不要在循环体中定义变量
...;// program code
};
(C)、
String data = receiveData();
String info = “”;
while ( isWait )
{
try
{
...;// program code
}
catch ( IOException e )
{
...;// program code
}
2017-10-11 第16页, 共21页
(D)、
String data = receiveData();
while ( isWait == true)
{
...;// program code
};
( abc )7、关于String和StringBuffer,下面那些是正确的:
(A)、常量字符串使用 String, 非常量字符串使用 StringBuffer。
(B)、使用StringBuffer的时候设置初始容量。
(C)、尽量使用 StringTokenizer 代替 indexOf() 和 substring()。
(D)、尽量不要使用 StringBuffer , StringTokenizer类。
( abcd )8、下面那些语句是不符合编码规范的:
(A)、
String env = System.getenv();
if ( isWait )
{
...;// program code
}
(B)
public class ThreadPool
2017-10-11 第17页, 共21页
{
private int minThread = 10;
private int maxThread = 100;
...;// program code
class Worker
{
...;// program code
}
}
(C)、
String[][] data = null ;
String[][] data1 = null ;
...;// program code
for (int i = 0; i < data.length; i++)
{
for (int j = 0; j { data1[i][j] = data[i][j]; } } (D)、 2017-10-11 第18页, 共21页 String[][] sendData = null ; String[][] backupData = null ; ...;// program code for (int i = 0; i < sendData.length; i++) { for (int j = 0; j< sendData[i].length; j++) { backupData[i][j] = sendData[i][j]; } } ( bc )9、异常捕获后,如果不对该异常进行处理,则下面哪些方法是正确的:(A)、使用exception.getMessage()纪录日志 toString() (B)、使用异常类的printStackTrace()方法打印异常信息 (C)、特殊情况下,可以不处理异常,只要用注释加以说明就可以了 (D)、使用空语句{} ( acd )10、关于程序中异常的处理,下面描述错误的是: (A)、可以用异常来控制程序流程,因为异常的处理效率比条件分支高。 (B)、不要过多地使用异常,同时在捕获异常处理的时候,要尽量的捕 获处理异常的最小子类。 (C)、根据程序结构决定使用异常还是使用错误码,还是混合使用。 2017-10-11 第19页, 共21页 (D)、当需要扔出一个ERROR类型的异常时,应该自定义一个ERROR 的子类供使用。 ( abcd )11、下面说法正确的是: (A)、没有子类的友好类应该定义成 final。 (B)、没有被覆盖的友好方法应该定义成 final (C)、不定义在包中没有被用到的友好属性、方法和类 (D)、不要定义不会被用到的局部变量、类私有属性、类私有方法和方 法参数 ( abcd )12、下面那些语句是不符合编码规范的: (A) try { // ... ... out.close(); } catch(IOException ioe) { out.close(); //... ... } 2017-10-11 第20页, 共21页