1、【单选题】 给定如下一个Java源文件Child.java,编译并运行Child.java,以下结果正确的是:
class Parent1 {
Parent1(String s){
System.out.println(s);
}
}
class Parent2 extends Parent1{
Parent2(){
System.out.println("parent2");
}
}
public class Child extends Parent2 {
public static void main(String[] args) {
Child child = new Child();
}
}
A.编译错误:没有找到构造器Child() {} B.编译错误:没有找到构造器Parent1(){} C.正确运行,没有输出值 D.正确运行,输出结果为:parent2 【正确答案】B 【答案解析】Parent1中没有无参构造方法,Parent2(){}无参构造方法会报错,其内部的super()找不到父类的无参构造.创建子类对象,调用子类构造方法,会先访问父类构造方法 2、【单选题】实现下列哪个接口,可以进行集合元素的比较功能: A.Runnable接口 B.Iterator接口 C.Serializable接口 D.Comparator接口 【正确答案】D 【答案解析】A是线程接口,B是迭代器接口,C是序列化接口,D是集合比较接口 3、【单选题】下列赋值语句中,正确的是: A.byte b1 = 10, b2 = 20; byte b=b1+b2; B…byte b1 = 10, b2 = 20; byte b=b1+20; C.byte b1 = 10, b2 = 20; byte b=b2+10; D.byte b1 = 10; b1 += 1; 【正确答案】D 【答案解析】byte,char,short之间进行运算,都是先转换为int再运算,最终的运算结果都为int类,byte,char,short类型变量之间,或者变量和字面量之间运算,结果都为int类型,所以,A,B,C都错误; 而+=运算符自带强转功能,所以D正确。 4、【单选题】
String[] arr = new String[3];
System.out.println(arr[0].length());
运行结果是: A.会出现编译错误 B.运行期会抛出ArithmeticException异常 C.运行期会抛出IOException异常 D.运行期会抛出NullPointerException异常 【正确答案】D 【答案解析】此题目考查的是当对一个null值的对象,访问其属性或方法时,程序会出现NullPointerException异常。 5、【单选题】下面的程序输出结果是: public class A extends B { int k = 20; public static void main(String args[]) { int i; B c1 = new A(); i = c1.k; System.out.println(“i=” + i); } } class B { int k = 10; } A.i=20 B.程序有编译错误 C.i=10 D.i=true 【正确答案】C 【答案解析】父类引用指向子类对象,能点出来什么看引用的类型,所以c1点出来的k是B类中的变量k,如果想访问A类中的k,需要将c1类型强转为子类型,然后访问的就是子类的k. 6、【单选题】现有学生表,课程表和成绩表,三表中的字段如下: student表:id,student_name course表:id,course_name score表:student_id,course_id,score 前提:每个学生都会参加多门课程的考试,每门课程的成绩在score表中都是一条数据 现若要查询出 平均分在60分以上的学生id和学生姓名以及平均分,以下哪个sql语句是正确的? A.select student_id,student_name,avg(score) av from student s join score sc on s.id=sc.student_id; B.select student_id,student_name,avg(score) av from student s join score sc on s.id=sc.student_id where av>60; C.select student_id,student_name,avg(score) av from student s join score sc on s.id=sc.student_id where av>60 group by student_id; D.select student_id,student_name,avg(score) av from student s join score sc on s.id=sc.student_id group by student_id having av>60; 【正确答案】D 【答案解析】本题中:依据题意,要求查询出平均分在60分以上的学生信息,所以要先求出每个学生的平均分,即要按学生分组统计平均分,对应的sql语句为select student_id,student_name,avg(score) av from student s join score sc on s.id=sc.student_id group by student_id;再对每个学生的平均分进行筛选,筛选出60分以上的,那么在最后添加having即可,选择D 7、【单选题】下面哪个选项不能定义一个字符变量() A.char c1 = ‘a’; B.char c2 = “s”; C.char c2 = 97; D.char c4 = ‘\u0041’; 【正确答案】B 【答案解析】定义字符变量,字符的值可以是‘’引起来的单个字符,也可以是一个整数,所以选项A,C正确选项D 中的值为unicode字符集中表示的整数,正确。选项B中,“”引起来的表示字符串,而不是字符 8、【单选题】在Java中下列关于自动类型转换说法正确的是() A.基本数据类型和String相加结果一定是字符串类型 B.char类型和 int类型相加结果一定是字符 C.double类型可以自动转换为int D.char+int+double+””结果一定是double 【正确答案】A 【答案解析】基本数据类型和String相加结果是字符串,选项A正确char类型和int类型进行相加运算,char类型会先提升为int类型,再进行运算,最终结果是int类型,选项B错误double类型不可以自动转换为int,若想转换为int,必须强制转换,选项C错误char+int+double+“ ”,因为最后和字符串进行拼接运算,所以最终结果为String类型,选项D错误 9、【单选题】下列代码的输出结果是:
public static void main(String[] args) {
String str = "LEA";
Deque<Character> stack = new LinkedList<Character>();
for (int i = 0; i < str.length(); i++) {
stack.push(str.charAt(i));
}
stack.pop();
stack.pop();
stack.pop();
System.out.println(stack.peek());
}
A.L B.E C.A D.null 【正确答案】D 【答案解析】栈是先进后出,push入栈,pop出栈,peek返回队首元素,若栈中无元素,此时调用peek(),返回null 10、【单选题】线程调用了sleep(long mills)方法后,该线程将进入( )状态 A.就绪状态 B.运行状态 C.阻塞状态 D.终止状态 【正确答案】C 【答案解析】sleep方法调用后会阻塞线程指定时间毫秒数,当时间到了后会自动回到就绪状态,等待时间片分配 11、【单选题】用以下哪个子句来筛选分组统计后的结果( ) A.FROM B.WEHRE C.SELECT D.HAVING 【正确答案】D 【答案解析】对分完组的数据做筛选用having 条件 12、【单选题】以下哪个选项不是Java中正确的整数表示? A.22 B.0x22 C.022 D.22H 【正确答案】D 【答案解析】选项A是通过十进制表示的整数,选项B是通过十六进制表示的整数,十六进制以0x开头选项C是通过八进制表示的整数,八进制以0开头 13、【单选题】以下哪个选项不是servlet中的作用域对象? A.HttpServletRequest B.HttpServletResponse C.HttpSession D.ServletContext 【正确答案】B 【答案解析】Servlet中有4大作用域对象,分别是:HttpServletRequest,HttpSession,ServletContext,PageContext,所以本题选择B 14、【单选题】现有书目表book,包含字段:价格price(float),类别type(varchar);现在查询各个类别的平均价格,类别名称,以下语句正确的是? A.select avg(price),type from book group by type B.select count(price),type from book group by price C.select avg(price),type from book group by price D.select count(price),type from book group by type 【正确答案】A 【答案解析】求平均值的函数为avg(),求平均价格,那么函数为avg(price),分析题目,得知,需要根据类别分类,所以group by type 15、【单选题】分析下面的SQL语句,哪一部分引起错误? select empno,sum(sal) ‘salary’ from emp where sal>1500 group by empno order by 2; A.order by 2 B.from emp C.where sal>1500 D.group by empno 【正确答案】A 【答案解析】order by子句后面应该指定的是列的名字,按照指定的列排序 16、【单选题】下列关于多线程中锁机制正确的是: A.关键字synchronized只能用于方法声明上 B.成员方法使用synchronized,那么当前方法的锁对象为当前方法所属的对象 C.静态方法使用synchronized,那么当前方法的锁对象为当前方法所属对象 D.为了尽量避免多线程带来的安全问题,尽可能的扩大synchronized修饰的代码范围。 【正确答案】B 【答案解析】选项A错误,synchronized可以用在方法声明上,也可以用在代码块上选项B正确,实例方法使用synchronized,那么当前方法的锁对象为当前方法所属的对象选项C错误,静态方法使用synchronized,那么当前方法的锁对象为当前类的Class对象选项D错误,为了提高并发的执行效率,应当尽量在允许的情况下减少同步范围 17、【单选题】下列哪个语句能查询出MGR为NULL的员工: A.SELECT ENAME FROM EMP WHERE MGR=NULL; B.SELECT ENAME FROM EMP WHERE MGR IS NULL; C.SELECT ENAME FROM EMP WHERE MGR=0; D.SELECT ENAME FROM EMP WHERE MGR=’’; 【正确答案】B 【答案解析】判断是否为空用is null,不为空,用is not null 18、【单选题】下列不属于线程生命周期状态的是: A.新建状态 B.就绪状态 C.运行状态 D.解锁状态 【正确答案】D 【答案解析】线程的运行状态分为:新建,就绪,运行,阻塞,死亡 19、【单选题】下列代码用于获取c:/java这个目录中所有的.java文件,代码1处应该添加的代码是:( )
File file = new File("c:/java");
File[] files = file.listFiles(/*1*/);
A.不需要任何代码 B.".java" C.new FileFilter{ public boolean accept(File file) { return file.isFile()&&file.getName().endsWith(".java"); } } D.new FileFilter() { public boolean accept(File file) { return file.isFile()&&file.getName().endsWith(".java"); } } 【正确答案】D 【答案解析】此题目考查的是文件过滤器FileFilter的使用。listFiles()方法用于获取某抽象路径中所有的文件和目录。选项A错误。选项B错误,没有改方法本题要求获取.java文件,那么该方法需要传入一个实现了FileFilter接口的类的一个对象,FileFilter用于过滤路径中的文件,可以使用匿名内部类实现。选项C中缺失小括号 20、【单选题】以下程序的输出结果为:
public static void main(String[] args) {
int x=1,y=1,z=1;
if (x--==1&&y++==1||z++==1)
System.out.println("x="+x+",y="+y+",z="+z);
}
A.x=0,y=1,z=1 B.x=0,y=2,z=2 C.x=0,y=2,z=1 D.x=1,y=2,z=1 【正确答案】C 【答案解析】 对于A&&B,如果A为false,就不判断B 若A为为true,继续判断B x–==1 为true,执行之后x的值为0,由于后为&&,则继续 判断y++==1 ,为true,执行之后y的值为2,后是||,因为之前为true,所以后续不再判断,不再执行z++==1了 所以最终结果 x=0,y=2,z=1 21、【单选题】 在Java中,下面对于构造函数的描述正确的是: A.类必须显式定义构造函数 B.构造函数的返回类型是void C.构造函数和类有相同的名称,并且不能带任何参数 D.一个类可以定义多个构造函数 【正确答案】D 【答案解析】构造函数也叫构造方法,构造器,与类同名没有返回值类型,一个类中构造方法可以重载,不写默认会有一个无参构造方法 22、【单选题】HttpSession对象的默认有效时长为30min,指的是以下哪项() A.该session对象在浏览器默认的有效时长为30min B.该session对象在服务器端默认的有效时间为30min C.该session对象在浏览器端和服务器端的有效时长都为30min D.该session对象在浏览器的有效时长为30min,在服务器端永久存在 【正确答案】B 【答案解析】session对象是服务器端创建的对象,session对象的默认有效时长30min,指的是在服务器端的默认有效时长,浏览器中是否可以访问到session对象内的数据,取决于浏览器的cookie中是否存在对应的sessionId,即浏览器中是否可以访问session,取决于保存sessionId的cookie对象的有效时长 23、【单选题】 已知以下代码:
public class Test{
long a[] = new long[10];
public static void main(String[] args){
System.out.println(a[6]);
}
}
以下哪个选项是正确的() A.输出为null B.输出为0 C.编译时出错 D.运行时出错 【正确答案】C 【答案解析】main方法为static方法,而a数组为非static的,在main方法中不能直接访问非static资源,编译报错 24、【单选题】请看下列代码的输出结果是:
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
list.add(i);
}
List<Integer> subList = list.subList(4, 9);
for (int i = 0; i < subList.size(); i++) {
subList.set(i, subList.get(i) * 10);
}
System.out.println(list);
}
A.[0, 1, 2, 3, 40, 50, 60, 70, 80, 90] B.[0, 1, 2, 3, 4, 50, 60, 70, 80, 90] C.[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] D.[0, 1, 2, 3, 40, 50, 60, 70, 80, 9] 【正确答案】D 【答案解析】subList获取的子集与原List占有相同的存储空间,对子List中元素的操作就是对原List中元素的操作。 25、【单选题】以下哪一项不属于事务的ACID特性() A.原子性 B.一致性 C.持久性 D.阻塞性 【正确答案】D 【答案解析】本题考察事务的ACID特性,分别是原子性,一致性,持久性,隔离性 26、【单选题】Javascript代码中:
var arr=new Array()
arr[0]="abc"
arr[1]="123"
arr[8]="xyz"
arr.length的值是() A.3 B.9 C.0 D.以上都不正确 【正确答案】B 【答案解析】通过数组下标得知,数组已经使用到了第九个元素 |27、【单选题】数据库中,多个事务之间的操作应当是互不影响,互不相干的,这表明事务具有() A.原子性 B.一致性 C.隔离性 D.持久性 【正确答案】C 【答案解析】
28、【单选题】在Java中, 负责对字节码解释执行的是: A.应用服务器 B.垃圾回收器 C.虚拟机 D.编译器 【正确答案】C 【答案解析】JVM虚拟机负责对.class字节码文件进行解析执行. 29、【单选题】下面代码的输出结果是:
public class Test {
public static void main(String[] args) {
int n1 = 1;
int n2 = 2;
n1 = n1 + n2;
n2 = n1 - n2;
n1 = n1 - n2;
System.out.println(n1 + "," + n2);
}
}
A.1,2 B.2,1 C.1,3 D.3,2 【正确答案】B 【答案解析】
int n1 = 1;int n2 = 2;n1 = n1 + n2; //n1=3;
n2 = n1 - n2; //n2=1;
n1 = n1 - n2; //n1=2;
System.out.println(n1 + "," + n2);
30、【单选题】下列关于继承的描述正确的是() A.在Java中允许定义一个子类的引用,指向父类的对象。 B.在Java中一个子类可以继承多个抽象类,在extends关键字后依次列出,用逗号隔开。 C.在Java中继承是通过extends关键字来描述的,而且一个类只允许继承自一个直接父类。 D.在Java中抽象类之间不允许出现继承关系,所有的抽象类都相互独立。 【正确答案】C 【答案解析】选项A:Java中可以通过父类的引用指向子类对象,为向上造型,但不可以通过子类引用指向父类对象,选择A错误选项B:Java中类的继承是单继承的,所以选项B 错误选项D:Java中的抽象类是可以继承抽象类的,但是要遵循单继承的特点,选项D错误 31、【单选题】读下列程序,对类型转换操作正确的是: class A{} class B extends A{} class C extends A{} 现main方法中有以下代码: A o1 = new A(); A o2 = new B(); A o3 = new C(); A.A a = o1; B b = o2; C c = o3; B.A a = o1; B b = (B) o2; C c = © o3; C.A a = (A)o1; B b = (B)o3; C c = ©o2; D.A a = (A)o2; B b = (B)o1; C c = ©o3; 【正确答案】B 【答案解析】该题考核的是引用类型之间转换问题,通过父类类型引用指向子类对象,若想将该引用类型转换为子类类型,必须强转;且强转时需要注意,只有转换成的类型是引用指向对象的类型,才可转换成功。 32、【单选题】以下对TCP和UDP描述正确的是: A.TCP不能提供数据的可靠性 B.UDP能够保证数据库的可靠性 C.TCP数据传输效率高于UDP D.UDP数据传输效率高于TCP 【正确答案】D 【答案解析】TCP协议是基于连接的协议,客户端与服务端交互需要经过三次握手通话,保证数据正确性,顺序性,可靠性高,效率不及UDP,UDP是非连接型数据报文模式,不保证数据正确性,顺序性,可靠性低,只管发送数据不保证对方收到没收到,效率高. 33、【单选题】在java 中,下列哪个 类不能派生出子类. : A.public class MyClass{} B.class MyClass{} C.abstract class MyClass{} D.final class MyClass {} 【正确答案】D 【答案解析】final修饰的变量一旦初始化,值不可改变,final修饰的方法不可被重写,final修饰的类不能被继承. 34、【单选题】已知如下类定义:
class Base{
public Base(){//....}
public Base(int m){//...}
public void fun(int n){//...}
}
public class Child extends Base{
//member methods
}
如下哪个选项可以正确的加入子类中() A.private void fun(int n){//…} B.void fun(int n){//…} C.protected void fun(int n){//…} D.public void fun(int n){//…} 【正确答案】D 【答案解析】本题考察方法的重写:在子类中对父类中的某方法进行重写,子类重写方法的访问控制修饰符不能小于父类中方法的访问控制修饰符,所以选项A,B,C均错误。 35、【单选题】下面的代码用于统计字符数组ch中每个字符出现的次数,应该填入的代码是:
public static void main(String[] args) {
char[] ch = { 'a', 'c', 'a', 'b', 'c', 'b' };
Map<Character,Integer> map = new HashMap<Character,Integer>();
for (int i = 0; i < ch.length; i++) {
//应该填入
}
System.out.println(map);
}
A.if (map.contains(ch[i])) {
map.put(ch[i], map.get(ch[i]) + 1);
}else{
map.put(ch[i], 1);
}
B.if (map.contains(ch[i])) {
map.put(ch[i], (Integer) map.get(ch[i]) + 1);
} else {
map.put(ch[i], 1);
}
C.if (map.containsValue(ch[i])) {
map.put(ch[i], map.get(ch[i]) + 1);
} else {
map.put(ch[i], 1);
}
D.if (map.containsKey(ch[i])) {
map.put(ch[i], map.get(ch[i]) + 1);
} else {
map.put(ch[i], 1);
}
【正确答案】D
【答案解析】本题考查HashMap的方法和应用选项A,B都错误,HashMap中没有contains()方法。选项C, 要判断key是否已经存在,调用containsValue()方法错误
36、【单选题】查询出学生表中所有姓‘李’的学生信息,sql语句哪项是正确的()
A.select * from student where name='李';
B.select * from student where name like '_李';
C.select * from student where name like '李_';
D.select * from student where name like '李%';
【正确答案】D
【答案解析】本题考察数据库中的模型查询,like _匹配一位字符,%匹配多位字符
37、【单选题】下列数据类型转换,必须进行强制类型转换的是:
A.byte→int
B.short→long
C.float→double
D.int→char
【正确答案】D
【答案解析】解析: byte -> short -> int -> long -> float -> double,按此顺序的类型转换是自动转换,反向的类型转换是强制转换 int转换为char需要强转
38、【单选题】有以下两个表,问下列sql语句的结果是什么()
Emp表
| emp_id | name | gender | | 1 | 张丽 | 女 | | 2 | 王珂 | 男 | | 3 | 赵琦 | 女 |
emp_dept表
| emp_id | name | dept_name | | 1 | 张丽 | 财务部 | | 3 | 赵琦 | 技术部 |
select e.*,ed.dept_name from emp e left join emp_dept ed on e.emp_id=ed.emp_id and e.name=ed.name`; A.| emp_id | name | gender | dept_name | 1 | 张丽 | 女 | 财务部 | | 2 | 王珂 | 男 | null | | 3 | 赵琦 | 女 | 技术部 | B.| emp_id | name | gender | dept_name | | 1 | 张丽 | 女 | 财务部 | | 2 | 王珂 | 男 | 技术部 | C.| emp_id | name | gender | | 1 | 张丽 | 女 | | 2 | 王珂 | 男 | | 3 | 赵琦 | 女 | D.| emp_id | name | gender | dept_name | | 1 | 张丽 | 女 | 财务部 | | 3 | 赵琦 | 女 | 技术部 | 【正确答案】A 【答案解析】本题考察左连接查询,左表中的所有数据都显示,若右表没有匹配的数据,用null进行匹配 39、【单选题】现有如下效果,向Servlet中的对象HttpSession中存入用户的信息,在浏览器关闭之后,再次打开浏览器,为何无法获取到session中保存的用户信息? A.不可能出现以上现象 B.将session对象的有效期设置为了-1 C.将session对象的有效期设置为了30min D.session对象的sessionId保存在cookie中,而cookie的默认有效期值为-1 【正确答案】D 【答案解析】session对象的sessionId保存在cookie中,而cookie的默认有效期值为-1,即cookie的有效期为一次会话,浏览器关闭,会话结束,cookie中的值销毁,sessionId销毁,则再次打开浏览器,向服务器发起请求,无法根据sessionId找到原session对象 40、【单选题】分析下面SQL语句,在什么情况下引起这个语句失败?
SELECT * FROM student WHERE id=
(SELECT id FROM student WHERE first_name='kate' AND last_name='henry');
A.在数据表中没有学生的名字是kate henry B.数据表中学生的名字叫kate的多于一个 C.数据表中的学生的名字叫kate henry的多于一个 D.first_name和last_name的值在数据库中是小写的 【正确答案】C 【答案解析】外查询的条件where id=(子查询),子查询的查询结果id的值只能有一个,如果多于一个,此时不能用 = ,而应该用in 41、【单选题】以下程序将ArrayList中的数据取出,转换后存入整形数组,程序最有可能报告何种异常()
public class Test1{
public static void main(String[] args){
List list = new ArrayList();
list.add(3.14);
list.add(4.13);
list.add(1.43);
int[] arr = new int[4];
for(int i = 0;i<list.size();i++){
arr[i]=(Integer)list.get(i);
}
}
}
A.ArrayIndexOutOfBoundsException B.ArithmeticException C.NullPointerException D.ClassCastException 【正确答案】D 【答案解析】add(E e)方法要求传入的参数是引用类型,虽然集合并没有加泛型约束,但由于传入的是double类型,系统自动将其按照Double类型传入,Double类型不能直接使用强转的方式转换为Integer,会抛出类型转换异常. 42、【单选题】指出下列程序运行的结果()
public class Example{
public static void main(String[] args){
String str = new String("good");
char[] ch = {'a','b','c'};
Example ex = new Example();
ex.change(str,ch);
System.out.print(str+" and ");
System.out.print(ch);
}
public void change(String str,char[] ch){
str = "test ok";
ch[0] = 'g';
}
}
A.good and abc B.good and gbc C.test ok and abc D.test ok and gbc 【正确答案】B 【答案解析】因为String对象一旦创建之后,值不可以改变,所以在change方法内部对str赋值,是新创建的对象,并不是对原字符串内容进行修改,所以最后ex.str的值为good,而字符数组对象中的内容值是可以改变的,传参时,将该字符数组对象的地址作为参数传递,在change方法中的引用ch也指向该字符数组对象,所以,change方法内部将字符数组第一个元素的值改为‘g’,字符数组对象中的值就是改变了,在main方法中的ch由于也指向该对象,所以最终的结果是 g b c
43、【单选题】如下哪个选项在Java中可作为自定义标识符?
A.number B.super C.3number D.#number
【正确答案】A 【答案解析】选项A正确选项B:标识符不可以是Java关键字,而super为Java关键字,所以错误标识符由字母,数字,_,组成,数字不可以开头,所以选项C,D都错误
44、【单选题】阅读以下代码:
public class Cell implements Comparable<Cell>{
int row;
int col;
//getter()和setter()
//code here
}
//code here处,需要添加的代码段是() A.public void compareTo(Cell o){ this.row - o.row; } B.public boolean compareTo(Cell o){ return this.row > o.row; } C.public int compareTo(Cell o){ return this.row - o.row; } D.public int compareTo(Object o){ return this.row - o.row; } 【正确答案】C 【答案解析】本题考查compareTo()方法。compareTo()方法的定义格式为int compareTo(Object o);如果在实现接口时给定了泛型,compareTo方法中的参数类型即为传入泛型的参数类型选项A,B方法的返回值类型错误。选项D,方法中的参数类型应该是Cell,因为类实现接口的时候给出了Cell类型因此,选项C正确。 45、【单选题】现有学生成绩表,成绩表中保存的字段如下: student_id, 学生学号 student_name, 学生姓名 course_name, 课程名称 score 分数 表中,每个学生都会参加多门课程的考试,现要查询每个学生不及格(分数<60)科目的平均分,并升序排列,以下哪个sql语句是正确的() A.select student_id,student_name,sum(score) from student where score<60 order by score; B.select distinct student_id,avg(score) from student where score<60 order by avg(score); C.select student_id,student_name,avg(score) av from student where score<60 group by student_id order by av asc; D.select student_id,student_name,avg(score) av from student group by student_id where score<60 order by av asc; 【正确答案】C 【答案解析】本题考察数据库查询中的avg函数,同时考察分组以及排序,本题中,统计出每个学生的不及格科目的平均分,所以需要按照学生id分组,同时统计的平均分是不及格科目的,所以需要先筛选,即使用where ,若where,group by同时出现,where在group by之前 46、【多选题】在Java中,下列关于方法重载的说法中错误的是: A.方法重载要求方法名称必须相同 B.重载方法的参数列表必须不一致 C.重载方法的返回类型必须一致 D.一个方法在所属的类中只能被重载一次 【正确答案】C,D 【答案解析】方法的重载是方法名相同,参数列表不同(参数的个数和类型),与返回值和访问修饰符无关. 47、【多选题】关于转发和重定向的区别,以下哪些描述是正确的() A.客户端发起的请求数不同,若是转发,客户端只会发起一次请求;若是重定向,客户端会发起多次请求 B.转发不可共享数据,重定向可以共享数据 C.重定向可以跳转到任意URL,转发只能跳转本站点资源 D.转发是服务器端行为,重定向是客户端行为 【正确答案】A,C,D 【答案解析】本题主要考察转发和重定向的区别:1、请求次数:重定向是浏览器向服务器发送一个请求并收到响应后再次向一个新地址发出请求,转发是服务器收到请求后为了完成响应跳转到一个新的地址;重定向至少请求两次,转发请求一次;2、地址栏不同:重定向地址栏会发生变化,转发地址栏不会发生变化;3、是否共享数据:重定向两次请求不共享数据,转发一次请求共享数据(在request级别使用信息共享,使用重定向必然出错);4、跳转限制:重定向可以跳转到任意URL,转发只能跳转本站点资源;5、发生行为不同:重定向是客户端行为,转发是服务器端行为; 48、【多选题】关于java.io.Serializable接口说法正确的是: A.java.io.Serializable中有一个serialID属性,但是没有方法 B.类通过实现java.io.Serializable 接口以启用其对象的序列化功能 C.java.io.Serializable中有一个run方法,但是没属性 D.java.io.Serializable接口没有方法或属性,仅用于标识可序列化的语义。 【正确答案】B,D 【答案解析】序列化接口中是空的,没有属性和方法,实现该接口不需要重写任何方法,只是作为可序列化的标志。 49、【多选题】下列异常类中,属于RuntimeException的子类的是: A.FileNotFoundException B.IOException C.ClassCastException D.ArrayIndexOutOfBoundsException 【正确答案】C,D 【答案解析】Java中有两种异常,检查异常和运行时异常,检查异常在编译时必须处理,运行时异常可以不处理,选项AB为检查异常,CD为运行时异常,即为RuntimeException的子类,选项CD正确。 50、【多选题】servlet的生命周期中一定会调用以下哪些方法() A.构造方法 B.init() C.doGet() D.destroy() 【正确答案】A,B,D 【答案解析】servlet的生命周期为: 1.实例化servlet对象,调用构造方法 2. 初始化,调用init() 3. 每次请求都会调用service() 4. servlet销毁时调用destroy()