二次测试

一:选择题

1.以下关于静态方法和静态变量,说法正确的是()
A. 静态方法不能调用实例方法或引用一个实例变量
B. 实例方法不能调用静态方法或引用一个静态变量
C. 静态方法可以互相调用
D. 实例方法可以任意调用方法
答案:
成员变量(实例变量)只能被对象调用。
静态变量可以被对象调用,还可以被类调用

2.关于sleep()和wait(),以下描述错误的一项是( )
A. sleep是线程类(Thread)的方法,wait是Object类的方法;
B. sleep不释放对象锁,wait放弃对象锁;
C. sleep暂停线程、但监控状态仍然保持,结束后会自动恢复;
D. wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态;
答案:D
sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控
状态依然保持,到时后会自动恢复。调用 sleep 不会释放对象锁。
wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁
定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对
象锁进入运行状态。

3.关于以下程序代码的说明正确的是()

1.	class HasStatic{ 
2private static int x=1003public static void main(String args[ ]){ 
4. 		HasStatic hs1=new HasStatic( ); 
5. 		hs1.x++; 
6. 		HasStatic hs2=new HasStatic( ); 
7. 		hs2.x++; 
8. 		hs1=new HasStatic( ); 
9. 		hs1.x++; 
10. 		HasStatic.x--; 
11. 		System.out.println(“x=+x); 
12} 
13}

A、5 行不能通过编译,因为引用了私有静态变量
B、10 行不能通过编译,因为 x 是私有静态变量
C、程序通过编译,输出结果为:x=103
D、程序通过编译,输出结果为:x=102

答案:D
解析:静态变量只要1份,多个对象反复调用或者直接使用类名操作的都是同一份,3次+1次-,结果为102,静
态变量虽然可以使用对象引用调用,但也建议使用类名调用

4. 下列代码运行的结果是:

public class Boxer {
	 Integer i;
	 int x; 
	 public Boxer(int y) { 
	 	x = i + y; 
	 	System.out.println(x); 
	 }
	 public static void main(String[] args) { 
	 	new Boxer(new Integer(4)); 
	 } 
 }

A.输出:4
B.在运行时抛出NullPointerException异常
C.在运行时抛出NumberFormatException异常
D.在运行时抛出IllegalStateException异常

答案:B
解析:Integer包装类型属于引用类型,引用类型默认值为null,Integer i未进行整型数值初始化,所以在调用
时运行到x=i+y;时无法进行运算,会抛出空指针异常.

5.请看下列代码

public class Grade implements Comparable<Grade> { 
	private int wins; 
	private int losses; 
	public Grade(int w, int l) { 
		wins = w; 
		losses = 1; 
	}
	public int getWins() { 
		return wins; 
	}
	public int getLosses() {
		return losses; 
	} 
 }

完成这个类,需要添加的方法是:

A.public int compareTo(Object o) { return 0; }
B.public int compareTo(Grade o) { return 0; }
C.public int compare(Grade s1,Grade s2){ return 0; }
D.public int compare(Object o1,Object o2){ return 0; }

解析:实现Comparable接口,要重写int compareTo(Gradeo)抽象方法.
所有子类都需要重写该方法来定义对象间的比较规则。该方法要求返回一个整数,这个整数不关心具体
的值,而是关注取值范围。

当返回值>0时,表示当前对象比参数给定的对象大。
当返回值<0时,表示当前对象比参数给定的对象小。
当返回值=0时,表示当前对象和参数给定的对象相等。

public class Test01{ 
	public static void main(String[] args) { 
		try {
			test(); 
			System.out.println("1..."); 
		}catch (ArithmeticException e) { 
	 		System.out.println("2..."); 
		} catch (Exception e) { 
	 		System.out.println("3..."); 
	 	} finally {
	  		System.out.println("end..."); 
	  	} 
	}
	  public static void test() {
	  	 String str = "cc"; 
	   	 str.compareTo("abc"); 
	  } 
}

输出的结果是:
A.1… end…
B.2… end…
C.2… 3… end…
D.1… 2… 3… end…
正确答案:A
此题目考查的是try…catch…finally在处理异常中的执行流程
当程序没有异常执行try和finally语句块
当程序出现异常,结束try语句块,程序跳到对应的异常类型的catch语句块
中执行,再执行finally语句块。
本题目中,try语句块中没有异常出现,全部语句都执行,然后执行finally语句块

7…以下程序在控制台输出“Say Hello!”:

package com.tarena.pm_exam.javase.case01;

public class Test01{
	static public void main(String args[]){
		System.out.println("Say Hello!");
	}
}

在Eclipse中运行该程序产生如下的错误信息:

//在类com.tarena.pm_exam,javase.case01.Test01 中找不到主方法,
//请将主方法定义为:static void main(String[] args)

以下哪一项是正确的修改方法:(D)
A. 将main方法的修饰符声明为 public static
B. 将main方法的形参定义为: String[] args
C. (A),(B)两项都需要修改
D. 将main方法的形参定义为: java.lang.String[] args

8.对于每一个网站访问用户都要访问的变量,应该将它设为变量( D )。
A. Session
B. Request
C. Response
D. Application

9.关于实例方法和类方法,以下描述正确的是:( )
A. 实例方法只能访问实例变量
B. 类方法既可以访问类变量,也可以访问实例变量
C. 类方法只能通过类名来调用
D. 实例方法只能通过对象来调用
答案:D
A 实例方法可以访问类变量
B 类方法只能访问类变量
C 类方法可以通过对象调用

10 有关 Servlet 的生命周期说法正确的有( )
A.Servlet 的生命周期由 Servlet 实例控制
B.init()方法在创建完 Servlet 实例后对其进行初始化,传递的参数为实现ServletContext 接口的 对象
C.service()方法响应客户端发出的请求
D.destroy()方法释放 Servlet 实例

解答:C
Servlet 生命周期就是指创建 Servlet 实例后响应客户请求直至销毁的全过程.
Serlvet 生命周期的三个方法:init()–>service()–>destroy(),
Servlet 生命周期的各个阶段: 实例化:Servlet 容器
创建Servlet 类的实例对象初始化:Servlet 容器调用 Servlet 的 init()方法服务:如果请求 Servlet,则容器调用 service()方法销毁:销毁实例之前调用 destroy()方法

11 下述代码的执行结果是 ( E )

class Super { 
	public int getLength() {return 4;} 
}
public class Sub extends Super {
 	public long getLength() {return 5;} 
 	public static void main (String[]args) { 
 		Super sooper = new Super (); 
 		Super sub = new Sub(); 
 		System.out.println(sooper.getLength()+,+ sub.getLength() ); 
 	} 
 }

A. 4, 4
B. 4, 5
C. 5, 4
D. 5, 5
E. 代码不能被编译

二:简答题

1.Collection和Collections的区别?(2分)

解析:Collection是一种可以存数一组数据的数据结构,是集合的父接口,其子接口有List和Set.
而Collections是集合的工具类,它提供了很多便于我们操作集合的方法,比如sort排序方法

2.Servlet生命周期?(6分)

3.JVM将内存分为了几个区域,每个区域都存储的是什么?(4分)

JVM会将申请到的内存从逻辑上划分为三个区域:堆、栈、方法区。这三个区域分别用于存储不同的数据。
堆:用于存储使用new关键字所创建的对象以及对象的属性成员变量。
栈:用于存储程序运行时在方法中声明的所有的局部变量。
方法区:用于存放类的各种信息(包括方法)都在方法区存储。

4.jsp有哪些内置对象?作用分别是什么?(至少四个)(4分)

1)request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于
获取 cookie, header 和 session 数据的有用的方法。
2)response 表示 HttpServletResponse 对象,并提供了几个用于设置送回 浏览器的响应的方法(如
cookies,头信息等)。
3)out 对象是 javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结
果。
4)pageContext 表示一个 javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的 API,并且包装了通用的 servlet 相关功能的方法。
5)session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态
信息。
6)application 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和
servlet 环境的信息。
7)config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始化参
数。
8)page 表示从该页面产生的一个 servlet 实例。
9)exception 针对错误网页,未捕捉的例外

5.转发重定向区别?
重定向:浏览器发送请求到容器访问A,A可以发送一个状态码302和一个Location消息头到浏览器,于是浏
览器会立即向Location发新的请求。
转发:浏览器发送请求到容器访问A,A可以通知容器去调用B。转发所涉及的各个Web组件会共享同一个
request和response对象;而重定向不行。
说明:当请求到达容器,容器会创建request对象和response对象。当响应发送完毕,容器会立即删除
request对象和response对象。即,request对象和response对象的生存时间是一次请求与响应期间。
转发之后,浏览器地址栏的地址不变,重定向会变。转发的地址必须是同一个应用内部某个地址,而重定向没
有这个限制。转发是一件事情未做完,调用另外一个组件继续做;而重定向是一件事情已经做完,再做另外一
件事情。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值