Java选择题

1.在Web应用程序的文件与目录结构中,web.xml是放置在( )中。
正确答案: A 你的答案: C (错误)
A:WEB-INF目录
B:conf目录
C:lib目录
D:classes目录
解析:(1)/WEB-INF/web.xml 是部署描述文件
(2)/WEB-INF/classes 用来放置应用程序用到的自定义类(.class),必须包括包(package)结构。
(3)/WEB-INF/lib 用来放置应用程序用到的JAR文件。
2. 下列叙述错误的是( )
正确答案: D 你的答案: A (错误)
A:在接口中定义的方法除了default和static关键字修饰的方法拥有方法体,其他方法都应是没有方法体的抽象方法(JDK1.8以后)
B:一个java类只能有一个父类,但可以实现多个接口
C:在类声明中,用implements关键字声明该类实现的接口
D:定义接口时使用implements关键字。
解析:A、JDK8开始,接口中可以定义有方法体的方法,方法必须被default和static修饰。除此之外,其他方法都是抽象方法。
B、Java的语法是单继承,但是继承可以传递。其实B更准确一点是只能有一个直接父类。
C、继承用extends,实现用implements。先继承后实现。
D、类是class,接口是interface。
3.Java 源程序文件的扩展名为()
正确答案: A 你的答案: A (正确)
.java
.class
.exe
.jar
4.如何跳出Array的forEach循环?( )

正确答案: A 你的答案: B (错误)
break
return true
return false
以上都不是
5.根据以下接口和类的定义,要使代码没有语法错误,则类Hero中应该定义方法( )。

interface Action{
void fly();
}
class Hero implements Action{ //…… }

正确答案: D 你的答案: C (错误)
private void fly(){}
void fly(){}
protected void fly(){}
public void fly(){}
解析:在继承中,重写要求子类不能有比父类更加严格的访问修饰符。这一点和接口相似。
接口默认方法是public abstract。属性默认public static final。
而抽象类中的抽象方法修饰符可以是public或者protected。
6.用户不能调用构造方法,只能通过new关键字自动调用。()

正确答案: B 你的答案: A (错误)
正确
错误
解析:1. 在类的其他构造方法中可以用this()的方式调用其他构造方法;
2. 在类的子类中则可以通过super调用父类中指定的构造方法;
3. 在反射中可以使用newInstance()的方式调用。
7.类Parent和Child定义如下:

class  Parent{
       public  float  aFun(float a, float b) { }
}
class  Child  extends  Parent{
}

将以下哪种方法插入行5是不合法的。( )

正确答案: A 你的答案: A (正确)
float aFun(float a, float b){ }
public int aFun(int a, int b) { }
public float aFun(float p, float q){ }
private int aFun(int a, int b){ }
解析:两同:方法名、形参列表相同;
两小:返回值类型、抛出异常更小,这里的“小”指的是继承关系的子父类,不是像高赞所谓的float和int的大小之分;
一大:访问修饰符。
8.下列关于容器集合类的说法正确的是?
正确答案: C 你的答案: B (错误)
LinkedList继承自List
AbstractSet继承自Set
HashSet继承自AbstractSet
WeakMap继承自HashMap
解析:a选项linkedlist类是实现了List接口,而不是继承
b选项AbstractSet类实现Set接口
c选项HashSet继承 AbstractSet类,同时也实现set
d选项WeakMap是js
9.下面关于volatile的功能说法正确的是哪个
正确答案: B C 你的答案: B C (正确)
原子性
有序性
可见性
持久性
解析:synchronized保证三大性,原子性,有序性,可见性,volatile保证有序性,可见性,不能保证原子性
10.在Java中下面Class的声明哪些是错误的?
正确答案: A B C 你的答案: A B (错误)
public abstract final class Test {
abstract void method();
}
public abstract class Test {
abstract final void method();
}
public abstract class Test {
abstract void method() {
}
}
public class Test {
final void method() {

}
}
解析:
1.抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。

2、抽象方法必须由子类来进行重写。

3、只要包含一个抽象方法的类,该类必须要定义成抽象类,不管是否还包含有其他方法。

4、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。

5、abstract不能与final并列修饰同一个类。

6、abstract 不能与private、static、final或native并列修饰同一个方法。
11.下列类在多重catch中同时出现时,哪一个异常类应最后一个列出()

正确答案: C 你的答案: C (正确)
ArithmeticException
NumberFormatException
Exception
ArrayIndexOutOfBoundException
解析:这是多重catch块的顺序问题,由于异常处理系统就近寻找匹配异常处理程序,应先子类后父类。
12.对于java类型变量char c,short s,float f,double d,表达式c*s+f+d的结果类型为()
正确答案: D 你的答案: B (错误)
float
char
short
double
解析:char 2字节 short 2字节 float 4字节 double 8字节
往精度高的转
13.如下语句通过算术运算和逻辑运算之后i和 j的结果是( )
1
2
3
4
5
6
int i=0;
int j=0;
if((++i>0)||(++j>0))
{
//打印出i和j的值。
}

正确答案: D 你的答案: D (正确)
i=0;j=0
i=1;j=1
i=0;j=1
i=1;j=0
解析:&& 和 || 为短路与 短路或
&&若前面的表达式为false,整个逻辑表达式为false,所以后面的表达式无论true和false都无法影响整个表达式的逻辑结果,所以为了提高代码执行速率,这里后面的表达式就不会执行。
同理,若前面表达式为true,则后面的表达式无需计算。

& 和 | 为不短路与 不短路或
无论什么情况,前面的和后面的都要执行。
14.下面程序的输出结果为( )

public class Demo {
 public static String sRet = "";
 public static void func(int i)
 {
 try
 {
 if (i%2==0)
 {
 throw new Exception();
 }
 }
 catch (Exception e)
 {
 sRet += "0";
 return;
 }
 finally
 {
 sRet += "1";
 }
 sRet += "2";
 }
 public static void main(String[] args)
 {
 func(1);
 func(2);
 System.out.println(sRet);
 }
 }

正确答案: B 你的答案: B (正确)
120
1201
12012
101
解析:第一步,func(1),if条件不成立,不抛出异常,catch不运行,final运行,拼串得到“1”,程序继续往下走,拼串得到“12”。 第二步,fun(2),if条件成立,抛出异常,catch捕获异常,运行catch里面代码,拼串得到“120”,虽然有return,但是不管出不出异常,final里代码必须执行,执行final,拼串得到“1201”,然后return结束。所以最终结果“1201”。
15.下面不是面向对象的基本原则的是?
正确答案: C 你的答案: D (错误)
单一职责原则(Single-Resposibility Principle)
开放封闭原则(Open-Closed principle)
抽象类原则(Abstract-Class principle)
依赖倒置原则(Dependecy-Inversion Principle)
接口隔离原则(Interface-Segregation Principle)
解析:s( Single-Resposibility Principle ): 单一职责原则
o( Open-Closed principle ): 开放封闭原则
l( Liskov-Substituion Principle ): 里氏原则
i( Interface-Segregation Principle ): 接口隔离原则
d( Dependecy-Inversion Principle ): 依赖倒置原则
16.代码片段:
1
2
3
4
5
byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2);
System.out.println(b3+b6);
关于上面代码片段叙述正确的是()
正确答案: C 你的答案: B (错误)
输出结果:13
语句:b6=b4+b5编译出错
语句:b3=b1+b2编译出错
运行期抛出异常
解析:没有final修饰的变量相加后会被自动提升为int型,与目标类型byte不相容,需要强制转换(向下转型)
17.下列哪个选项是合法的标识符?()
正确答案: B D 你的答案: B C (错误)
123
name
class
first
解析:Java标识符由 数字、字母、下划线(
)、美元符号($) 组成, 首位不能是数字 。并且 Java关键字不能作为标识符
18.下面哪些具体实现类可以用于存储键,值对,并且方法调用提供了基本的多线程安全支持:()
正确答案: A E 你的答案: B C E F (错误)
java.util.ConcurrentHashMap
java.util.Map
java.util.TreeMap
java.util.SortMap
java.util.Hashtable
java.util.HashMap
解析:线程安全的map:HashTable,SynchronizedMap,ConcurrentHashMap
19.在java中重写方法应遵循规则的包括()
正确答案: B C 你的答案: A B D (错误)
访问修饰符的限制一定要大于被重写方法的访问修饰符
可以有不同的访问修饰符
参数列表必须完全与被重写的方法相同
必须具有不同的参数列表
解析:被重载的方法必须改变参数列表(参数个数或类型或顺序不一样);
被重载的方法可以改变返回类型;
被重载的方法可以改变访问修饰符;
被重载的方法可以声明新的或更广的检查异常;
方法能够在同一个类中或者在一个子类中被重载。
无法以返回值类型作为重载函数的区分标准。
20.下面选项中,哪些是interface中合法方法定义?()
正确答案: A C D 你的答案: C D (错误)
public void main(String [] args);
private int getSum();
boolean setFlag(Boolean [] test);
public float get(int x);
解析:interface中的方法默认为public abstract 的 ,变量默认为public static final
21.欲定义类字段或类方法(静态方法),应该使用下列哪一个修饰符修饰()
正确答案: B 你的答案: B (正确)
public
static
protected
synchronized
解析:静态方法用static修饰
22.在 Applet 中,方法执行的顺序是 ?( )

正确答案: A 你的答案: A (正确)
init(), start(), paint(),stop(),destroy().
init(),paint(),start(),stop(),destroy().
paint(),start(),stop(),destroy().
init(), start(),stop(),destroy(),paint().
解析:init 初始化,start启动运行,paint 窗口最小化等时候需要暂停,stop 停止,destory 销毁;
23.以下程序的运行结果是:( )

TreeSet<Integer> set = new TreeSet<Integer>();
 TreeSet<Integer> subSet = new TreeSet<Integer>();
 for(int i=606;i<613;i++){
 if(i%2==0){
 set.add(i);
 }
 }
 subSet = (TreeSet)set.subSet(608,true,611,true);
 set.add(629);
 System.out.println(set+" "+subSet);

正确答案: C 你的答案: C (正确)
编译失败
发生运行时异常
[606, 608, 610, 612, 629] [608, 610]
[606, 608, 610, 612, 629] [608, 610,629]
24.有如下一段程序:

public class Test{
private static int i=1;
public int getNext(){
return i++;
}
public static void main(String [] args){
Test test=new Test();
Test testObject=new Test();
test.getNext();
testObject.getNext();
System.out.println(testObject.getNext());
}
}
请问最后打印出来的是什么?()
正确答案: B 你的答案: D (错误)
2
3
4
5
解析:因为i是static的,是类属性,所以不管有多少对象,都共用的一个变量。这里getNext()方法被调用了三次,所以进行了三次i++操作。
但是由于getNext()操作的返回是:return i++; i++是先返回,后++,所以在println是,已经返回了i(此时i为3),再进行自增的,所以这里结果为3
25.下面有关jsp中静态include和动态include的区别,说法错误的是?
正确答案: D 你的答案: C (错误)
动态INCLUDE:用jsp:include动作实现
静态INCLUDE:用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file=“included.htm” %>
静态include的结果是把其他jsp引入当前jsp,两者合为一体;动态include的结构是两者独立,直到输出时才合并
静态include和动态include都可以允许变量同名的冲突.页面设置也可以借用主文件的
解析:静态的include:是jsp的指令来实现的,<% @ include file=“xx.html”%> 特点是 共享request请求域,先包含再编译,不检查包含页面的变化。
动态的include:是jsp动作来实现的,<jsp:include page=“xx.jsp” flush=“true”/> 这个是不共享request请求域,先编译在包含,是要检查包含页面的变化的。
26.下列关于JavaBean的说法正确的是:
正确答案: A 你的答案: C (错误)
Java文件与Bean所定义的类名可以不同,但一定要注意区分字母的大小写
在JSP文件中引用Bean,其实就是用语句
被引用的Bean文件的文件名后缀为.java
Bean文件放在任何目录下都可以被引用
解析:A: Bean定义的类名的含义应该是实例化的一个类,在JSP中相当于id,class属性对应的是需要编译的类,在后面用到id的实例化类名 需要区分大小写
B: 是声明了一个Bean 不是引用
C: 引用的文件是web-Inf\class\下的class文件
D: 需要放在web-Inf\class
27.java语言的下面几种数组复制方法中,哪个效率最高?
正确答案: B 你的答案: C (错误)
for 循环逐一复制
System.arraycopy
Array.copyOf
使用clone方法
28.给出下面的代码段:

public class Base{
int w, x, y ,z;
public Base(int a,int b)
{
x=a; y=b;
}
public Base(int a, int b, int c, int d)
{
// assignment x=a, y=b
w=d;z=c;
}}
在代码说明// assignment x=a, y=b处写入如下哪几个代码是正确的?()
正确答案: C D 你的答案: A D (错误)
Base(a,b);
x=a, y=b;
x=a; y=b;
this(a,b);
解析:B选项,可以使用逗号的是变量初始化的语句,比如
int i=1,b=2;
如果是赋值语句,不能用逗号分隔。
29.下面哪几个语句正确的声明一个整型的二维数组()

正确答案: C D 你的答案: A B (错误)
int a[][]=new int[][]
int b[10][10]=new int[][]
int c[][]=new int[10][10]
int []d[]=new int[10][10]
解析:定义一维数组时,必须显式指明数组的长度;
2. 定义***数组时,其一维数组的长度必须首先指明,其他维数组长度可以稍后指定;
3. 采用给定值初始化数组时,不必指明长度;
4. “[]” 是数组运算符的意思,在声明一个数组时,数组运算符可以放在数据类型与变量之间,也可以放在变量之后。
30.关会话跟踪技术描述正确的是()
正确答案: A B C 你的答案: A B C (正确)
Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端
关闭浏览器意味着临时会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期
在禁用Cookie时可以使用URL重写技术跟踪会话
隐藏表单域将字段添加到HTML表单并在客户端浏览器中显
解析:D:隐藏域在页面

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值